那么为什么这个Pygame move代码能工作,而不是这个呢?

2024-05-16 11:17:02 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这两段代码,它们都是用来移动一个甲壳虫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变量,用于确定设定方向上的速度。你知道吗


Tags: and代码rectselfif屏幕defupdate
1条回答
网友
1楼 · 发布于 2024-05-16 11:17:02

第二个版本更受限制-只有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像素后停止,所以:

  • 在第二个版本-在第一次移动后,甲虫不是在4点之一,使另一个 快走。你知道吗
  • 在第一个版本-甲虫仍然在垂直/水平线上,它可以做另一个动作。你知道吗

相关问题 更多 >