鱼C论坛

 找回密码
 立即注册
查看: 2691|回复: 5

[已解决]一个井字小游戏,切换玩家功能没有实现,请问如何解决

[复制链接]
发表于 2022-12-11 22:26:13 | 显示全部楼层 |阅读模式
1鱼币
  1. from tkinter import *
  2. import random


  3. def next_turn(row, column):

  4.     global player

  5.     if buttons[row][column]['text'] == "" and check_winner() is False:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

  6.         if player == players[0]:

  7.             buttons[row][column]['text'] = player

  8.             if check_winner is False:
  9.                 player = players[1]
  10.                 label.config(text=(players[1]+" turn"))

  11.             elif check_winner() is True:
  12.                 label.config(text=(players[0]+" wins"))

  13.             elif check_winner() == "Tie":
  14.                 label.config(text="Tie!")

  15.         else:

  16.             buttons[row][column]['text'] = player

  17.             if check_winner is False:
  18.                 player = players[0]
  19.                 label.config(text=(players[0] + " turn"))

  20.             elif check_winner() is True:
  21.                 label.config(text=(players[1] + " wins"))

  22.             elif check_winner() == "Tie":
  23.                 label.config(text="Tie!")


  24. def check_winner():

  25.     for row in range(3):
  26.         if buttons[row][0]['text'] == buttons[row][1]['text'] == buttons[row][2]['text'] != "":
  27.             buttons[row][0].config(bg="green")
  28.             buttons[row][1].config(bg="green")
  29.             buttons[row][2].config(bg="green")
  30.             return True

  31.     for column in range(3):
  32.         if buttons[0][column]['text'] == buttons[1][column]['text'] == buttons[2][column]['text'] != "":
  33.             buttons[0][column].config(bg="green")
  34.             buttons[1][column].config(bg="green")
  35.             buttons[2][column].config(bg="green")
  36.             return True

  37.     if buttons[0][0]['text'] == buttons[1][1]['text'] == buttons[2][2]['text'] != "":
  38.         buttons[0][0].config(bg="green")
  39.         buttons[1][1].config(bg="green")
  40.         buttons[2][2].config(bg="green")
  41.         return True

  42.     elif buttons[0][2]['text'] == buttons[1][1]['text'] == buttons[2][0]['text'] != "":
  43.         buttons[0][2].config(bg="green")
  44.         buttons[1][1].config(bg="green")
  45.         buttons[2][0].config(bg="green")
  46.         return True

  47.     elif empty_spaces() is False:

  48.         for row in range(3):
  49.             for column in range(3):
  50.                 buttons[row][column].config(bg="yellow")
  51.         return "Tie"

  52.     else:
  53.         return False


  54. def empty_spaces():

  55.     spaces = 9

  56.     for row in range(3):
  57.         for column in range(3):
  58.             if buttons[row][column]['text'] != "":
  59.                 spaces -= 1

  60.     if spaces == 0:
  61.         return False
  62.     else:
  63.         return True


  64. def new_game():

  65.     global player

  66.     player = random.choice(players)

  67.     label.config(text=player+" turn")

  68.     for row in range(3):
  69.         for column in range(3):
  70.             buttons[row][column].config(text="", bg="#F0F0F0")

  71. window = Tk()
  72. window.title("Tic-Tac-Toe")
  73. players = ["x", "o"]
  74. player = random.choice(players)
  75. buttons = [[0,0,0],
  76.            [0,0,0],
  77.            [0,0,0]]

  78. label = Label(text= player + " turn", font=('consolas',40))
  79. label.pack(side="top")

  80. reset_button = Button(text="restart", font=('consolas',20), command=new_game)
  81. reset_button.pack(side="top")

  82. frame= Frame(window)
  83. frame.pack()

  84. for row in range(3):
  85.     for column in range(3):
  86.         buttons[row][column] = Button(frame, text="", font=('consolas',20), width=5, height=2,
  87.                                       command= lambda row=row, column=column: next_turn(row, column))
  88.         buttons[row][column].grid(row=row, column=column)

  89. window.mainloop()
