我创造了一个小游戏,但我遇到了一些问题。
以下是代码:http://pastebin.com/XkSvLAHS
所以,有一个球应该在画布上随机移动,但我现在不知道如何做到这一点。 我有这个:
def move_ball_right_down():
global x, y, dx, dy
x, y = x + dx, y + dy
can.coords(ball, x-r, y-r, x+r, y+r)
def move_ball_left_up():
global x, y, dx, dy
x, y = x - dx, y - dy
can.coords(ball, x-r, y-r, x+r, y+r)
但是有了这个,球只会从一个角落到另一个角落,但它应该随机移动。
我还有另外一个问题:
def click_ball(event):
global x, y, points, ball, r, dx, flag
if flag == 1 and\
event.x <= x + r and event.x >= x - r and\
event.y <= y + r and event.y >= y - r:
这些线假设检测球,所以当我点击它时我得到一个点,但它不仅选择球,而且选择围绕它的正方形,我确信有更好的方法来检测球。我该怎么办?
答案 0 :(得分:0)
对于您的第一个问题,为什么不随机化x和y,忘记dx
和dy
?
def move_ball_right_down():
global x, y
x, y = randrange(0, 400), randrange(0, 400) # Randomize x and y (note that you should substitute your max and min canvas coordinate values if you want the ball to stay in view.
can.coords(ball, x-r, y-r, x+r, y+r)
关于第二个问题,如果您希望用户必须单击球本身,而不是单击边界矩形上的任何位置,请将最后if
语句更改为:
if flag == 1 and ((event.x-x)**2 + (event.y-y)**2) <= r**2:
这基本上是毕达哥拉斯公式,表明点(event.x,event.y)和(x,y)之间的距离小于或等于r。