TicTacToe

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

http://paste.pocoo.org/show/100399/
Ich bitte um verbesserungen des codes^^

gruß...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-)
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

jop das meinte ich...
nja. an einem Computerspieler werde ich dann morgen arbeiten...
Michael R.
User
Beiträge: 1
Registriert: Freitag 10. April 2009, 20:17

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.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

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)
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.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

für solche Felder nehme ich auch immer numpy-Arrays :o
Antworten