Ich verstehe nicht warum du für jeden Spieler eine eigene Methode erzeugst ?
Es würde doch eine Methode reichen, die als Parameter noch den jeweiligen Spieler erwartet. Das wäre dann nicht nur besser für weitere Entwickler (da weniger Quelltext), sondern auch besser für die Performance.
Des weiteren könnte man wie angesprochen z.B. folgendes machen:
Sagen wir für jeden Spieler gibt es eine Kette von Zahlen. Am Anfang würde sie so aussehen:
Code:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
(Die Leerzeichen und Umbrüche habe ich hier nur zur besseren Übersicht eingefügt)
Sobald man setzt wird dann an die jeweilige Stelle eine 1 geschrieben (man könnte auch fortlaufend nummerieren, sofern man sogar den Spielverlauf speichern möchte).
Nun kann man nach dem 4. Zug (vorher macht es ja keinen Sinn) prüfen, ob 1111 [horizontal], 1dddddd1dddddd1dddddd1 (d = dont care) [vertikal], 1ddddddd1ddddddd1ddddddd1 [links diagonal] oder 1ddddd1ddddd1ddddd1 [rechts diagonal] auftaucht.
Wenn eines davon stimmt hat man gewonnen.
Wobei man natürlich noch die Position bestimmen muss, da es in dieser Form überlappen würde, was jedoch kein Sieg ist (z.B)
Code:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 1 1
1 1 0 0 0 0 0
Das kann man aber alles abfangen.
Mögliche Siege wären z.B.
Code:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 1 0 0 0
0 0 0 1 0 0 0
0 0 0 1 0 0 0
Code:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 1 1 1 1 0
Code:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 1 0
0 0 0 0 1 0 1
0 0 0 1 0 1 0
usw.
Man könnte es sogar noch so optimieren, dass man nur den relevanten Ausschnitt betrachtet, da je nach Position nicht alles geprüft werden muss.
Ich denke, dass dies schneller arbeiten wird, gerade da man die horizontalen Linien deutlich einfacher prüfen kann und ein reg. Ausdruck würde die weiteren Prüfungen abbrechen würde, wenn er z.B. schon 1dddddd1 nicht findet.
Ich kenne zwar auch die Reden meines Profs bzgl. Sparsamkeit mit den Ressourcen (da achtet in der Uni jedenfalls selten jemand drauf und Entwicklungszeit > Sparsamkeit), aber ich pers. mag optimierte Software deutlich lieber.