[英]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.