在我的井字游戏中,我在哪里融入了没有人赢过的东西



我是编码新手,最近开始学习python。我的第一个挑战是制作一个井字游戏。以下是我的游戏代码,除了没有赢家(即游戏平局(外,一切都很好;我想显示no body has won the game.我已经尝试在不同的地方加入else。但是,他们没有帮助。这是我的密码。

# a dictionary to display the grid
grid = {
'1':'1', '2':'2', '3':'3',
'4':'4', '5':'5', '6':'6',
'7':'7', '8':'8', '9':'9'
}
# a list to store the values that has already been entered
used_places = []
# players and their symbols
player_1 = 'x'
player_2 = 'o'
# to store result
result = None
def grid_display():
#this function displays the grid
print('nn')
print(grid['1'], 't|t', grid['2'], 't|t', grid['3'])
print(''.rjust(19,'*'))
print(grid['4'], 't|t', grid['5'], 't|t', grid['6'])
print(''.rjust(19, '*'))
print(grid['7'], 't|t', grid['8'], 't|t', grid['9'])
def win_the_game():
# this function checks for result and returns true or false
if(
(grid['1'] == grid['2'] == grid['3']) or (grid['4'] == grid['5'] == grid['6']) or
(grid['7'] == grid['8'] == grid['9']) or (grid['1'] == grid['4'] == grid['7']) or
(grid['2'] == grid['5'] == grid['8']) or (grid['3'] == grid['6'] == grid['9']) or
(grid['1'] == grid['5'] == grid['9']) or (grid['3'] == grid['5'] == grid['7'])
):
return True
else:
return False
def taking_turns(turn):
#this function asks user for input
print("its turn of ", turn)
choice = input("enter your choice")
while not (choice.isdecimal() and choice in grid and (choice not in used_places)):
# taking proper input by checkin it with already entered numbers
# and if it is a number
# and if number is in between 1 and 9
choice = input("nenter your choice properly:")
player_move(choice, turn)
def player_move(move, assign):
# this function fills the entered numbers into used_places list
# and replaces numbers in grid with user input
used_places.append(move)
grid[move] = assign
print("player 1 : 'X'")
print("player 2 : 'O'")
for i in range(0,10):               # loops 9 times to play the game
if i % 2 == 0:                  # giving turns. if i is even, player 1 gets turn and odd, player 2
grid_display()              # displaying complete grid
turn = player_1             # to display whose turn it is; refer the function
taking_turns(turn)
if win_the_game() == True:  # if the called function returns true in this 'if'
result = turn           # player 1 wins
break
else:
grid_display()              # same code as above
turn = player_2
taking_turns(turn)
if win_the_game() == True:
result = turn
break
print('nn',result, "won the game!!")     # printing result

不是设置result=None,而是设置result='Nobody'。

从你的逻辑来看,你只在有人获胜的情况下设置结果,这将把结果的默认值留给任何人。

--编辑--

对不起,我有点忘乎所以,在证明我的解决方案时,我重写了你的游戏逻辑。要么接受它,要么放弃它,但它现在效果很好,也许你可以把它作为一个例子来修复你自己的问题。

import os
# a dictionary to display the grid
grid = {
'1':'1', '2':'2', '3':'3',
'4':'4', '5':'5', '6':'6',
'7':'7', '8':'8', '9':'9'
}
# a list to store the values that are available
places = ['1','2','3','4','5','6','7','8','9']
# to store result
result = 'Nobody'
# starting player
turn = 'O'
# display a game grid
def grid_display():
os.system('cls' if os.name == 'nt' else 'clear')
#this function displays the grid
print
print(grid['1'], '|', grid['2'], '|', grid['3'])
print(''.rjust(25,'*'))
print(grid['4'], '|', grid['5'], '|', grid['6'])
print(''.rjust(25, '*'))
print(grid['7'], '|', grid['8'], '|', grid['9'])
# check to see if anyone has won or are we out of moves
def win_the_game():
# this function checks for result and returns true or false
if(
(grid['1'] == grid['2'] == grid['3']) or (grid['4'] == grid['5'] == grid['6']) or
(grid['7'] == grid['8'] == grid['9']) or (grid['1'] == grid['4'] == grid['7']) or
(grid['2'] == grid['5'] == grid['8']) or (grid['3'] == grid['6'] == grid['9']) or
(grid['1'] == grid['5'] == grid['9']) or (grid['3'] == grid['5'] == grid['7'])
):
return True
# checks if there are any moves left
elif not places:
return False
else:
return False
# input / grid update function
def taking_turns():
# this function asks user for input
# use RAW_INPUT to make it a string
print
print map(str, places)
choice = raw_input("nEnter "+turn+"'s choice: ")
if choice in places:
# this removes the number from the available list
# and replaces numbers in grid with user input
places.remove(choice)
grid[choice] = turn

# Logic loop
while places:
grid_display()                      # always display the grid
if turn == "O":                     # giving turns.
turn = 'X'
taking_turns()
if win_the_game() == True:      # if the called function returns true in this 'if'
result = turn               # player 1 wins
grid_display()              # Winners GRID
break
else:
turn = 'O'
taking_turns()
if win_the_game() == True:
result = turn
grid_display()              # Winners GRID
break
# results
print
print(result, "won the game!!")             # printing result
print

最新更新