Python programmiere ich noch nicht so lange, habe aber schon erfahrungen mit Java und PHP. (also auch OOP)
Jetzt programmiere ich gerade ein Schach-Spiel.
Es besitzt die Klassen "gameField" (komplettes Spielfeld), das als Attribut eine zweidimensionale liste mit dann insgesamt 64 "Feldern" besitzt.
Hier mal der Code (nur teilweise):
Code: Alles auswählen
class gameField:
Main = [[]]
isReady = False
def __init__(self):
F1 = self.Main
I = 0
while I < 8:
I1 = chr(I+65)
J = 0
self.Main.append([])
while J < 8:
color = (I + J - 1)/2 == (I + J - 1.0)/2
f = field(color, I, J)
self.Main[I].append(f)
# hier wird das richtige ausgegeben, aber anscheinend nicht richtig in der Liste gespeichert...
print 'Das Feld',I1,J,'hat die Farbe',f.color,'und die Figur',f.figureColor,'/',f.figure
J += 1
I += 1
print 'Spielfeld wurde generiert'
isReady = True
def getField(self, i, j):
if not(self.isReady):
f = field(False, 0, 0)
f.deleteFigure()
return f
return self.Main[i][j]
def getFigure(self, i, j):
f = self.getField(i, j)
return f.getFigure()
def setFigure(self, i, j, color, figure):
self.getField(i, j).setFigure(color, figure)
def deleteFigure(self, i, j):
self.getField(i, j).deleteFigure()
class field:
I = 0
J = 0
color = False
figureColor = False
figure = 0
def __init__(self, inpColor, I, J):
color = inpColor
# Feld aufbauen
###############
# Weiß
if (J == 1):
self.figure = 1; self.figureColor = True; return
if (I == 1 or I == 6) and J == 0:
self.figure = 2; self.figureColor = True; return
if (I == 2 or I == 5) and J == 0:
self.figure = 3; self.figureColor = True; return
if (I == 0 or I == 7) and J == 0:
self.figure = 4; self.figureColor = True; return
if I == 3 and J == 0:
self.figure = 5; self.figureColor = True; return
if I == 4 and J == 0:
self.figure = 6; self.figureColor = True; return
# Schwarz
if (J == 6):
self.figure = 1; self.figureColor = False; return
if (I == 1 or I == 6) and J == 7:
self.figure = 2; self.figureColor = False; return
if (I == 2 or I == 5) and J == 7:
self.figure = 3; self.figureColor = False; return
if (I == 0 or I == 7) and J == 7:
self.figure = 4; self.figureColor = False; return
if I == 3 and J == 7:
self.figure = 5; self.figureColor = False; return
if I == 4 and J == 7:
self.figure = 6; self.figureColor = False; return
# Leer
self.figure = 0; self.figureColor = False
def setFigure(self, inpColor, inpFigureID):
self.figureColor = inpColor
self.figure = inpFigureID
def deleteFigure(self):
self.figure = 0
self.figureColor = False
def getFigure(self):
return [self.figureColor, self.figure]
Rahmenprogramm:
Code: Alles auswählen
# Rahmenprogramm
# Globals
global F
F = gameField()
# Bsp. A1 eingeben, Ausgabe sollte sein: "Das Feld A1 ( 0 / 0 ) hat die Farbe Weiß und die Figur 4" (0/0 sind koordinaten, 4 steht für Turm
inp = raw_input('Feld testen: ')
X = ord(inp[0])-65
Y = int(inp[1])-1
[col, fig] = F.getFigure(X, Y)
if col:
color = 'Weiß'
else:
color = 'Schwarz'
print 'Das Feld',inp,'(',X,'/',Y,'hat die Farbe',color,'und die Figur',fig
# Spielschleife