8.581
Bearbeitungen
Jneug (Diskussion | Beiträge) |
Jneug (Diskussion | Beiträge) |
||
Zeile 77: | Zeile 77: | ||
loc = toLocation(e.getX(), e.getY()) | loc = toLocation(e.getX(), e.getY()) | ||
# | # Zelle des Mausklicks prüfen und ggf. Farbe setzen | ||
if bg.getColor(loc) == Color.black: | |||
if player == 1: | |||
bg.fillCell(loc, Color.green) | |||
else: | |||
bg.fillCell(loc, Color.blue) | |||
# Sieg prüfen und ggf. Feld einfärben | |||
if pruefeSieg(): | |||
if player == 1: | |||
bg.clear(Color.green) | |||
else: | |||
bg.clear(Color.blue) | |||
# ... sonst Unentschieden prüfen und ggf. färben | |||
elif pruefeUnentschieden(): | |||
bg.clear(Color.yellow) | |||
# | # Spieler wechseln | ||
if player == 1: | |||
player = 2 | |||
else: | |||
player = 1 | |||
refresh() | refresh() | ||
return True | |||
def pruefeSieg(): | |||
# Zeilen und SPalten prüfen | |||
for i in range(3): | |||
if pruefeZeile(i): | |||
return True | |||
elif pruefeSpalte(i): | |||
return True | |||
# Diagonalen prüfen | |||
return pruefeDiagonalen() | |||
# prüft beide Diagonalen | |||
def pruefeDiagonalen(): | |||
if bg.getColor(Location(0,0)) != Color.black and bg.getColor(Location(0,0)) == bg.getColor(Location(1,1)) and bg.getColor(Location(1,1)) == bg.getColor(Location(2,2)): | |||
return True | |||
if bg.getColor(Location(2,0)) != Color.black and bg.getColor(Location(2,0)) == bg.getColor(Location(1,1)) and bg.getColor(Location(1,1)) == bg.getColor(Location(0,2)): | |||
return True | |||
return False | |||
# Prüft genau eine Zeile | |||
def pruefeZeile(y): | |||
return bg.getColor(Location(0,y)) != Color.black and bg.getColor(Location(0,y)) == bg.getColor(Location(1,y)) and bg.getColor(Location(1,y)) == bg.getColor(Location(2,y)) | |||
# Prüft genau eine Spalten | |||
def pruefeSpalte(x): | |||
return bg.getColor(Location(x,0)) != Color.black and bg.getColor(Location(x,0)) == bg.getColor(Location(x,1)) and bg.getColor(Location(x,1)) == bg.getColor(Location(x,2)) | |||
# Prüft, ob noch schwarze (freie) Felder existieren | |||
def pruefeUnentschieden(): | |||
for i in range(3): | |||
for j in range(3): | |||
if bg.getColor(Location(i,j)) == Color.black: | |||
return False | |||
return True | return True | ||
Bearbeitungen