如何解决Pygame 创造无限数量的敌人
class Enemy:
def __init__(self,x,y):
self.x = x
self.y = y
self.speedx = 10
self.speedy = 10
self.randomint = random.randint(0,3)
def draw(self,screen):
screen.blit(enemyImage,(self.x,self.y))
def move(self):
if self.randomint == 0:
self.x -= self.speedx
self.y -= self.speedy
if self.randomint == 1:
self.x += self.speedx
self.y -= self.speedy
if self.randomint == 2:
self.x -= self.speedx
self.y += self.speedy
if self.randomint == 3:
self.x += self.speedx
self.y += self.speedy
if self.x == 0 or self.x == 768:
self.speedx = -self.speedx
if self.y == 0 or self.y == 568:
self.speedy = -self.speedy
def drawGame():
screen.fill((255,255,255))
robot.draw(screen)
for bullet in robot.bullets:
bullet.drawBullet()
for enemy in enemies:
enemy.draw(screen)
pygame.time.delay(30)
pygame.display.update()
robot = Player(400,300)
enemies = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
enemy = Enemy(400,200)
enemies.append(enemy)
for enemy in enemies:
enemy.move()
userInput = pygame.key.get_pressed()
robot.shoot()
robot.movePlayer(userInput)
drawGame()
我认为这部分代码对确定我的问题很有用。运行此代码会在指定的 x 和 y 值处无限生成敌人。由于我只调用 Enemy 类的一个实例,我认为只有一个敌人会以随机移动方向生成。为什么会发生这种情况?谢谢
解决方法
您的问题似乎是由在您拥有的“运行时:”循环中调用敌人类引起的,这意味着对于该游戏循环的每次迭代,它都会无休止地生成敌人。调用敌人类并将其附加到该循环之外的列表中应该可以解决问题
robot = Player(400,300)
enemy = Enemy(400,200)
enemies = []
enemies.append(enemy)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
for enemy in enemies:
enemy.move()
userInput = pygame.key.get_pressed()
robot.shoot()
robot.movePlayer(userInput)
drawGame()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。