Python 让球永远在屏幕上弹跳? 从Tkinter导入* window=Tk() 画布=画布(窗口,宽度=500,高度=500,背景=“绿色”) canvas.pack() x0=225 y0=225 x1=275 y1=275 速度x=2 速度y=3 ball=canvas.创建椭圆(x0,y0,x1,y1,fill=“blue”,tag='ball') 尽管如此: 画布移动(“球”,速度x,速度y) 画布。之后(30) canvas.update() 如果x1>=500: 速度x=-2 如果x0=0: 速度y=2 如果y0
您的问题是一个非常简单的逻辑问题 这是你写的:Python 让球永远在屏幕上弹跳? 从Tkinter导入* window=Tk() 画布=画布(窗口,宽度=500,高度=500,背景=“绿色”) canvas.pack() x0=225 y0=225 x1=275 y1=275 速度x=2 速度y=3 ball=canvas.创建椭圆(x0,y0,x1,y1,fill=“blue”,tag='ball') 尽管如此: 画布移动(“球”,速度x,速度y) 画布。之后(30) canvas.update() 如果x1>=500: 速度x=-2 如果x0=0: 速度y=2 如果y0,python,tkinter,Python,Tkinter,您的问题是一个非常简单的逻辑问题 这是你写的: from Tkinter import * window = Tk() canvas = Canvas(window, width=500, height=500, background="green") canvas.pack() x0 = 225 y0 = 225 x1 = 275 y1 = 275 speed_x = 2 speed_y = 3 ball = canvas.create_oval(x0,y0,x1,y1,fill="blu
from Tkinter import *
window = Tk()
canvas = Canvas(window, width=500, height=500, background="green")
canvas.pack()
x0 = 225
y0 = 225
x1 = 275
y1 = 275
speed_x = 2
speed_y = 3
ball = canvas.create_oval(x0,y0,x1,y1,fill="blue", tag='ball')
while True:
canvas.move('ball', speed_x, speed_y)
canvas.after(30)
canvas.update()
if x1 >= 500:
speed_x = -2
if x0 <= 500:
speed_y = -3
if y1 >= 0:
speed_y = 2
if y0 <= 0:
speed_x = 3
x0 += speed_x
x1 += speed_x
y0 += speed_y
y1 += speed_y
mainloop()
如果x1>=宽度:速度x=-速度
如果x0 0:speed_y=速度
如果y0<0:速度x=(速度+1)
我们想说的是,如果我们在任何边界条件之外,沿着适当的分量反转我们的速度
可能您会立即怀疑您从未根据高度检查y位置,或者怀疑您正在根据x位置调整y速度。不管怎样,都要多疑
这是你写的,按顺序
if x1 >= WIDTH: speed_x = -velocity
if x0 <= WIDTH: speed_y = -(velocity+1)
if y1 > 0: speed_y = velocity
if y0 < 0: speed_x = (velocity+1)
如果x1>=宽度:速度x=-速度
如果x0=高度:速度×y=-速度
如果你能在你的问题中贴上代码,你知道吗?没有人想通过链接找到你的问题。还有,你要求我们为你做这件事?描述一下你遇到的问题以及你是如何解决的。哦,对不起。我是这个网站的新手,所以我不确定,我通常在提问时使用reddit,你不能在那里发布你的代码。我会解决的。另外,我只是想得到一些提示,因为我完全迷路了。我一直在想办法解决这个问题,但一无所获。如果您能给我一些提示和建议,我将不胜感激。您需要用最大窗口大小修改x和y坐标,以便“环绕”窗口。弹跳需要在窗口的每一个边缘都有一个if语句来反转球的方向谢谢,我现在明白坐标的工作原理了。不过,还有一个问题我似乎无法解决。我将您正在谈论的代码部分基本上更改为您所编写的代码。它看起来应该可以工作,y0是椭圆形的顶部,当它达到0时,它应该朝相反的方向运动。这一次我做错了什么?@Astrophere发生了什么事?我只是用我在回答中建议的条件(看起来确实像你在评论中写的那样)运行它,它反弹得很好。我仍在试图找出如何将代码放入评论中,对此表示抱歉。由于某种原因,当我测试球时,球不会从顶壁反弹。我不知道为什么。我把问题中的代码编辑成现在的代码,你看到错误了吗?在我看来它是正确的。请撤消该编辑;如果你像这样编辑你的原始问题,那么我的答案看起来像胡说八道,未来的读者将无法得到帮助(这是网站的重点,当然是在帮助你之后)。完全按照现在编写的方式运行代码,我这边没有跳转问题。
if x1 >= WIDTH: speed_x = -velocity
if x0 <= 0: speed_x = velocity
if y1 >= HEIGHT: speed_y = -velocity
if y0 <= 0: speed_y = velocity