Vier gewinnt

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Hallo,

ich habe soeben meine Umsetzung von Vier gewinnt fertiggestellt.
Vier gewinnt

In der Methode check_diagonal überprüfe ich, ob ein Spieler 4 Steine diagonal hat. Dazu bestimme ich die Startposition der Diagonale und nehme diese als Startpunkt für das Iterieren über die Liste.
Dies wird genauso für die zweite Diagonale gemacht, da aber die Schritte für beide Diagonalen ziemlich gleich sind wollte ich eure Meinung hören, ob man diese Methode verbessern bzw. vereinfachen kann.

Sonstige Anmerkungen und Verbesserungsvorschläge nehme ich gerne an.

Grüße
Martin

PS: Aktuell ist die String Formatierung noch vermischt, werde aber alles auf die format Methode umstellen.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Den Quelltext habe ich noch nicht genauer angesehen, sondern erstmal "gespielt". Aufgefallen ist mir:

+ endlich mal wieder ein Spiel ohne GUI
- ist so nur mit Python 2.6 (und 2.7?) lauffähig. Python 2.5 kommt mit den Parametern der print-Funktion nicht zurecht, Python 3.x nicht mit der Syntax für die Exceptions.
- die Spiellogik ist noch fehlerhaft. Ich habe 2x gespielt: Beim 1. Spiel hängte sich das Programm nach ca. 15 Spielzügen auf, beim 2. Spiel hatte Spieler 1 bereits 5 Steine in einer Reihe, aber es ging immer noch weiter ...
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

numerix hat geschrieben:...
- ist so nur mit Python 2.6 (und 2.7?) lauffähig. Python 2.5 kommt mit den Parametern der print-Funktion nicht zurecht, Python 3.x nicht mit der Syntax für die Exceptions.
...
Bild *hihihi* stop kidding us, am besten es ist auch noch Koffeinfrei und DIE Lösung für den Weltfrieden
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Wo ist da der Witz?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Masaru hat geschrieben:am besten es ist auch noch Koffeinfrei und DIE Lösung für den Weltfrieden
Das passt nicht zusammen!
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

cofi hat geschrieben:
Masaru hat geschrieben:am besten es ist auch noch Koffeinfrei und DIE Lösung für den Weltfrieden
Das passt nicht zusammen!
Meinst Du? Mhmm, warum?
numerix hat geschrieben:Wo ist da der Witz?
*schenkelklopf* kracher Bild
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Du hast eine eigenwillige Form der Kommunikation.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

... jepp, sagt mein Psychater auch immer wieder.

Aber bevor Du noch ganz pöse wirst - will Dich ja auch nicht länger auf die Folter spannen.

Du kritisierst an dem Code die Lauffähigkeitseinschränkung bezüglich des Python-Interpreters. Dabei zählst Du auf, dass es (nebst 2.6/7) nicht unter 2.5 und 3x lauffähig ist ... was letzendlich die Poente des Witzes ist.
Zuletzt geändert von Masaru am Freitag 12. Februar 2010, 17:22, insgesamt 1-mal geändert.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Wenn der TE den Code so geschrieben hätte, dass er für 2.6, 2.7 und 3.x lauffähig ist, hättest du dich wahrscheinlich schon totgelacht.

edit: mit "du" ist Massaru gemeint
Zuletzt geändert von derdon am Freitag 12. Februar 2010, 17:56, insgesamt 1-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Natürlich muss ein Code nicht mit mehr als einer Python-Version ausführbar sein. Aber: Habt ihr euch den Code angesehen?

Ich hatte den Eindruck, dass er so angelegt ist, dass er ein möglichst breites Spektrum an mehr oder weniger aktuellen Versionen abdecken soll und fand gerade darum den Hinweis wichtig, dass das nicht geglückt ist. Dass ein für 2.x geschriebener Code unter 3.x läuft, erwartet in der Regel keiner, aber wenn man einen 2.x-er Code durch entsprechende future-imports "vorwärtskompatibel" anlegen will, dann könnte man zumindest auf die Idee kommen, dass hier jemand einen Code so geschrieben hat, dass er auf mehreren Versionen laufen soll. Bei so geringem Umfang sehe ich da auch kein Problem.

Eine allgemeine Aussage der Art "ist schlecht, weil läuft nur mit 2.6 und nicht hiermit und damit usw. usw." ist natürlich zum Schenkelklopfen. So war das auch nicht gemeint. Naja, hat auf jeden Fall ein paar nette Emoticons beschert.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

...... numerix hat völlig recht. Das Skript läuft nicht unter Python2.5, 3.0, 3.1

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Hallo,

zur Unterstützung der verschiedenen Python Versionen wollte ich noch sagen, dass ich schon etwas darauf geschaut habe. dass er vorwärtskompatibel ist. Da ich eigentlich nur mehr Python 2.6 verwende. habe ich nicht darauf geachtet, dass der Code auch noch mit Python 2.5 läuft.

Das Exception Handling werde ich auf auf die neue Variante umstellen.

@Numerix: Danke für dein Feedback. Einen Fehler habe ich schon gefunden, bei dem das Spiel nicht beendet wurde obwohl schon mehr als 4 Steine in einer Reihe waren. Diesen habe ich schon behoben.

Also bei mir hatt sich das Spiel noch nie aufgehängt aber vielleicht tritt das bei mir auch noch einmal auf.

Grüße Martin
Antworten