【发布时间】:2013-12-17 15:35:46
【问题描述】:
所以我有这两个代码块,这两个代码块都是为了让甲虫 NPC 绕着屏幕转一圈。
第一个效果很好。
##beetle moving code
if beetle_list[0].rect.x == 400:
beetle_list[0].speedChange(0,-5)
beetle_list[0].update()
beetle_list[0].speedChange(0, 5)
if beetle_list[0].rect.y == 100:
beetle_list[0].speedChange(5,0)
beetle_list[0].update()
beetle_list[0].speedChange(-5,0)
if beetle_list[0].rect.x == 600:
beetle_list[0].speedChange(0, 5)
beetle_list[0].update()
beetle_list[0].speedChange(0, -5)
if beetle_list[0].rect.y == 200:
beetle_list[0].speedChange(-5,0)
beetle_list[0].update()
beetle_list[0].speedChange(5,0)
简而言之,它会检查甲虫在窗户上的位置,并相应地移动它。
现在,这是我的原始代码,它不起作用:
if beetle_list[0].rect.x == 400 and beetle_list[0].rect.y == 200:
beetle_list[0].speedChange(0,-5)
beetle_list[0].update()
beetle_list[0].speedChange(0, 5)
if beetle_list[0].rect.y == 400 and beetle_list[0].y == 100:
beetle_list[0].speedChange(5,0)
beetle_list[0].update()
beetle_list[0].speedChange(-5,0)
if beetle_list[0].rect.x == 600 and beetle_list[0].y == 100:
beetle_list[0].speedChange(0, 5)
beetle_list[0].update()
beetle_list[0].speedChange(0, -5)
if beetle_list[0].rect.x == 600 and beetle_list[0].y == 200:
beetle_list[0].speedChange(-5,0)
beetle_list[0].update()
beetle_list[0].speedChange(5,0)
两者的区别在于后者也检查y坐标。但是甲虫永远不会移动。这是为什么呢?
这是甲壳虫类中的 speedChange 和 update def 供参考:
def speedChange(self,x,y):
self.x_speed += x
self.y_speed += y
def update(self):
self.rect.x += self.x_speed
self.rect.y += self.y_speed
请注意,x_speed 和 y_speed 是 Beetle 类中的 int 变量,用于确定设定方向的速度。
【问题讨论】:
-
在第二个代码的第一行检查你的
:。 (可能是错字) -
这是一个错字。我在测试代码时注释掉了后半部分,这就是我找到解决方案的方式。当我将其粘贴到此处时,我删除了评论,但忘记了这一点。感谢您指出。
-
第二个sn-p中的第二个
if。也许您的意思是beetlelist[0].x而不是beetlelist[0].y?
标签: python image animation python-2.7 pygame