问题描述
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()