python - 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()
推荐阅读
- javascript - Ng-repeat 列表,其中包含重复元素的许多值的次数
- java - UML 到 Java 代码 - 多重性指标和大写变量
- python - 由于 SSL 模块错误,Pip3 不起作用
- regex - 在 SQL 脚本中选择分号但在行尾排除分号
- javascript - 如何使用按钮将 PHP 数组导出到 csv 文件?
- legend - 图例与甜甜圈图 vega 重叠
- css - 对齐左侧的左侧元素和右侧的右侧元素
- javascript - 错误:不能在模块外使用导入?
- deployment - Scrum 方法中如何处理部署过程?
- javascript - 如何使用 css flex-wrap: wrap; 在 vanilla JavaScript 中制作 FLIP 动画?