在python中使用Tic-Tac-Toe。如何使其不覆盖其他玩家的位置?

2024-06-08 16:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

假设玩家X在棋盘上的a1处放置一个点。我怎样才能让玩家O不只是把他们的观点放在a1上而覆盖X的输入

board = ["# ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# "]
p2 = 1
p = 0
scorex = 0
scoreo = 0
a = 0
b = 0 
def game():
    for i in range(0,3):
        print(board[i], end="")
    print("")
    for i in range(3,6):
        print(board[i], end="")
    print("")
    for i in range(6,9):
        print(board[i], end="")
def pagain(scoreo, scorex):
       again = input("Do you want to play again(y)or no(n)?: ")
       if again == "y":  
              board.clear()
              for i in range(9):
                     board.append("# ")
              p = 0
              wholegame(scoreo, scorex)
              return scoreo


       elif again == "n":
              p = 1
              print("Thanks for playing!")
              o = input("")

def wholegame(scoreo, scorex):
       game()
       p = 0
       while p == 0:

#For O
           o = input("\nWhere do you want to place your O letter?(a1, a2, a3...): ")

           if o == "a1":
               board[0] = "o "
               game()
               
           elif o == "a2":
               board[1] = "o "
               game()
           elif o == "a3":
               board[2] = "o "
               game()
           elif o == "b1":
               board[3] = "o "
               game()
           elif o == "b2":
               board[4] = "o "
               game()
           elif o == "b3":
               board[5] = "o "
               game()
           elif o == "c1":
               board[6] = "o "
               game()
           elif o == "c2":
               board[7] = "o "
               game()
           elif o == "c3":
               board[8] = "o "
           else:
               print("\nInvalid, you lost your turn.")
               
               
               
             
#O Wins
           if board[0] + board[1] + board[2] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[3] + board[4] + board[5] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[6] + board[7] + board[8] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[0] + board[4] + board[8] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[2] + board[4] + board[6] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[0] + board[3] + board[6] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[1] + board[4] + board[7] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[2] + board[5] + board[8] == "o o o ":
               scoreo = scoreo + 1
               print("\n\nO Wins\nPlayer O has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif "# " not in board:
               print("\n\nTie.\nPlayer O has", oscore, "point(s).\nPlayer X has", xscore, "point(s)")
               p = p + 1
               pagain()
               
               
#For X
           x = input("\nWhere do you want to place your X letter?(a1, a2, a3...): ")
           if x == "a1":
               board[0] = "x "
               game()
           elif x == "a2":
               board[1] = "x "
               game()
           elif x == "a3":
               board[2] = "x "
               game()
           elif x == "b1":
               board[3] = "x "
               game()
           elif x == "b2":
               board[4] = "x "
               game()
           elif x == "b3":
               board[5] = "x "
               game()
           elif x == "c1":
               board[6] = "x "
               game()
           elif x == "c2":
               board[7] = "x "
               game()
           elif x == "c3":
               board[8] = "x "
               game()
           else:
               print("\nInvalid, you lost your turn.")
#X wins 
           if board[0] + board[1] + board[2] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[3] + board[4] + board[5] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[6] + board[7] + board[8] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[0] + board[4] + board[8] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
           elif board[2] + board[4] + board[6] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
               
           elif board[0] + board[3] + board[6] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[1] + board[4] + board[7] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif board[2] + board[5] + board[8] == "x x x ":
               scorex = scorex + 1
               print("\n\nO Wins\nPlayer X has", scoreo, "point(s)")
               p = p + 1
               pagain(scoreo, scorex)
               
           elif "# " not in board:
               print("\n\nTie.\nPlayer O has", oscore, "point(s).\nPlayer X has", xscore, "point(s)")
               p = p + 1
               pagain()

               
wholegame(scoreo, scorex) 

#create if statements to make acceptions(so you cant overite the others positions)
#Unexpected input(Ex: If someone doesn't type a1 then say invali

Tags: noinboardyougamea1pointhas
2条回答

试试这个:

       if o == "a1" and board[0] != "o " :
           board[0] = "o "
           game()
           
       elif o == "a2" and board[1] != "o ":
           board[1] = "o "
           game()
       elif o == "a3" and board[2] != "o ":
           board[2] = "o "
           game()
       elif o == "b1" and board[3] != "o ":
       ...

然后继续下面的if语句

if o == "a1" and board[0] == "# ":

将检查正方形是否为空。但是,由于您单独测试每个条件,因此需要将and board[n] == "# "添加到所有条件中

相关问题 更多 >