我正在做一场国际象棋比赛。当ai评估位置时,我希望使用允许ai占用的最大时间的当前百分比来更新画布。有办法这样做吗?
编辑:这里是我的代码的基本示例:
def find_move():
piece, old_x, old_y, new_x, new_y = self.ai.make_move(args)这就调用了一个单独的ai类,它找到了最好的移动。如何使用经过的变量self?maximum_time_for_ai的当前百分比更新画布。这应该运行到最长时间已经过去或ai已经完成评估。
发布于 2018-06-19 18:31:33
下面是一个例子,说明我们如何使用定时交互来更新标签。我已经为GUI设置了我的主类,第二类是我们的计时器。在第二个类中,有一个名为update_per_sec的方法,我们在这里所做的是每秒钟更新画布中标签上的% 10次。在这个函数中,您可以跟踪新生成的移动。
现在,我的例子并不适用于AI,因为我不知道该代码是什么样子,但应该足够您修改这段代码以满足您的需要。
import tkinter as tk
import string
import random
class Welcome(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry("500x200")
self.columnconfigure(0, weight=1)
self.canvas = tk.Canvas(width=300, height=300, bg='white')
self.canvas.pack(expand=True, fill="both")
self.lbl = tk.Label(self.canvas, text="0% complete!")
self.lbl.pack()
self.new_move = ()
tk.Button(self, text="Start", command=lambda: TestCode(self)).pack()
class TestCode():
def __init__(self, master):
self.master = master
self.time_track = 0
self.update_per_sec()
self.new_move = ()
def update_per_sec(self):
if self.time_track != 100:
self.master.lbl.config(text="{}% complete!".format(self.time_track))
self.time_track += 1
self.new_move = (random.choice(string.ascii_uppercase), random.choice(string.digits))
self.master.after(100, self.update_per_sec)
else:
self.master.new_move = self.new_move
self.master.lbl.config(text="Complete!, New move is: {}".format(self.new_move))
b = Welcome()
b.mainloop()https://stackoverflow.com/questions/50934201
复制相似问题