Seite 1 von 1

TicTacToe

Verfasst: Montag 19. Januar 2009, 20:30
von Birne94
http://paste.pocoo.org/show/100399/
Ich bitte um verbesserungen des codes^^

gruß...

Verfasst: Montag 19. Januar 2009, 20:54
von Hyperion
Du meinst wohl, Du möchtest Kritik? Verbessern musst Du das dann schon selber ;-)

- Getter und Setter ohne Property macht man in Python eigentlich nicht
- PEP8 beachten bei Methodennamen
- man braucht viele Deiner () nicht! (z.B. bei if oder auch bei div. return-Kosntrukten!)
- anyonewon (besser wohl anyone_won()) suggeriert einem, dass ein Boolean zurückgegeben wird und kein None, "X" oder "o"!
- wozu die ganzen "_methoden"?
- Trennung GUI / Logik kann noch strikter eingebaut werden.
- quasi KEINE Kommentare!
- Man könnte einige verschachtelte fors durch List Comprehensions ersetzen
- in _update() kann man sich die if-elifs sparen, indem man dort ein Dictionary mit Assoziation zwischen den Farbstrings und den TicTacToe-Zellen herstellt.
- ein wenig arg Klassen-lastig! Da kann man sicherlich vieles auch mit Funktionen machen.

Ansonsten:
- KI "fehlt" noch
- Namen für Spieler
- Highscore o.ä.

Das so auf die Schnelle :-)

Verfasst: Montag 19. Januar 2009, 20:57
von Birne94
jop das meinte ich...
nja. an einem Computerspieler werde ich dann morgen arbeiten...

Bei mir läuft es nicht rund.

Verfasst: Freitag 10. April 2009, 21:36
von Michael R.
Eine Eingabe etwa wie folgt:

XXX
OO
XO

Ist möglich, ohne dass das Programm erkennt, dass Spieler "X" gewonnen hat. Ich habe den Code nicht durchgesehen, weiß nicht, wo der Fehler steckt.

Verfasst: Samstag 11. April 2009, 06:13
von hendrikS
Ich würde vielleicht noch die Fenstergröße unveränderbar machen.

Jetzt noch was, was eigentlich keine Verbesserung ist, aber vielleicht trotzdem interessant. Ich hab neulich mal gesehen, wie man pfiffig ein mehrdimensionales Feld anlegen kann. Auf Deinen Code gemünzt:

Code: Alles auswählen

eval("[None]*3,"*3)

Verfasst: Samstag 11. April 2009, 06:56
von BlackJack
@hendrikS: Das ist IMHO gar nicht "pfiffig" sondern böse. Mit so etwas sollte man gar nicht erst anfangen. Das ist in zweifacher Weise unschön -- zum einen benutzt es `eval()` nur um ein paar Zeichen im Quelltext zu sparen und undurchsichtigeren Quelltext zu erzeugen, zum anderen erhält man ein Tupel als äussersten Container und das trifft nicht so ganz die Semantik wofür Tupel gedacht sind.

Verfasst: Samstag 11. April 2009, 09:45
von audax
für solche Felder nehme ich auch immer numpy-Arrays :o