Starte mit dem Tutorial. Das gibt es auch
auf deutsch. Überlege dir dann, wie Tic Tac Toe funktioniert. Schreib es dir auf oder sag es dir laut vor. Das hat erst mal gar nichts mit Python zu tun. Implementiere zunächst die Spiellogik. Erst danach würde ich mir über die Darstellung Gedanken machen. 9 Felder können jeweils X, O oder nix enthalten. Eine Liste ist eine prima Repräsentation für das Spielfeld. Wie kann man hier Werte lesen und setzen? Überlege dann, wie man prüfen kann, ob ein Spieler gewonnen hat. 8 verschiedene Kombinationen sind zu prüfen. Dann brauchst du nur noch eine Schleife, in der du pro Spieler nach einem Feld fragst, wo er ein X oder O setzen will und wo du prüfst, ob der Spieler gewonnen hat.
Anbei eine quick'n'dirty Umsetzung, von der ich nicht erwarten würde, dass sie einem Anfänger verständlich ist, da ich absichtlich ein paar der eher fortgeschrittenen Features eingebaut habe, nur so als Ansporn
Code: Alles auswählen
class TicTacToe:
def __init__(self):
self.fields = [0] * 9
def __getitem__(self, index):
return self.fields[index[0] + index[1] * 3]
def __setitem__(self, index, value):
self.fields[index[0] + index[1] * 3] = value
def __str__(self):
return "\n 1 2 3\n1 %s|%s|%s\n -+-+-\n2 %s|%s|%s\n -+-+-\n3 %s|%s|%s\n" % \
tuple(" XO"[i] for i in self.fields)
def has_won(self, p):
return any(all(self.fields[i] == p for i in indexes) for indexes in
((0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6)))
def ask(prompt):
while True:
try: n = int(input(prompt)) - 1
except ValueError: continue
if 0 <= n < 3: return n
t = TicTacToe()
p = 1
for _ in range(9):
print(t)
print("Your turn, player", p)
t[ask("x?"), ask("y?")] = p
if t.has_won(p):
print("You have won!")
break
p = 3 - p
else:
print("Draw!")
Stefan