我想弄清楚一個for循環以及if語句是否會在python中檢查一個tic tac toe遊戲的獲勝者。我需要這個,因爲我有一個連接4遊戲,我打算使用相同的僞代碼。在Python上的井字棋
這是我到目前爲止有:
col_size = 3
row_size = 3
ttt = list()
for n in range(col_size):
rows = input(msg[n]+ ":")
ttt.append(rows)
print(ttt)
row_ttt= list()
for i in range(row_size):
one_row = list()
for j in range(col_size):
one_row+= ttt[i][j]
row_ttt.append(one_row)
diagonal_ttt= list()
for j in range(col_size):
one_diagonal= ""
for i in range(row_size):
one_diagonal+= ttt[i][j+1:2]
diagonal_ttt.append(one_diagonal)
print(row_ttt)
valid_symbols = ['x','X','o','O','.']
for j in range(col_size):
for i in range(row_size):
if row_ttt[i][j]== row_ttt[i:i+1][j] == row_ttt[i:i+2][j]:
#print(row_ttt[i][j]) to check the element
#print(row_ttt[i:i+1][j]) to check element
#print(row_ttt[i:i+2][j]) to check element
valid = True
print("valid board - " + ttt[i][j] + " is the winner")
break
我把它寫出來的手工這裏,但我希望有一個更短的代碼:
if ttt[0][0] == ttt[1][1] == ttt[2][2]:
print("valid board " + ttt[0][0] + " is the winner")
break
if ttt[0][2] == ttt[1][1] == ttt[2][0]:
print("valid board " + ttt[2][0] + " is the winner")
break
if ttt[0][0] == ttt[0][1] == ttt[0][2]:
print("valid board " + ttt[0][0] + " is the winner")
break
if ttt[1][0] == ttt[1][1] == ttt[1][2]:
print("valid board " + ttt[0][0] + " is the winner")
break
if ttt[2][0] == ttt[2][1] == ttt[2][2]:
print("valid board " + ttt[0][0] + " is the winner")
break
if ttt[0][0] == ttt[1][1] == ttt[2][2]:
print("valid board " + ttt[0][0] + " is the winner")
break
if ttt[0][0] == ttt[1][0] == ttt[2][0]:
print("valid board " + ttt[0][0] + " is the winner")
break
if ttt[0][1] == ttt[1][1] == ttt[2][1]:
print("valid board " + ttt[0][1] + " is the winner")
break
if ttt[0][2] == ttt[1][2] == ttt[2][2]:
print("valid board " + ttt[0][2] + " is the winner")
break
我得到這個消息時,我測試了: 如果行[0] ==行[1] ==行[2] =無: ^ TabError:不一致地使用縮進中的製表符和空格 – user300
那麼這似乎是一個直接的錯誤來解決。 在vim中,你可以用:%> |%< – aestrivex
更新 - 取決於你用什麼來表示棋盤上沒有棋子。我認爲這只是「」?現在試試我的代碼... – mbdavis