所以我有这两个代码块,这两个代码块都是为了将甲壳虫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)
简而言之,它会检查窗户上甲虫的位置,并相应地移动它。
现在,这是我的原始代码,DID不起作用:
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变量,用于确定设定方向的速度。
答案 0 :(得分:2)
第二个版本受到更多限制 - 只有4个点可以移动甲壳虫。
(400,200), (400,100), (600,200), (600,100)
在第一个版本中,有数百个点可以移动甲壳虫。
(400,0)...(400,screen_height)
,(600,0)...(600,screen_height)
- 垂直线
(0,100)...(screen_width,100)
,(0,200)...(screen_width,200)
- 水平线
因为Beetle在5像素之后停止: