<p>所以我有这些敌人,他们应该像旧街机游戏《机器人战机》中的那样,对玩家施展拳脚。在</p>
<p>问题是,只有几个敌人会去追那个玩家,而其他的敌人只是站在周围,也许会有更多的敌人来追这个玩家。这是怎么回事?在</p>
<p>以下是移动敌人的代码:</p>
<pre><code>class Beetle(pygame.sprite.Sprite):
'''class that builds up the player class'''
x_speed = 0
y_speed = 0
#Beetle construction stuff (images, goes here)
.
.
.
def speedChange(self,x,y):
self.x_speed += x
self.y_speed += y
def move_towards_player(self, player):
#contains the beetle to the screen
self.rect.clamp_ip(screen_rect)
# find normalized direction vector (dx, dy) between enemy and player
dx, dy = self.rect.x - player.rect.x, self.rect.y - player.rect.y
dist = math.hypot(dx, dy)
if dist == 0: #prevents a divide by zero erro
dist = 1
else:
dx, dy = dx / dist, dy / dist
# move along this normalized vector towards the player at current speed
self.rect.x += dx * self.x_speed
self.rect.y += dy * self.y_speed
while done == False:
while beetleCount < 10:
beetle = Beetle() #make a beetle
random1 = randint(0, width -1 ) #make random positions for the beetle
random2 = randint(0, height - 1)
beetle.rect.x = random1 #make new random nums
beetle.rect.y = random2
beetle_list.add(beetle) #add beetle to list
all_sprites_list.add(beetle)
beetleCount += 1 #increment count'''
for bug in beetle_list:
random1 = randint(-1, 1)
if random1 != 0:
random2 = randint(-1, 1)
else:
random2 = 0
bug.speedChange(random1, random2)
bug.move_towards_player(player)
</code></pre>
<p>以下是整个代码,供参考:</p>
^{pr2}$