如何在我的Tkinter游戏中检查游戏板状态?

时间:2020-08-19 23:14:36

标签: python tkinter tic-tac-toe

我目前正在与tkinter一起进行2人井字游戏,但是截至目前,我不知道如何检查董事会是否有获胜情况或何时告诉胜利者他们已经获胜。 / p>

  <MediaElement
    x:Name="videoPlayer"
    Grid.Row="0"
    Aspect="AspectFit"
    BackgroundColor="Black"
    ShowsPlaybackControls="True"
    Source="https://vod-progressive.akamaized.net/exp=1598157872~acl=%2Fvimeo-prod-skyfire-std-us%2F01%2F1825%2F17%2F434126696%2F1890592390.mp4~hmac=a0ac67f23fdd68df9d16fb2db33e8b2b00d0dc3626375d2a4c6ba7a5203b935e/vimeo-prod-skyfire-std-us/01/1825/17/434126696/1890592390.mp4" />

我在那里删除了一些功能,因为这些不是问题,主要的问题是控制流程。

我的第一步是尝试进行检查,但是我不知道应该在代码中的什么位置放置

因此,总结一下我的问题,Tkinter中有一个using (var objClient = new WebClient()) { string strResponse = objClient.DownloadString("http://player.vimeo.com/video/434126696/config"); } 函数应该遍历整个代码。但是,我在其中键入的所有内容,即 $ (function (){ $("#stillToDo").sortable({ connectWith: "#finished" }); $("#finished").sortable({ connectWith: "#stillToDo" }); $("#newItemBtn").click(function(){ let newInput = $("#newItem").val(); $("#stillToDo").append("<li>" + newInput + "</li>"); $("#newItem").val(""); $("#lastUpdated").text("Last updated " + Date()); }) $("#newItem").keypress(function(event){ let newInput = $("#newItem").val(); let keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13'){ $("#stillToDo").append("<li>" + newInput + "</li>"); $("#newItem").val(""); $("#lastUpdated").text("Last updated " + Date()); } }); $("#allFinished").click (function(){ $("#finished").append($("#stillToDo")) }); });语句,只会执行一次。

1 个答案:

答案 0 :(得分:0)

按照@martineau的建议,单击按钮后即可检查面板。您可以使用二进制模式来检查获胜者。

尝试此代码。它会在面板上填充随机值,然后在您单击按钮时检查是否有获胜。

from tkinter import *
import random

root = Tk()
twod = [[0 for x in range(3)] for y in range(3)]  # 0 will be blank 1 will be circle 2 will be x
rows = 0
columns = 0
types = "X"

btnlst = []

def CheckWin():
  wins = [0b111000000,0b000111000,0b000000111,0b100010001,0b001010100,0b100100100,0b010010010,0b001001001]  # all possible win patterns
  for p in ['X','O']:  # check each player
     m = int("".join(['1' if b['text'] == p else '0' for b in btnlst]),2) # merge button values into single binary value
     for w in wins: # check each pattern
        if w & m == w:  # if pattern matches  (binary and)
           print(p, 'wins')
           return
  print('No Winner')
  
def click(evt):
  CheckWin()

for x in twod:   
    for y in x:
        butt = Button(text=' ', width=20, height=10)
        twod[columns][rows]= butt
        butt.config(text=random.choice(['X','O']), width=20, height=10, command=lambda butt=butt : click(butt)) 
               
        butt.grid(row=rows, column=columns)
        btnlst.append( butt)
        columns += 1
    rows += 1
    columns = 0
root.mainloop()