Hallo !
Ein Pacman Clone - noch nicht fertig, doch wollte ich erst Prügel bekommen, bevor ich ihn fertig mache.
http://paste.pocoo.org/show/213495/
Gruß Frank
Pacman mit Tkinter
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Sieht doch gar nicht so schlecht aus 
Was mich stört:


Was mich stört:
- Die Bewegungen der Bots sind wohl rein zufällig. Beim klassischen Pacman gehen die iirc immer weiter geradeaus, bis sie auf ein Hindernis stoßen. Dann biegen sie entsprechend des Winkels ab. http://paste.pocoo.org/show/213555/
- Ich würde ggf. verschiedene Bots einbauen, also mit unterschiedlichen Bewegungs-Engines. Sollte über Vererbung gut gehen oder man schreibt eine allgemeine Bot-Klasse, der man eine Bewegungsfunktion übergibt.
- Keine Kommentare - unschön für Außenstehende
- Level Daten gehören imho raus aus der Pac_Man-Klasse (Der Name Pac_Man wäre laut PEP8 auch eher PacMan). Ich würde auch die Magic-Numbers ggf. ins Level reinbauen. Also Foot-Points usw. Damit wären Levels variabler. Mauern usw. sind ja idR statisch, das kann da drin bleiben
- Super wäre es, Levels aus Textdateien zu laden. Ich würde mal gucken, ob man dazu nicht JSON nehmen könnte

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Dank Hyperion !
Der Bot läuft nach dem Zufallsprinzip. Würde ich ihn am Ende einer Laufrichtung entscheiden lassen, dann läuft er nur im äußeren Bereich des Feldes. Werde bei jeder möglichen Kreuzung den Bot entscheiden lassen.
Kommentare --> ???
Für die Levels eine eigene Klasse ?
Gruß Frank
Der Bot läuft nach dem Zufallsprinzip. Würde ich ihn am Ende einer Laufrichtung entscheiden lassen, dann läuft er nur im äußeren Bereich des Feldes. Werde bei jeder möglichen Kreuzung den Bot entscheiden lassen.
Kommentare --> ???

Für die Levels eine eigene Klasse ?
Gruß Frank
-
- User
- Beiträge: 30
- Registriert: Freitag 1. Januar 2010, 11:38
Das Spiel erkennt auch nicht, wenn man gegen nen Feind rennt. Ich kann zumindest durch die durchrennen wie ich grade will...
Ansonsten ist's echt lustig.
Ansonsten ist's echt lustig.
Hallo !
Habe noch weiter gebastelt --> http://paste.pocoo.org/show/214789/
Ja, es gibt noch einiges zu bemängeln !
Gruß Frank
Habe noch weiter gebastelt --> http://paste.pocoo.org/show/214789/
Ja, es gibt noch einiges zu bemängeln !
Gruß Frank
Cool.
Aber irgendwie hängt die Steuerung in dieser Version. Bei Tastendruck bewegt Pacman sich manchmal nicht, manchmal auch 2mal.
Warum schreibst du eigentlich immer dict() oder list(). {} oder [] find ich irgendwie übersichtlicher...
Stattkannst du auch
oder besser noch
schreiben.
Aber irgendwie hängt die Steuerung in dieser Version. Bei Tastendruck bewegt Pacman sich manchmal nicht, manchmal auch 2mal.
Warum schreibst du eigentlich immer dict() oder list(). {} oder [] find ich irgendwie übersichtlicher...
Statt
Code: Alles auswählen
if type(bg) == type(())
Code: Alles auswählen
if type(bg) == tuple
Code: Alles auswählen
if isinstance(bg, tuple)
Mach ich auch so, kann man besser auseinander haltenHerrHagen hat geschrieben:Warum schreibst du eigentlich immer dict() oder list(). {} oder [] find ich irgendwie übersichtlicher...

„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
Hallo !
Danke für das Feedback und es gibt noch einiges zu tun.
--> http://paste.pocoo.org/show/216178/
Gruß Frank
Danke für das Feedback und es gibt noch einiges zu tun.
--> http://paste.pocoo.org/show/216178/
Gruß Frank
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wirklich? Ich finde das ist noch jede Menge Potenzial zur Verbesserung drinkaytec hat geschrieben: So, eigentlich fertig --> http://paste.pocoo.org/show/217487/

