繁体   English   中英

Zelle Graphics动画

[英]Zelle Graphics animation

我正在使用zelle图形在python中制作轮盘赌的简单程序。 我有下面的代码,我试图在两个圆圈(轨道)之间移动球。 有没有办法做到这一点。 我的想法是取消绘制(ball.undraw())并在.10秒的时间间隔(time.sleep(.10))中再次绘制它,但我不知道该如何进行数学计算,因此它会在轨道中移动。

从图形导入* def main():win = GraphWin()

Circle1 = Circle(Point(100,100),95) #Makes the first Circle
Circle1.draw(win)

Circle2 = Circle(Point(100,100),80) #Makes the second Circle
Circle2.draw(win) 

Ball = Circle(Point(100,12),5) #Makes the ball Circle
Ball.draw(win) 

win.getMouse()
win.close()

主要()

您正在寻找的方法是move(dx,dy)。

要计算球在每个方向上需要移动的距离,您必须找到球的新位置。 这些位置的x和y坐标将与将球连接到车轮中心的线的角度的正弦和余弦(从数学库中调用)相关。

x = radius*sin(angle)
y = radius*cos(angle)

注意:如果将坐标设置为(-100,-100,100,100),以便圆心在0,0,将使计算变得更加容易。

现在您有了球的新位置,球在每个方向上的移动距离将成为最终位置-初始位置。

Ball.move(x - Ball.getCenter().getX(), y - Ball.getCenter().getY())

将它们圈成一个圈并稳定地累积您的角度,您的球将沿着半径稳定地移动。

angle = 0
radius = 87
while angle < 360:
    x = radius*sin(angle)
    y = radius*cos(angle)
    Ball.move(x - Ball.getCenter().getX(), y - Ball.getCenter().getY())
    angle += 0.01

注意:angle = 360并不意味着旋转一圈,因为数学库中的默认角度单位是弧度。 如果您需要知道,则1转= 2 * pi,或大约6.28。

在循环中使用time.sleep()使其变慢,使其以您喜欢的任何速度运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM