回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在做一个猫和老鼠类型的游戏(只是为了好玩和学习绑定等),一个标签是由箭头键控制,另一个跟随它,追它慢一点。我决定添加一个奖励标签,它每x秒(目前每秒钟)在某个区域内随机生成。问题是,由于某些原因,这个额外的代码会使“猫”标签在陌生的地方追得更快、速度更快。你知道吗</p>
<p><strong>这是奖金标签生成代码:</strong></p>
<pre><code>def prizes():
ran1 = random.randint(0, 600)
ran2 = random.randint(0, 500)
prize = tk.Label(bg = 'red', text = 'Bonus')
prize.place(x = ran1, y = ran2)
root.after(1000, prizes)
</code></pre>
<p>我的ICT老师认为随机加速可能是由于主循环窗口的几何尺寸,我所做的是在运行代码时最大化窗口,这可能是原因吗?你知道吗</p>
<p><strong>尝试此代码并最大化窗口,运行一段时间(转到屏幕右侧,等待随机加速):</strong>
我为全局变量道歉,这只是一个好玩的游戏。你知道吗</p>
<pre><code>import tkinter as tk
import random
root = tk.Tk()
root.config(bg = 'yellow')
root.geometry("1350x720")
runner = tk.Label(text = 'Mouse', bg = 'green')
global no1
global no2
no1 = 400
no2 = 300
runner.place(x = no1, y = no2)
def leftbutton(event):
global no1
no1 -= 3
runner.place(x = no1, y = no2)
def rightbutton(event):
global no1
no1 += 3
runner.place(x = no1, y = no2)
def upbutton(event):
global no2
no2 -= 3
runner.place(x = no1, y = no2)
def downbutton(event):
global no2
no2 += 3
runner.place(x = no1, y = no2)
global num1
global num2
num1 = 50
num2 = 50
chaser = tk.Label(bg = 'lightblue', text = 'CAT')
chaser.place(x = num1, y = num2)
global var
var = 2
def prizes():
ran1 = random.randint(0, 600)
ran2 = random.randint(0, 500)
prize = tk.Label(bg = 'red', text = 'Bonus')
prize.place(x = ran1, y = ran2)
root.after(1000, prizes)
def start():
global var
if var == 2:
prizes()
begin.destroy()
var = 1
global num1
global num2
global no1
global no2
chaser.place(x = num1, y = num2)
if num1 > no1:
num1 -=1
if num1 < no1:
num1 += 1
if num2 > no2:
num2 -= 1
if num2 < no2:
num2 += 1
if num2 == no2 and num1 == no1:
root.destroy()
print('You Lose, GAME OVER')
else:
root.after(1, start)
begin = tk.Button(bg = 'pink', text = "BEGIN GAME", command = start)
begin.place(x = 1, y = 1)
root.bind("<Left>", leftbutton)
root.bind("<Right>", rightbutton)
root.bind("<Up>", upbutton)
root.bind("<Down>", downbutton)
root.mainloop()
</code></pre>
<p><strong>但是,当你省略函数<code>prizes</code>和调用它的那一行时,你会得到一只完美的追逐猫,它不会加速。</strong>为什么顶部的奖品函数会使“猫”标签加速?你知道吗</p>
<p>提前干杯</p>