- Wieso werden die Levels vor den imports definiert?
- Wieso sind zwischen den imports Leerzeilen?
- Sicher, dass die Einrückungen überall stimmen? (Zeile 159ff.)
- Wieso wird da ein Attribut "event" bei set_player_position definiert - wo es dann ja nicht verwendet wird!
- Wieso kann man die Levels noch nicht aus einer Datei laden?
- Wieso werden so viele Magic Numbers in der PacMan Klasse definiert; anstatt sie im jeweiligen Level zu definieren?
- Und fast am wichtigsten: Wieso gibt es keine Doku? So steigst Du da doch auch kaum mehr durch... Python hat ja ein Glück mit den Docstrings sogar Syntax und Semantik für Dokumentation direkt im Code.

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Danke Hyperion !
1. Wusste nicht wo definieren.
2. Wusste nicht, dass da keine hingehören.
3. Manche waren auf 80 - ist geändert.
4. Meinst Du den event bei start_game ? Den event brauche ich nicht, doch übergebe ich ihn
nicht, dann meckert Python.
5. Ist das aus der Datei laden so wichtig ?
6. Ja - Magic Numbers kommen noch in die Levels.
7. Für mich ist die Dokumentation nicht so wichtig - für andere Leser schon. Ich mache die
ganze Sache nur so zum Spass und dokumentieren ist nicht so spaßig
.
Gruß Frank
1. Wusste nicht wo definieren.
2. Wusste nicht, dass da keine hingehören.
3. Manche waren auf 80 - ist geändert.
4. Meinst Du den event bei start_game ? Den event brauche ich nicht, doch übergebe ich ihn
nicht, dann meckert Python.
5. Ist das aus der Datei laden so wichtig ?
6. Ja - Magic Numbers kommen noch in die Levels.
7. Für mich ist die Dokumentation nicht so wichtig - für andere Leser schon. Ich mache die
ganze Sache nur so zum Spass und dokumentieren ist nicht so spaßig

Gruß Frank
@kaytec: Dokumentation ist für andere Leser? Dann schau Dir das Programm nach 'nem halben Jahr noch einmal an, und Du wirst feststellen, dass *Du* ein anderer Leser bist. Also ist die Dokumentation auch für Dich. Nach einer gewissen Zeit ist man nämlich selbst ein Fremder bei Quelltext den man selber verfasst hat.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hm.... klingt für mich komisch! Was heißt denn "meckern"?kaytec hat geschrieben: 4. Meinst Du den event bei start_game ? Den event brauche ich nicht, doch übergebe ich ihn nicht, dann meckert Python.
Gegenfrage: Ist es denn so schwierig?kaytec hat geschrieben: 5. Ist das aus der Datei laden so wichtig ?

Zur DOku hatte BlackJack ja schon geantwortet

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Hallo Hyperion !
Das ist die Fehlermeldung:
Der event entsteht durch die Bindung der Tasten an Tk, um die Steuerung zu übergeben.
Spielfelder laden:
Ist natürlich für den Nutzer dieses Spieles eine schöne Sache, doch wer außer mir wird es nutzen ? Da ich jetzt aber Lust habe dies auch zu ermöglichen, werde ich es mal versuchen.
Doku:
Das mit der Dokumentation ist so eine Sache. Die Doku sollte auf Englisch sein ....
Ich würde mehr für die schlechte Dokumentation kritisiert werden, als für meine "Amateurprogrammierkenntnisse". Habe auch nicht den Anspruch ein Profi zu werden, sondern sehe es als anspruchsvolleres "Rätselraten", um den Kopf von meiner eigentlichen Tätigkeit frei zu bekommen. Für euch würde es die Arbeit natürlich sehr erleichtern,denn ihr gebt euch mit mir auch immer viel Mühe - Danke. Nein, ich will keine Diskussion über Englisch losbrechen. Werde ich auch mal angehen. Mir ist es ziemlich egal, ob ich nach einem Monat noch den Verlauf verstehe - verblüfft mich immer wieder was ich mal so zusammengebastelt habe.
Gruß Frank
Das ist die Fehlermeldung:
Code: Alles auswählen
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)
TypeError: set_player_position() takes exactly 3 arguments (4 given)
Spielfelder laden:
Ist natürlich für den Nutzer dieses Spieles eine schöne Sache, doch wer außer mir wird es nutzen ? Da ich jetzt aber Lust habe dies auch zu ermöglichen, werde ich es mal versuchen.
Doku:
Das mit der Dokumentation ist so eine Sache. Die Doku sollte auf Englisch sein ....

Gruß Frank