我正试着用python在终端上做一个tic tac toe游戏,但是我不明白为什么我选择了第一个位置之后就得到了胜利的信息,其他人能看到为什么吗?我创建了一个for循环来检查我是否在行或列中获胜,并创建了2个if语句来检查我是否通过对角线获胜。
import random
board = [[' ',' ',' '],
[' ',' ',' '],
[' ',' ',' ']]
def checkwin(board):
for row in board:
if len(set(row)) == 1:
return True
elif board[0][0] == board[1][1] == board[2][2]:
return True
elif board[2][0] == board[1][1] == board[0][2]:
return True
else:
return False
def check_space_taken(board, number):
if not choose_position(board, number) == ' ':
return True
else:
return False
def choose_position(board, number):
if number <= 3:
board[0][number-1] = 'X'
elif number <= 6:
board[1][number-4] = 'X'
elif number <= 9:
board[2][number-7] = 'X'
return board, number
def computer_position(board, computer_number):
computer_number = random.randint(0,9)
if computer_number <= 3:
board[0][computer_number-1] = 'O'
elif computer_number <= 6:
board[1][computer_number-4] = 'O'
elif computer_number <= 9:
board[2][computer_number-7] = 'O'
return board, computer_number
Game_over = False
while not Game_over:
print(board)
player_input = int(input('move to: '))
changed_board = choose_position(board, player_input)
for line in changed_board:
print(line)
if checkwin(board):
print('\n-----------------------Congrats you won-----------------------\n')
Game_over = True发布于 2021-02-15 23:34:48
原则上,您的逻辑是正确的,但您需要考虑空格。您还忘记检查列:
def checkwin(board):
for i in range(3):
if board[i][0] != " " and board[i][0] == board[i][1] == board[i][2]:
return True # found a winning row
if board[0][i] != " " and board[0][i] == board[1][i] == board[2][i]:
return True # found a winning column
# winning diagonals?
if board[1][1] != " " and board[0][0] == board[1][1] == board[2][2]:
return True
if board[1][1] != " " and board[2][0] == board[1][1] == board[0][2]:
return True
return Falsehttps://stackoverflow.com/questions/66210713
复制相似问题