如何解决我在井字游戏中遇到了运行时错误,因为我未在此程序中使用任何功能,请一次查看代码
运行此代码时出现错误 我已经使用函数做到了这一点,但是这次我想在没有函数的情况下做到这一点 但是有一些错误 我什至不知道我们可以这样做井字游戏
from IPython.display import clear_output
import random
print('WELCOME TO TIC TAC TOE\n')
board= [' '] * 10
player2 = ' '
player_1 = None
player_2 = None
turn = player_1
clear_output()
print(' | | ')
print(' '+board[7]+' | '+board[8]+' | '+board[9])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[4]+' | '+board[5]+' | '+board[6])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[1]+' | '+board[2]+' | '+board[3])
print(' | | ')
marker = ''
while not (marker == 'X' or marker == 'O'):
marker = input('player 1 do you want to be X or O\n').upper()
if marker == "X":
player1 = "X"
player2 = "O"
else:
player1 = "O"
player2 = "X"
if random.randint(0,1) == 0:
print('player 1 will go first')
turn=player_1
else:
print('player 2 will go first')
turn=player_2
win_check = False
if ((board[7]==player1 and board[8]==player1 and board[9]==player1) or #horizontal check
(board[4]==player1 and board[5]==player1 and board[6]==player1) or #horizontal check
(board[1]==player1 and board[2]==player1 and board[3]==player1) or #horizontal check
(board[1]==player1 and board[4]==player1 and board[7]==player1) or #vertical check
(board[2]==player1 and board[5]==player1 and board[8]==player1) or #vertical check
(board[3]==player1 and board[6]==player1 and board[9]==player1) or #vertical check
(board[1]==player1 and board[5]==player1 and board[9]==player1) or #diagonal check
(board[3]==player1 and board[5]==player1 and board[7]==player1)):
win_check=True
elif ((board[7]==player2 and board[8]==player2 and board[9]==player2) or #horizontal check
(board[4]==player2 and board[5]==player2 and board[6]==player2) or #horizontal check
(board[1]==player2 and board[2]==player2 and board[3]==player2) or #horizontal check
(board[1]==player2 and board[4]==player2 and board[7]==player2) or #vertical check
(board[2]==player2 and board[5]==player2 and board[8]==player2) or #vertical check
(board[3]==player2 and board[6]==player2 and board[9]==player2) or #vertical check
(board[1]==player2 and board[5]==player2 and board[9]==player2) or #diagonal check
(board[3]==player2 and board[5]==player2 and board[7]==player2)):
win_check=False
board_check = True
for i in range(1,10):
if board[i] == ' ':
board_check = True
else:
board_check = False
position = 0
gameon = True
while gameon == True:
if turn == player_1:
while position not in [1,2,3,4,5,6,7,8,9] or not board[i] == ' ':
position = int(input("Enter the position (1-9)"))
board[position] = player1
if win_check == True:
print("player1 WON!!")
print(' | | ')
print(' '+board[7]+' | '+board[8]+' | '+board[9])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[4]+' | '+board[5]+' | '+board[6])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[1]+' | '+board[2]+' | '+board[3])
print(' | | ')
gameon = False
break
else:
if board_check == False:
print(' | | ')
print(' '+board[7]+' | '+board[8]+' | '+board[9])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[4]+' | '+board[5]+' | '+board[6])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[1]+' | '+board[2]+' | '+board[3])
print(' | | ')
print('game is Draw')
else:
turn = player_2
else:
while position not in [1,9] or not board[i] == ' ':
position = int(input("Enter the position (1-9)"))
board[position] = player2
print("player2 WON!!")
print(' | | ')
print(' '+board[7]+' | '+board[8]+' | '+board[9])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[4]+' | '+board[5]+' | '+board[6])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[1]+' | '+board[2]+' | '+board[3])
print(' | | ')
if win_check == True:
print("player2 WON!!")
print(' | | ')
print(' '+board[7]+' | '+board[8]+' | '+board[9])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[4]+' | '+board[5]+' | '+board[6])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[1]+' | '+board[2]+' | '+board[3])
print(' | | ')
gameon = False
else:
if board_check == False:
print(' | | ')
print(' '+board[7]+' | '+board[8]+' | '+board[9])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[4]+' | '+board[5]+' | '+board[6])
print(' | | ')
print('---------------')
print(' | | ')
print(' '+board[1]+' | '+board[2]+' | '+board[3])
print(' | | ')
print('game is Draw')
else:
turn = player_1
replay = input('Do you wnt to play again? Y or N').lower()
if replay == 'y':
continue
else:
break
如果您可以帮助的话,对我来说对初学者来说将非常有用 在python编程中 在这段代码中,我无法退出while循环,并且它不会显示任何结果
解决方法
在代码中,win_check
和board_check
应该是函数,以便您可以在每一回合重新检查状态。
尝试以下代码:
def win_check():
if ((board[7]==player1 and board[8]==player1 and board[9]==player1) or #horizontal check
(board[4]==player1 and board[5]==player1 and board[6]==player1) or #horizontal check
(board[1]==player1 and board[2]==player1 and board[3]==player1) or #horizontal check
(board[1]==player1 and board[4]==player1 and board[7]==player1) or #vertical check
(board[2]==player1 and board[5]==player1 and board[8]==player1) or #vertical check
(board[3]==player1 and board[6]==player1 and board[9]==player1) or #vertical check
(board[1]==player1 and board[5]==player1 and board[9]==player1) or #diagonal check
(board[3]==player1 and board[5]==player1 and board[7]==player1)):
return True
elif ((board[7]==player2 and board[8]==player2 and board[9]==player2) or #horizontal check
(board[4]==player2 and board[5]==player2 and board[6]==player2) or #horizontal check
(board[1]==player2 and board[2]==player2 and board[3]==player2) or #horizontal check
(board[1]==player2 and board[4]==player2 and board[7]==player2) or #vertical check
(board[2]==player2 and board[5]==player2 and board[8]==player2) or #vertical check
(board[3]==player2 and board[6]==player2 and board[9]==player2) or #vertical check
(board[1]==player2 and board[5]==player2 and board[9]==player2) or #diagonal check
(board[3]==player2 and board[5]==player2 and board[7]==player2)):
return False
def board_check():
for i in range(1,10):
if board[i] == ' ':
return True
return False
在游戏循环中,将这些称为函数:
if win_check() .......
if board_check() .......
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。