Seite 1 von 1
Pfeiltasten pygame
Verfasst: Sonntag 16. November 2014, 22:04
von hannah2001
Hallo,
im Programmieren bin ich noch ganz neu, denn ich hab mir erst vor kurzem ein Buch besorgt, mit dem ich jetzt lerne, mit Python Spiele zu programmieren. In dem Buch gibt es ein Spiel mit pygame vorgegeben, dass ich abgetippt habe, um es auszuprobieren. In dem Spiel geht es um eine Skifahrer, der einen Berg herrunterfährt. Dabei benutzt man für die Lenkung die Pfeiltasten. Doch bei mir klappt es irgendwie nicht und ich weiß echt nicht, woran das liegt. Hier sind die Zeilen aus dem Spiel, in denen die Tastendrücke vorkommen:
Code: Alles auswählen
if event.key == pygame.K_LEFT:
geschwindigkeit = skier.wende(-1)
elif event.key == pygame.K_RIGHT:
geschwindigkeit = skier.wende(1)
Ich hoffe, jemand kann mir helfen, da ich wirklich noch nicht allzuviel davon verstehe.
Vielen Dank schonmal im Voraus

Re: Pfeiltasten pygame
Verfasst: Sonntag 16. November 2014, 22:38
von BlackJack
@hannah2001: Die Zeilen helfen nicht wirklich weiter. Werden die denn überhaupt ausgeführt? In welchem Kontext? Was ist `skier`? Versuchst Du tatsächlich Python zu lernen in dem Du mit einem kompletten Spiel inklusive objektorientierter Programmierung anfängst, beziehungsweise das abtippst ohne überhaupt die Grundlagen zu verstehen?
Re: Pfeiltasten pygame
Verfasst: Sonntag 16. November 2014, 22:39
von darktrym
Es wäre sinnvoller den kompletten Code zu zeigen oder wenigstens zu sagen, was nicht funktioniert bzw. wie sich das äußert. Ich hab das Buch nicht und vermutlich auch die Mehrheit der hier anwesenden nicht.
Re: Pfeiltasten pygame
Verfasst: Sonntag 16. November 2014, 23:13
von hannah2001
Naja,
Also in dem Spiel fährt man, wie schon gesagt, einen Berg mit einem Skifahrer herunter und diesen sollte man mit den Pfeiltasten steuern können. Doch obwohl in dem Programm vorkommt, dass der Skifahrer nach links fährt, wenn man auf die linke Pfeiltaste drückt und auch das gleiche mit rechts, klappt das irgendwie nicht. Wenn ich das Spiel starte, grht alles perfekt, ich kann den Skifahrer nur nicht steuern.
@BlackJack: Die Grundlagen von Python kann ich natürlich und ich verstehe auch dieses Programm für das Spiel (ich bin ja nicht so blöd und tippe irgendetwas ab, was ich nicht verstehe). Mein Problem ist lediglich, dass ich diesen Skifahrer einfach nicht steuern kann, obwohl das eigentlich gehen sollte. Und da ich auch noch nicht ganz so alt bin und bevor ich das Buch bekommen habe, noch keine Kenntnisse in dem Bereich hatte, wäre es nett, wenn ihr mir trotzdem bitte helfen könntet.
Re: Pfeiltasten pygame
Verfasst: Sonntag 16. November 2014, 23:25
von Sirius3
@hannah2001: mit dem Abschnitt den Du da zeigst, kann leider niemand, der das Buch nicht hat, etwas anfangen. Es sieht zwar komisch aus, aber ob da wirklich was falsch dran ist, kann man so nicht sagen. Du kannst aber selbst herausfinden, was falsch ist, indem Du das Programm testest, das heißt, schaust, ob jede Funktion auch das tut, was Du erwartest. Dazu sind debug-Ausgaben nützlich, ob bestimmte Punkte im Code auch erreicht werden und welche Werte die Variablen an diesen Punkten haben.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 07:11
von hannah2001
@Sirius3: gut, danke, das werde ich heute nachmittag mal ausprobieren.

Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 16:57
von hannah2001
@Sirius3: Ich habs mal mit einem debugger probiert (weiß allerdings nicht so genau, ob ich das richtig gemcht habe, wie gesgat, ich habe im Programmieren noch keine Vorkenntnisse). Auf jeden Fall war in meinem Programm kein Fehler, doch trotzdem klappt das nicht mit den Pfeiltasten. Am besten beschreibe ich noch einmal ganz genau mein Problem:
Also, ich habe ein Programm, in dem ein Skifahrer einen Berg herunterfahren soll und dabei halt Fahnen einsammeln kann. In diesem Programm kommen folgende Zeilen vor, in denen es um die Tastendrücke geht:
Code: Alles auswählen
#startet Hauptschleife
aktiv = True
while aktiv:
clock.tick(30) #aktualisiert die Grafik 30 Mal pro Sekunde
for event in pygame.event.get():
if event.type == pygame.QUIT:
aktiv = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT: #mit linker Pfeiltaste nach links wenden
geschwindigkeit = skier.wende(-1)
elif event.key == pygame.K_RIGHT: #mit rechter Pfeiltaste nach rechts wenden
geschwindigkeit = skier.wende(1)
skier.bewege(self, geschwindigkeit)
Wenn ich das Programm starte, wird es perfekt ausgeführt, mir wird keine Fehlermeldung oder sonstiges ausgegeben, das einzige Problem ist nur, dass nichts passiert, wenn ich auf die Pfeiltasten drücke. Und das kann eigentlich nicht sein. Und jetzt frage ich mich, warum das mit den Pfeiltasten nicht funktioniert.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 17:06
von hannah2001
Könnte das auch einfach an meinem PC oder so liegen?
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 17:21
von BlackJack
@hannah2001: Das ist ganz offensichtlich falsch eingerückt. Damit das ``if`` in Zeile 8 wahr ist müsste ``event.type`` gleichtzeitig gleich `pygame.QUIT` *und* `pygame.KEYDOWN` sein.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 17:38
von hannah2001
@BlackJack: Sorry, aber wie genau meinst du das jetzt? Ich kann dir leider schlecht zeigen, wie ich denk, wie du es meinst, weil ich nicht genau weiß, wie das hier mit diesen Code funktioniert, also mit den Farben und Zeilen. Ich bin ja auch erst seit gestern hier.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 17:45
von BlackJack
@hannah2001: In Zeile 6 wird geprüft ob der `event.type` den Wert `pygame.QUIT` hat, und der tiefer eingerückte Quelltext danach wird nur dann ausgeführt wenn das wahr ist. In Zeile 8 wird dann geprüft ob der `event.type` den Wert `pygame.KEYDOWN` hat. Was er nicht hat, denn das wird ja nur ausgeführt wenn er den Wert `pygame.QUIT` hat. Damit wird der nach Zeile 8 tiefer eingerückte Code niemals ausgeführt. Was ja auch genau Deiner Beobachtung entspricht.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 17:56
von hannah2001
@BlackJack: Aber wenn ich das so mache, ist das ein Fehler im Programm.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 18:00
von BlackJack
@hannah2001: So wie es da steht ist das ein Fehler, ja. Das macht so keinen Sinn. Du musst halt überlegen wie es sinnvoller wäre.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 18:02
von /me
Für mich sieht das ziemlich eindeutig so aus, als gehöre der Block mit "if event.type == pygame.KEYDOWN:" auf die gleiche Ebene wie das "if event.type == pygame.QUIT:". Die Bedeutung der Einrückung ist dir schon klar, oder?
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 18:08
von hannah2001
@/me: Aber wenn ich das so mache, ist das ein Fehler im Programm.
Re: Pfeiltasten pygame
Verfasst: Montag 17. November 2014, 18:09
von hannah2001
@BlackJack: Ok, ich schaue mir die Stelle noch einmal genauer an.