所以我有这两段代码,它们都是用来移动一个甲壳虫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\u speed和y\u speed是甲壳虫类中的int变量,用于确定设定方向上的速度。你知道吗
第二个版本更受限制-只有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)
-水平线因为甲壳虫在5像素后停止,所以:
相关问题 更多 >
编程相关推荐