J'ai une tâche où je dois faire apparaître 3 ennemis à des positions aléatoires, mais je n'arrive à faire apparaître qu'un seul ennemi, quelqu'un peut-il m'aider ?
import pygame
import random
# Initialize the pygame modules to get everything started.
pygame.init()
# The screen that will be created needs a width and a height.
screen_width = 1300
screen_height = 800
screen = pygame.display.set_mode((screen_width, screen_height))
# This creates the player and gives it the image found in this folder.
player = pygame.image.load("player.jpg")
# Creating multiple enemies
enemy = []
enemy_height = []
enemy_width = []
enemyXPosition = []
enemyYPosition = []
num_enemies = 3
for i in range(num_enemies):
enemy.append().image.load("monster.jpg")
enemyheight = enemy.get_height()
enemywidth = enemy.get_width()
enemyXPosition = random.randint(1100, screen_width)
enemyYPosition = random.randint(0, screen_height - enemyheight)
# Get the width and height of the images in order to do boundary detection (i.e. make sure the image stays within screen boundaries or know when the image is off the screen).
image_height = player.get_height()
image_width = player.get_width()
print("This is the height of the player image: " + str(image_height))
print("This is the width of the player image: " + str(image_width))
# Store the positions of the player as variables.
playerXPosition = 100
playerYPosition = 50
# Creating conditions for game to run
keyUp = False
keyDown = False
keyLeft = False
keyRight = False
# The game loop for running game till told to stop and drawing player and enemy
while 1:
screen.fill(0)
screen.blit(player, (playerXPosition, playerYPosition))
screen.blit(enemies[i], (enemiesXPosition[i], enemiesYPosition[i]))
pygame.display.flip()
# This loops through events in the game.
for event in pygame.event.get():
# This event checks if the user quits the program, then if so it exits the program.
if event.type == pygame.QUIT:
pygame.quit()
exit(0)
# Event for Key presses
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
keyUp = True
if event.key == pygame.K_DOWN:
keyDown = True
if event.key == pygame.K_LEFT:
keyLeft = True
if event.key == pygame.K_RIGHT:
keyRight = True
# Event to check if key is released
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
keyUp = False
if event.key == pygame.K_DOWN:
keyDown = False
if event.key == pygame.K_LEFT:
keyLeft = False
if event.key == pygame.K_RIGHT:
keyRight = False
# Checks which keys are pressed and moves player accordingly
if keyUp == True:
if playerYPosition > 0:
playerYPosition -= 1
if keyDown == True:
if playerYPosition < screen_height - image_height:
playerYPosition += 1
if keyLeft == True:
if playerXPosition > 0:
playerXPosition -= 1
if keyRight == True:
if playerXPosition < screen_width - image_width:
playerXPosition += 1
# Bounding box for the player:
playerBox = pygame.Rect(player.get_rect())
playerBox.top = playerYPosition
playerBox.left = playerXPosition
# Make enemy approach the player.
for i in range(num_enemies):
enemiesXPosition[i] -= 0.15
# Bounding box for the enemy:
enemyBox = pygame.Rect(enemies[i].get_rect())
enemyBox.top = enemiesYPosition[i]
enemyBox.left = enemiesXPosition[i]
#Test collision of the boxes:
if playerBox.colliderect(enemyBox):
print("You lose!")
# If the enemy is off the screen the user wins the game:
if enemiesXPosition[i] < 0 - enemy_width[i]:
print("You win!")