本文介绍了接受 1-9 TIC TAC TOE 的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我使用 Python 创建的 TIC TAC TOE 游戏..
Here's a TIC TAC TOE game i have created using Python..
import os
os.system('cls')
i = 0
#Exiter
def exithoja():
import sys
raw_input
sys.exit()
#Displays Win or Draw
def diswin(name,grid):
i = checkwin(grid)
os.system('cls')
viewgrid(grid)
if i ==1:
print name, " has won the game !!"
elif i == -1:
print "This Match is a draw !!"
exithoja()
#Checking for Win or Draw Function
def checkwin(grid):
i = 0
result = 0
extra=0
for i in range (1,9): #This part checks for full grid.
if (grid[i] == 'X' or grid[i]=='O'):
extra += 1
if (grid[1] == grid[2] and grid[2] == grid[3]):
result = 1 #This part checks for win.
elif(grid[4] == grid[5] and grid[5] == grid[6]):
result = 1
elif(grid[7] == grid[8] and grid[8] == grid[9]):
result = 1
elif(grid[1] == grid[4] and grid[4] == grid[7]):
result = 1
elif(grid[2] == grid[5] and grid[5] == grid[8]):
result = 1
elif(grid[3] == grid[6] and grid[6] == grid[9]):
result = 1
elif(grid[1] == grid[5] and grid[5] == grid[9]):
result = 1
elif(grid[3] == grid[5] and grid[5] == grid[7]):
result = 1
elif(extra==9): #This part checks for draw.
result = -1
return result #0 for continue,1 for win, -1 for draw.
#Grid Print Function
def viewgrid(grid):
print "\n\n . .\n",
print " | | "
for i in range(1,10):
if i%3==0:
print " ",
else:
print "",
print "",grid[i]," ",
if i%3 == 0:
if i == 9:
print "\n | |",
print "\n ' '"
else:
print "\n | | ",
print "\n------+-------+-------\n",
print " | | "
else:
print "|",
#Grid Print Function Ends
#Marks the user choice is possible ('X' or 'O' if possible, 0 if not possible)
def markgrid(user,grid, place):
if grid[place] != place:
returnvalue = 0
else:
returnvalue = user
return returnvalue
#End of Mark Grid Function
#Player 1 Marking Function Part 1
def player11(name1,grid):
while True:
os.system('cls')
viewgrid(grid)
print name1, ", Please enter your choice from the grid above : ",
place = raw_input()
try:
place = int(place)
except ValueError:
print "",
else:
break
#This will be executed only if no exception is raised
if place == '.':
import sys
sys.exit()
elif place > 9 or place < 1:
place = 0
return place
#Player 1 Marking Function Part 1 ends
#Player 1 Marking Function Part 2
def player12(place,grid,name1):
if place == 0:
while place==0:
place == player11(name1,grid)
grid[place] = markgrid('O',grid,place)
#Player 1 Marking Function Part 2 ends
#Player 2 Marking Function Part 1
def player21(name2,grid):
while True:
os.system('cls')
viewgrid(grid)
print name2, ", Please enter your choice from the grid above : ",
place = raw_input()
try:
place = int(place)
except ValueError:
print "",
else:
break
#This will be executed only if no exception is raised
if place == '.':
import sys
sys.exit()
elif place > 9 or place < 1:
place = 0
return place
#Player 2 Marking Function Part 1 ends
#Player 2 Marking Function Part 2
def player22(place,grid,name2):
if place == 0:
while place==0:
place == player21(name2,grid)
grid[place] = markgrid('X',grid,place)
#Player 2 Marking Function Part 2 ends
#Reset Grid Code starts here
def gridreset(grid):
j = 0
for j in range(0,10):
grid.append(j)
#Reset Grid Code ends here
#This is the main program, defined as a function itself
def playgame():
print "\n\nUser 1 - Please Enter your name : ",
name1 = raw_input()
print "User 2 - Please Enter your name : ",
name2 = raw_input()
print "\n",name1,", your marking is O",
print "\n",name2,", your marking is X"
user1 = 'O'
user2 = 'X'
raw_input()
grid = []
gridreset(grid)
def player1(name1):
i = player11(name1,grid)
if markgrid('O',grid,i) == 0:
player1(name1)
player12(i,grid,name1)
i = checkwin(grid)
print i
if i==1 or i == -1:
diswin(name1,grid)
player2(name2)
return grid
def player2(name2):
i = player21(name2,grid)
if markgrid('X',grid,i) == 0:
player2(name2)
player22(i,grid,name2)
i = checkwin(grid)
if i==1 or i == -1:
diswin(name2,grid)
player1(name1)
return grid
player1(name1)
player2(name2)
return grid
#Main Program end
#Main Program Execution
grid = []
grid = playgame()
我现在面临的一个问题是,在 player11
和 player12
程序能够接受输入 >9 或
A problem I am facing now, is that in player11
and player12
The program is able to take input >9 or <1 and asks for the input again... But just after that when the correct input is provided... Nothing Happens... Any help is appreciated :)..
推荐答案
你混淆了你的任务 =
和等式检查 ==
.所以你有几行:
You are mixing up your assignment =
and equality check ==
. So you have lines:
if place == 0:
while place==0:
place == player11(name1,grid)
(其他玩过的类似)并且您需要第三个开始place =
而不是place ==
.
(similarly for the other played) and you need the third one to begin place =
not place ==
.
这篇关于接受 1-9 TIC TAC TOE 的数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!