Ich bin dabei ein 4gewinnt Spiel zu programmieren.
Das kleine Projekt ist in vier Phasen unterteilt:
- Funktionierende Minimallösung
- Netwerkunterstützung
- GUI
- Computerspieler(KI)
Bis jetzt habe ich die ersten beiden Punkte implementiert, poste es aber hier
jetzt schon da mich zwei Sachen brennend interessieren bevor ich weiter mache.
1) Suchalgorithmus/Gewinnüberprüfung - 4 Steine in einer Reihe:
(Auschnitt aus dem Programm, siehe weiter unten)
Code: Alles auswählen
def check_win(self, player):
# horizontal
for row in range(self.rows):
count = 0
for col in range(self.cols):
if self.board[row][col] == player:
count += 1
if count == self.connect_n: return player
else: count = 0
# vertical
for col in range(self.cols):
count = 0
for row in range(self.rows):
if self.board[row][col] == player:
count += 1
if count == self.connect_n: return player
else: count = 0
# diagonal
for row in range(self.rows-self.connect_n+1):
for col in range(self.cols-self.connect_n+1):
count1, count2 = 0, 0
for i in range(self.connect_n):
count1 += (self.board[row+i][col+i] == player)
count2 += (self.board[row+i][col+self.connect_n-1-i] ==
player)
if count1 == self.connect_n or count2 == self.connect_n:
return player
Besser unter den Eigenschaften schneller, kürzer, verständlicher, pythonischer usw.
2) Der Netzwerkteil
Das ist mein erster Versuch mit Netzwerken.
Ich habe versucht Server und Client in eine Datei zu packen. Was einem
sofort Aufällt, ist der immernoch Redundante Code, sprich ich habe versucht
Server und Client möglichst ähnlich zu machen um doppelten Code
zu vermeiden.
Lässt sich dies noch besser Lösen? Vielleicht auch durch die Verwendung
eines anderen Moduls anstatt socket, eventuell xml-rpc? Bitte um Ratschläge
von euch!
So jetzt noch der komplette Code:
(leider sind die Basisklassen noch nicht komplett gleich, sondern mussten
für die Netzwerkunterstützung noch ein bisschen geändert werden)
4gewinnt - minimal
4gewinnt - netzwerk
Sonstige Kritik, Fehlfunktionen und sonstiges ist natürlich auch erwünscht.
Danke im Voraus.
Gruß icepacker