回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试制作这个游戏,但是我在检查赢的情况时遇到了一个问题(在我的<code>checkWin()</code>函数中)。现在我使用<code>X</code>作为测试用例,只检查第一列。我的问题是,如果第一栏没有<code>X</code>,它总是告诉我我赢了。我很理解它为什么这么做,但是我不知道如何只让<code>win</code>成为<code>True</code><strong>如果<code>X</code>填充了<code>X</code>的话。我仍然在研究这个程序的一些问题,但我想把它弄清楚。你知道吗</p>
<pre><code>'''Tic-tac-toe game'''
import time
import random
def printBoard():
print "\n"
print " 1 | 2 | 3 "
print "____|____|____"
print " 4 | 5 | 6 "
print "____|____|____"
print " 7 | 8 | 9 "
print " | | "
print "\n"
def makeMove():
move = raw_input("\nOf the boxes numbered above, choose a move: ")
move = int(move)
return move
def boardCurrent(takenSpots):
print "",takenSpots[0]," |",takenSpots[1]," |",takenSpots[2]," "
print "____|____|____"
print "",takenSpots[3]," |",takenSpots[4]," |",takenSpots[5]," "
print "____|____|____"
print "",takenSpots[6]," |",takenSpots[7]," |",takenSpots[8]," "
print " | | "
print "\n"
def compMove(takenSpots):
move = random.randint(0,8)
if takenSpots[move] == " ":
takenSpots[move] = "O"
else:
compMove(takenSpots)
return takenSpots
def takeSpot(move):
takenSpots[move - 1] = "X"
return takenSpots
def checkWin(takenSpots):
win = False
for i in range(len(takenSpots)):
if takenSpots[i % 3 == 0]:
win = True
if win == True:
print "You win!"
else:
pass
def main():
print "\nWelcome to tic-tac-toe.\n"
printBoard()
person = makeMove()
boardCurrent(takeSpot(person))
print "Now the computer will go...\n"
time.sleep(1)
compMove(takenSpots)
boardCurrent(takenSpots)
boardCurrent(takeSpot(makeMove()))
print "Now the computer will go...\n"
time.sleep(1)
compMove(takenSpots)
boardCurrent(takenSpots)
boardCurrent(takeSpot(makeMove()))
checkWin(takenSpots)
boardCurrent(takeSpot(makeMove()))
boardCurrent(takeSpot(makeMove()))
takenSpots = [" "," "," "," "," "," "," "," "," "]
main()
</code></pre>