复制代码
最佳答案
2022-12-11 22:26:14
  1. from tkinter import *
  2. import random


  3. def next_turn(row, column):

  4.     global player

  5.     if buttons[row][column]['text'] == "" and check_winner() is False:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

  6.         if player == players[0]:

  7.             buttons[row][column]['text'] = player

  8.             if check_winner is False:
  9.                 player = players[1]
  10.                 label.config(text=(players[1]+" turn"))

  11.             elif check_winner() is True:
  12.                 label.config(text=(players[0]+" wins"))

  13.             elif check_winner() == "Tie":
  14.                 label.config(text="Tie!")

  15.         else:

  16.             buttons[row][column]['text'] = player

  17.             if check_winner is False:
  18.                 player = players[0]
  19.                 label.config(text=(players[0] + " turn"))

  20.             elif check_winner() is True:
  21.                 label.config(text=(players[1] + " wins"))

  22.             elif check_winner() == "Tie":
  23.                 label.config(text="Tie!")


  24. def check_winner():

  25.     for row in range(3):
  26.         if buttons[row][0]['text'] == buttons[row][1]['text'] == buttons[row][2]['text'] != "":
  27.             buttons[row][0].config(bg="green")
  28.             buttons[row][1].config(bg="green")
  29.             buttons[row][2].config(bg="green")
  30.             return True

  31.     for column in range(3):
  32.         if buttons[0][column]['text'] == buttons[1][column]['text'] == buttons[2][column]['text'] != "":
  33.             buttons[0][column].config(bg="green")
  34.             buttons[1][column].config(bg="green")
  35.             buttons[2][column].config(bg="green")
  36.             return True

  37.     if buttons[0][0]['text'] == buttons[1][1]['text'] == buttons[2][2]['text'] != "":
  38.         buttons[0][0].config(bg="green")
  39.         buttons[1][1].config(bg="green")
  40.         buttons[2][2].config(bg="green")
  41.         return True

  42.     elif buttons[0][2]['text'] == buttons[1][1]['text'] == buttons[2][0]['text'] != "":
  43.         buttons[0][2].config(bg="green")
  44.         buttons[1][1].config(bg="green")
  45.         buttons[2][0].config(bg="green")
  46.         return True

  47.     elif empty_spaces() is False:

  48.         for row in range(3):
  49.             for column in range(3):
  50.                 buttons[row][column].config(bg="yellow")
  51.         return "Tie"

  52.     else:
  53.         return False


  54. def empty_spaces():

  55.     spaces = 9

  56.     for row in range(3):
  57.         for column in range(3):
  58.             if buttons[row][column]['text'] != "":
  59.                 spaces -= 1

  60.     if spaces == 0:
  61.         return False
  62.     else:
  63.         return True


  64. def new_game():

  65.     global player

  66.     player = random.choice(players)

  67.     label.config(text=player+" turn")

  68.     for row in range(3):
  69.         for column in range(3):
  70.             buttons[row][column].config(text="", bg="#F0F0F0")

  71. window = Tk()
  72. window.title("Tic-Tac-Toe")
  73. players = ["x", "o"]
  74. player = random.choice(players)
  75. buttons = [[0,0,0],
  76.            [0,0,0],
  77.            [0,0,0]]

  78. label = Label(text= player + " turn", font=('consolas',40))
  79. label.pack(side="top")

  80. reset_button = Button(text="restart", font=('consolas',20), command=new_game)
  81. reset_button.pack(side="top")

  82. frame= Frame(window)
  83. frame.pack()

  84. for row in range(3):
  85.     for column in range(3):
  86.         buttons[row][column] = Button(frame, text="", font=('consolas',20), width=5, height=2,
  87.                                       command= lambda row=row, column=column: next_turn(row, column))
  88.         buttons[row][column].grid(row=row, column=column)

  89. window.mainloop()
