Guten Tag, ich habe dieses kleine Programm zum Test geschrieben. Das Ziel ist erst das der eine Punkt und dann erst der andere angezeigt wird, das Problem ist aber dass sie immer gleichzeitig auftauchen.
Meine Code:
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 600))
center = screen.get_rect().center
SG = 300
clock = pygame.time.Clock()
APKM = [[300, 300],[400,400]]
x = 0
y = 0
Pfl = [255, 000, 0]
Bar = [000, 000, 255]
Fut = [000, 255, 000]
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
while True:
clock.tick(1)
for element in APKM:
if y == 0:
print(1)
pygame.draw.circle(screen, Pfl, (APKM[x]), 25)
pygame.display.update()
x = x +1
y = y +1
elif y == 1:
print(1)
pygame.draw.circle(screen, Fut, (APKM[x]), 25)
pygame.display.update()
x = x + 1
y = 0
y = 2
pygame.quit()
Pygame einzeln Anzeigen
- __blackjack__
- User
- Beiträge: 14045
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@JonathanDr8: So ganz ist mir nicht klar was Du erreichen willst, aber das Programm hat offensichtliche Probleme. Die innerste ``while True``-Schleife verhindert das GUI-Ereignisse verarbeitet werden können. Damit lässt sich das Fenster nicht normal schliessen.
Dann hasst Du da eine Schleife über `APKM` die zweimal durchlaufen wird. Beim ersten Durchlauf wird der `Pfl`-Kreis gezeichnet, und beim zweiten Durchlauf wird der `Fut`-Kreis gezeichnet. Danach wird `y` in der falsch platzierten ``while``-Schleife auf 2 gesetzt und die Schleife über `APKM` ist damit sinnfrei, weil die nichts mehr bewirken kann.
Sonstige Anmerkungen: APKM, `Pfl`, `Fut`, und `Bar`, sind extrem schlechte Namen. Namen sollen dem Leser vermitteln was die Werte dahinter bedeuten, nicht zum rätselraten zwingen. Also bitte verständliche Namen verwenden und keine kryptischen Abkürzungen.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen: Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Edit: `x` ist auch ein schlechter Name. Nicht für eine X-Koordinate, dafür wäre er prima, aber als Index in eine Liste mit X/Y-Koordinaten – das erwartet niemand und das ist deshalb sehr verwirrend.
Edit2: Dabei sehe ich gerade das `element` gar nicht verwendet wird, was auch sehr verwirrend und falsch aussieht.
Edit3: Das im ersten Edit gesagte trifft auch auf `y` zu – alles andere als eine Koordinate ist ein sehr verwirrender Wert für diesen Namen – WTF‽
Dann hasst Du da eine Schleife über `APKM` die zweimal durchlaufen wird. Beim ersten Durchlauf wird der `Pfl`-Kreis gezeichnet, und beim zweiten Durchlauf wird der `Fut`-Kreis gezeichnet. Danach wird `y` in der falsch platzierten ``while``-Schleife auf 2 gesetzt und die Schleife über `APKM` ist damit sinnfrei, weil die nichts mehr bewirken kann.
Sonstige Anmerkungen: APKM, `Pfl`, `Fut`, und `Bar`, sind extrem schlechte Namen. Namen sollen dem Leser vermitteln was die Werte dahinter bedeuten, nicht zum rätselraten zwingen. Also bitte verständliche Namen verwenden und keine kryptischen Abkürzungen.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen: Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Edit: `x` ist auch ein schlechter Name. Nicht für eine X-Koordinate, dafür wäre er prima, aber als Index in eine Liste mit X/Y-Koordinaten – das erwartet niemand und das ist deshalb sehr verwirrend.
Edit2: Dabei sehe ich gerade das `element` gar nicht verwendet wird, was auch sehr verwirrend und falsch aussieht.
Edit3: Das im ersten Edit gesagte trifft auch auf `y` zu – alles andere als eine Koordinate ist ein sehr verwirrender Wert für diesen Namen – WTF‽
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
- __blackjack__
- User
- Beiträge: 14045
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Willst Du eventuell so etwas?
Code: Alles auswählen
#!/usr/bin/env python3
from itertools import islice
import pygame
def main():
pygame.init()
try:
screen = pygame.display.set_mode((600, 600))
clock = pygame.time.Clock()
some_better_name_than_apkm = [(300, 300), (400, 400)]
some_better_name_than_pfl = pygame.Color('red')
some_better_name_than_fut = pygame.Color('green')
circles_data = list(
zip(
some_better_name_than_apkm,
[some_better_name_than_pfl, some_better_name_than_fut]
)
)
circles_count = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
if circles_count < len(circles_data):
circles_count += 1
for coordinate, color in islice(circles_data, circles_count):
pygame.draw.circle(screen, color, coordinate, 25)
pygame.display.update()
clock.tick(1)
finally:
pygame.quit()
if __name__ == '__main__':
main()
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.