Keyboard-Event

Fragen zu Tkinter.
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

TkSnack werde ich nehmen und ich glaube man soll pygame und Tk nicht mischen.

Gruß Frank
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Naja, prinzipiell hat Sound eigentlich nichts mit der Grafik zu tun, von daher imho egal.

Aber Paket/Modul Qualität und deren Abhängigkeiten wären Punkte für mich, an den ich mich orientieren würde. Und wenn man keine Abhängigkeiten an pygame haben will ist das tkSnack natürlich "besser".

Edit: Und für Space Inviders ist das natürlich mehr als ausreichend :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Also allein schon weil die Tatsturabfrage etwas mehr low-level ist würde ich für Spiele lieber Pygame nehmen. Habe gerade Pygame-Sound in mein Beispielprogramm eingebaut.
Scheint ohne Probleme zu laufen...

:wink:
yipyip
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Was verstehst du unter low-level ?
Der einzige Unterschied ist doch nur das die Tk-KeyEvents nicht als Enum existieren sondern halt als String.

Kannst dir ja ein kleines Modul wie Tkconstants schreiben und einfach die Strings Variablen zuordnen (wem es Spaß macht)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Mit 'low-level' meinte ich eigentlich nur solche Methoden wie in pygame.keys. Status aller Tasten auf einmal mit pygame.key.get_pressed(), pygame.key.set_repeat(), Scancode, etc. ...

:wink:
yipyip
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ok, Repeat geht nicht und du hast ja recht pygame ist schon ausgefeilter das Streite ich doch auch gar nicht ab, aber unter "low-level" bei KeyEvent verstehe ich was anderes :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Hallo !

http://www.python-forum.de/pastebin.php?mode=view&s=105

Habe mal weiter gebastelt.

Gruß Frank
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Würde eventuell noch 2 oder 3 alternativ hits einbauen, damit etwas abwechslung rein kommt, aber ansonst (wo ist hier der Daumen-hoch Smile)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Hallo !

http://www.python-forum.de/pastebin.php?mode=view&s=106

nächste Version

Gruß Frank
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Funktioniert einwandfrei, schon fast wie das orginale Space Invaders :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Arrgh... jetzt spiele ich doch die ganze Zeit Space Invaders...
;-)
Ein kleiner Bug:
Nachdem ich den letzten Gegner abgeschossen habe, friert das Spiel ein und nachdem ich das Fenster schliesse erscheint die Fehlermeldung
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 498, in callit
func(*args)
File "<stdin>", line 107, in run
File "<stdin>", line 218, in set_new_positions
IndexError: list index out of range
Da fehlt wohl der Fall, das die Liste der Gegner auch leer sein kann. (nehme ich mal prinzipiell so an, habe mir den Code jetzt nicht so detalliert angeschaut)

:wink:
yipyip
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Naja, ist logisch, da er immer noch die Invaders bewegt, obwohl es keine in der Liste mehr gibt.
Sollte man am besten immer wenn ein Invader stirbt, abfragen ob noch welche da sind - aber es gibt ja noch kein GAME OVER in dem Spiel, von daher wird er das sicher noch einbauen.

@kaytec
Wenn ich mir einige Stellen ansehe im Quellcode, solltest du mittlerweil mitbekommen, das es langsam kompliziert wird dort etwas zu editieren.
Du solltest wirklich dringend nochmal genau überlegen was du dort an Quellcode gezielt trennen kannst.

Edit: Achja, das orginal Invaders hatte 224×240 Auflösung, die ist zwar für heutige verhältnisse zu klein, aber es wäre schön das der Maßstab gleich bleibt, also zB. 672x720, weil das ja das Raster, wie die Aliens sich bewegen definiert.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Hallo yipyip !
Der Fehler ist mir bekannt - ist ja noch nicht fertig !

Hallo Xyon1!
Na ja, es wird schon komplizierter, doch glaubst du wirklich, dass ich noch irgendwas von dem "Spaghetticode" verstehe ? :shock:

Eine gute Doku würde da helfen.

EIne Auflösung von 600 auf 480 ist für Leute mit kleinem Monitor immer noch wichtig - sagt unser Guru BJ.

Gruß Frank
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Es geht mir ja nicht direkt um die Auflösung, da hat BlackJack schon recht, sondern es geht mir um das Verhältnis deiner InvaderGUI, denn das ist dann eine andere Fläche in dem sich die Invaders bewegen können.
Du kannst ja die Application auf 600x480 lassen, aber der Raum in dem sich die Aliens bewegen sollte dem orginal entsprechen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Du musst nicht jede Version uploaden, es reicht wenn du nur, die wo du Probleme hast, hochzuladen und dann die fertige Version.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Antworten