我正在尝试制作一个摩天轮动画(在实践中用于面向对象的编程),但我正在努力让车轮转向。
#ferris wheel(circle)
pygame.draw.circle(screen, blue, [250,250],150, 8)
#carriage
pygame.draw.polygon(screen, yellow, [[220+cx,385+cy],[280+cx,385+cy],[270+cx,400+cy],[230+cx,400+cy]],0)
def carriagemovement(top,bottom):
global cx
global cy
top = 0
bottom = 1
if bottom == 1:
if cx == 0 or cx < 80:
cx = cx + 4
cy = cy - 1
print(cx)
else:
if bottom == 1:
if cx == 80 or ( cx > 80 and cx < 148):
cx = cx + 4
cy = cy - 3
print (cx)
else:
if bottom ==1:
if cx == 148 or (cx > 148 and cx < 159):
cx = cx + 0.5
cy = cy - 3
print (cx)
else:
top = 1
bottom = 0
if top == 1:
if (cx == 159 and top == 1) or (cx < 159 and top == 1):
cx = cx - 0.5
cy = cy - 3
print (cx)
carmovement()就是我现在正在做的方式(但是由于if语句而且由于我修正了它(使用顶部和底部),它会离开圆圈,它只是停止了)。
是否有一个我不使用的功能或方法会让它变得更容易?还有另一种方式吗?
感谢!!!
答案 0 :(得分:0)
将问题从“x,y”笛卡尔坐标转换为“角度,距离”极坐标可能更直观。然后围绕圆圈移动,您只需增加角度。如果你想从中获得x,y值,你可以使用三角函数(正弦/余弦)简单地转换它们。