复制代码

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-11 22:26:14 | 显示全部楼层    本楼为最佳答案   
  1. from tkinter import *
  2. import random


  3. def next_turn(row, column):

  4.     global player

  5.     if buttons[row][column]['text'] == "" and check_winner() is False:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

  6.         if player == players[0]:

  7.             buttons[row][column]['text'] = player

  8.             if check_winner is False:
  9.                 player = players[1]
  10.                 label.config(text=(players[1]+" turn"))

  11.             elif check_winner() is True:
  12.                 label.config(text=(players[0]+" wins"))

  13.             elif check_winner() == "Tie":
  14.                 label.config(text="Tie!")

  15.         else:

  16.             buttons[row][column]['text'] = player

  17.             if check_winner is False:
  18.                 player = players[0]
  19.                 label.config(text=(players[0] + " turn"))

  20.             elif check_winner() is True:
  21.                 label.config(text=(players[1] + " wins"))

  22.             elif check_winner() == "Tie":
  23.                 label.config(text="Tie!")


  24. def check_winner():

  25.     for row in range(3):
  26.         if buttons[row][0]['text'] == buttons[row][1]['text'] == buttons[row][2]['text'] != "":
  27.             buttons[row][0].config(bg="green")
  28.             buttons[row][1].config(bg="green")
  29.             buttons[row][2].config(bg="green")
  30.             return True

  31.     for column in range(3):
  32.         if buttons[0][column]['text'] == buttons[1][column]['text'] == buttons[2][column]['text'] != "":
  33.             buttons[0][column].config(bg="green")
  34.             buttons[1][column].config(bg="green")
  35.             buttons[2][column].config(bg="green")
  36.             return True

  37.     if buttons[0][0]['text'] == buttons[1][1]['text'] == buttons[2][2]['text'] != "":
  38.         buttons[0][0].config(bg="green")
  39.         buttons[1][1].config(bg="green")
  40.         buttons[2][2].config(bg="green")
  41.         return True

  42.     elif buttons[0][2]['text'] == buttons[1][1]['text'] == buttons[2][0]['text'] != "":
  43.         buttons[0][2].config(bg="green")
  44.         buttons[1][1].config(bg="green")
  45.         buttons[2][0].config(bg="green")
  46.         return True

  47.     elif empty_spaces() is False:

  48.         for row in range(3):
  49.             for column in range(3):
  50.                 buttons[row][column].config(bg="yellow")
  51.         return "Tie"

  52.     else:
  53.         return False


  54. def empty_spaces():

  55.     spaces = 9

  56.     for row in range(3):
  57.         for column in range(3):
  58.             if buttons[row][column]['text'] != "":
  59.                 spaces -= 1

  60.     if spaces == 0:
  61.         return False
  62.     else:
  63.         return True


  64. def new_game():

  65.     global player

  66.     player = random.choice(players)

  67.     label.config(text=player+" turn")

  68.     for row in range(3):
  69.         for column in range(3):
  70.             buttons[row][column].config(text="", bg="#F0F0F0")

  71. window = Tk()
  72. window.title("Tic-Tac-Toe")
  73. players = ["x", "o"]
  74. player = random.choice(players)
  75. buttons = [[0,0,0],
  76.            [0,0,0],
  77.            [0,0,0]]

  78. label = Label(text= player + " turn", font=('consolas',40))
  79. label.pack(side="top")

  80. reset_button = Button(text="restart", font=('consolas',20), command=new_game)
  81. reset_button.pack(side="top")

  82. frame= Frame(window)
  83. frame.pack()

  84. for row in range(3):
  85.     for column in range(3):
  86.         buttons[row][column] = Button(frame, text="", font=('consolas',20), width=5, height=2,
  87.                                       command= lambda row=row, column=column: next_turn(row, column))
  88.         buttons[row][column].grid(row=row, column=column)

  89. window.mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-15 13:39:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-15 21:18:28 | 显示全部楼层
