Tic Tac Toe, wer gewinnt
Verfasst: Samstag 23. März 2013, 14:25
Ich habe gerade ein Tic Tac Toe programmiert ( Konsole , Spieler gegen Spieler ) , aber meine whowins funktion hat wahrscheinlich ein Fehler drin, die Funktion erkennt nicht wenn jemand gewinnt.
Code: Alles auswählen
#0=nothing on the field
#1= X on the field
#4= O on the field
def whowins(board):
b=board
winningpositions= map(sum,[[b[0],b[1],b[2]],[b[3],b[4],b[5]],
[b[6],b[7],b[8]],[b[0],b[3],b[6]],
[b[1],b[4],b[7]],[b[2],b[5],b[8]],
[b[0],b[4],b[8]],[b[2],b[4],b[6]]])
if 12 in winningpositions:
return 4
elif 3 in winningpositions:
return 1
else:
return 0
def whosnext(now):
return 4 if now==1 else 1
def newboard(board,position,turn):
board=board[::]
board[position-1]=turn
return board
def display(board):
counter=1
for x in board:
if x==1:
print(" X","|" if counter%3 else "\n",end="")
elif x==4:
print(" O","|" if counter%3 else "\n",end="")
else:
print("",counter,"|" if counter%3 else "\n",end="")
counter +=1
def main():
board=[0]*9
turn=4
while True:
display(board)
while True:
field = int(input("Welches Feld wollen Sie besetzen? "))
if board[field-1]==0:
break
else:
print("Dieses Feld ist schon besetzt")
turn = whosnext(turn)
board = newboard(board,field,turn)
if whowins(board)==4:
print("Spieler 'O' gewinnt")
break
elif whowins(board)==1:
print("Spieler 'X' gewinnt")
break
if __name__=="__main__":
main()
input()