已解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-19 13:48:48 | 显示全部楼层
好吧,其实是这个,前面的中间漏了一行update代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-19 13:49:18 | 显示全部楼层
  1. from tkinter import *
  2. import random

  3. def next_turn(row, column):

  4.     global player

  5.     if buttons[row][column]['text'] == "" and check_winner() is False:

  6.         if player == players[0]:

  7.             buttons[row][column]['text'] = player

  8.             if check_winner() is False:
  9.                 player = players[1]
  10.                 label.config(text=(players[1]+" turn"))

  11.             elif check_winner() is True:
  12.                 label.config(text=(players[0]+" wins"))

  13.             elif check_winner() == "Tie":
  14.                 label.config(text="Tie!")

  15.         else:

  16.             buttons[row][column]['text'] = player

  17.             if check_winner() is False:
  18.                 player = players[0]
  19.                 label.config(text=(players[0]+" turn"))

  20.             elif check_winner() is True:
  21.                 label.config(text=(players[1]+" wins"))

  22.             elif check_winner() == "Tie":
  23.                 label.config(text="Tie!")

  24. def check_winner():

  25.     for row in range(3):
  26.         if buttons[row][0]['text'] == buttons[row][1]['text'] == buttons[row][2]['text'] != "":
  27.             buttons[row][0].config(bg="green")
  28.             buttons[row][1].config(bg="green")
  29.             buttons[row][2].config(bg="green")
  30.             return True

  31.     for column in range(3):
  32.         if buttons[0][column]['text'] == buttons[1][column]['text'] == buttons[2][column]['text'] != "":
  33.             buttons[0][column].config(bg="green")
  34.             buttons[1][column].config(bg="green")
  35.             buttons[2][column].config(bg="green")
  36.             return True

  37.     if buttons[0][0]['text'] == buttons[1][1]['text'] == buttons[2][2]['text'] != "":
  38.         buttons[0][0].config(bg="green")
  39.         buttons[1][1].config(bg="green")
  40.         buttons[2][2].config(bg="green")
  41.         return True

  42.     elif buttons[0][2]['text'] == buttons[1][1]['text'] == buttons[2][0]['text'] != "":
  43.         buttons[0][2].config(bg="green")
  44.         buttons[1][1].config(bg="green")
  45.         buttons[2][0].config(bg="green")
  46.         return True

  47.     elif empty_spaces() is False:

  48.         for row in range(3):
  49.             for column in range(3):
  50.                 buttons[row][column].config(bg="yellow")
  51.         return "Tie"

  52.     else:
  53.         return False


  54. def empty_spaces():

  55.     spaces = 9

  56.     for row in range(3):
  57.         for column in range(3):
  58.             if buttons[row][column]['text'] != "":
  59.                 spaces -= 1

  60.     if spaces == 0:
  61.         return False
  62.     else:
  63.         return True

  64. def new_game():

  65.     global player

  66.     player = random.choice(players)

  67.     label.config(text=player+" turn")

  68.     for row in range(3):
  69.         for column in range(3):
  70.             buttons[row][column].config(text="", bg="#F0F0F0")


  71. window = Tk()
  72. window.title("Tic-Tac-Toe")
  73. players = ["x", "o"]
  74. player = random.choice(players)
  75. buttons = [[0,0,0],
  76.            [0,0,0],
  77.            [0,0,0]]

  78. label = Label(text=player + " turn", font=('consolas',40))
  79. label.pack(side="top")

  80. reset_button = Button(text="restart", font=('consolas',20), command=new_game)
  81. reset_button.pack(side="top")

  82. frame = Frame(window)
  83. frame.pack()

  84. for row in range(3):
  85.     for column in range(3):
  86.         buttons[row][column] = Button(frame, text="", font=('consolas',40), width=5, height=2,
  87.                                       command= lambda row=row, column=column: next_turn(row, column))
  88.         buttons[row][column].grid(row=row, column=column)

  89. window.mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 19:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表