Les objets mobiles aléatoires rendent les jeux plus excitants et stimulants. Apprenez à l'intégrer dans vos projets Pygame.

Pygame, une bibliothèque Python populaire pour le développement de jeux, vous permet de créer facilement des jeux passionnants et interactifs. Une façon d'améliorer vos créations Pygame consiste à ajouter des objets mobiles aléatoires. Ces objets peuvent être des obstacles, des ennemis, des power-ups ou tout ce qui ajoute du dynamisme à votre monde de jeu.

Créer un jeu simple

Commencez par configurer une fenêtre Pygame de base et ajoutez un objet joueur avec certaines plates-formes. Vous pouvez également implémenter le mouvement de base du joueur en utilisant les touches fléchées ou utilisation des entrées tactiles.

Le code utilisé dans cet article est disponible dans ce Référentiel GitHub et est libre d'utilisation sous la licence MIT.

Créer un nouveau fichier nommé jeu-simple.py et ajoutez le code de votre jeu de base.

Ajouter plusieurs objets en mouvement

Maintenant que vous avez un jeu simple avec un objet joueur et des plates-formes, ajoutez plusieurs objets mobiles aléatoires au jeu. Ces objets se déplaceront horizontalement sur l'écran à différentes vitesses.

object_width, object_height = 30, 30
object_speed_range = (2, 7)
objects = []

defcreate_random_object():
return {
'x': random.randint(0, screen_width - object_width),
'y': random.randint(0, screen_height - object_height),
'speed': random.randint(*object_speed_range)
}

for _ in range(5):
objects.append(create_random_object())

defdraw_object(obj):
obj_dim = (obj['x'], obj['y'], object_width, object_height)
pygame.draw.rect(screen, WHITE, obj_dim)

# Game loop
while running:
screen.fill((0, 0, 0))

#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Ci-dessous la sortie :

Implémenter l'algorithme de mouvement aléatoire

Actuellement, vos objets mobiles aléatoires se déplacent uniquement sur une ligne horizontale droite. Pour rendre leur mouvement plus imprévisible, vous pouvez ajouter un algorithme de mouvement aléatoire.

# Random Movement Algorithm
defupdate_random_movement(obj):
# Change the direction randomly
if random.random() < 0.01:
obj['speed'] = -obj['speed']

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Faire bouger les objets vers le joueur

Pour ajouter plus de complexité au jeu, vous pouvez introduire des objets qui se déplacent vers le joueur. Vous pouvez y parvenir en calculant l'angle entre l'objet et le joueur et en ajustant la position de l'objet en conséquence.

import math

# Objects Moving Towards Player
defmove_towards_player(obj):
player_center_x = player_x + player_width // 2
player_center_y = player_y + player_height // 2
object_center_x = obj['x'] + object_width // 2
object_center_y = obj['y'] + object_height // 2

angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_x

angle = math.atan2(angle1, angle2)
obj['x'] += obj['speed'] * math.cos(angle)
obj['y'] += obj['speed'] * math.sin(angle)

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

move_towards_player(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Faire bouger les objets uniquement lorsque le joueur pénètre dans les environs

Au lieu d'avoir tous les objets en mouvement depuis le début, vous pouvez permettre aux objets de commencer à se déplacer uniquement lorsque le joueur entre dans leur environnement.

# Objects Start to Move When Player Enters Surroundings
surrounding_distance = 150

defshould_start_moving(obj):
surrounded1 = abs(obj['x'] - player_x) < surrounding_distance
surrounded2 = abs(obj['y'] - player_y) < surrounding_distance
return surrounded1 or surrounded2

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Détection de collision et interaction

Pour rendre le jeu encore plus attrayant, vous pouvez ajouter la détection de collision entre le joueur et les objets en mouvement. Par exemple, vous pouvez supprimer un objet de l'écran lorsque le joueur entre en collision avec lui.

# Collision Detection and Interaction
defis_collision(obj):

condition1 = player_x + player_width > obj['x']
condition2 = player_x < obj['x'] + object_width
condition3 = player_y + player_height > obj['y']
condition4 = player_y < obj['y'] + object_height
return ( condition1 and condition2 and condition3 and condition4)

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

if is_collision(obj):
objects.remove(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Inclure des fonctionnalités supplémentaires

L'ajout d'objets mobiles aléatoires peut servir de base à la mise en œuvre de diverses fonctionnalités intéressantes dans votre Pygame. Voici quelques idées supplémentaires pour faire passer votre jeu au niveau supérieur :

Notation et progression

Attribuez différents scores aux objets en fonction de leur niveau de difficulté ou de leur rareté. Vous pouvez créer et afficher un système de notation qui récompense les joueurs pour avoir réussi à naviguer à travers des objets en mouvement ou à collecter des objets spéciaux.

Implémentez un suivi de progression qui augmente la difficulté du jeu à mesure que les joueurs obtiennent des scores plus élevés, les gardant engagés et motivés à s'améliorer.

Power-ups et bonus

Créez des objets spéciaux qui accordent au joueur des avantages temporaires lorsqu'ils sont récupérés. Ces bonus peuvent inclure une vitesse accrue, l'invincibilité ou même la capacité de geler ou de détruire temporairement d'autres objets.

Soyez créatif avec les effets de ces power-ups pour ajouter une profondeur stratégique au gameplay.

IA et comportement de l'ennemi

Concevez des modèles de mouvement plus sophistiqués pour les objets ennemis afin de les rendre plus difficiles à éviter pour les joueurs. Implémentez des algorithmes d'IA simples pour que les ennemis poursuivent le joueur intelligemment ou se déplacent selon des schémas coordonnés.

La variation des comportements ennemis gardera les joueurs sur leurs gardes et empêchera le jeu de devenir monotone.

Objets de collection et récompenses

Dispersez des objets de collection dans le monde du jeu. Il peut s'agir de pièces de monnaie, de pierres précieuses ou de tout autre objet thématique. Lorsque le joueur récupère un certain nombre de ces objets, il peut débloquer de nouveaux niveaux, personnages ou même des fonctionnalités secrètes dans le jeu.

Meilleures pratiques pour l'ajout d'objets mobiles aléatoires

Lors de l'incorporation d'objets mobiles aléatoires dans votre Pygame, suivre ces meilleures pratiques vous aidera à créer une expérience de jeu bien équilibrée et raffinée :

Difficulté d'équilibrage

La vitesse et les schémas de mouvement des objets en mouvement aléatoire doivent être soigneusement équilibrés pour fournir un défi équitable. Évitez de faire bouger les objets trop rapidement ou de manière erratique, car cela pourrait frustrer les joueurs et rendre le jeu injuste.

D'un autre côté, des objets trop lents peuvent rendre le jeu trop facile et moins engageant.

Optimisation des performances

Si votre jeu comprend un grand nombre d'objets mobiles aléatoires ou des algorithmes de mouvement complexes, envisagez d'optimiser le code pour améliorer les performances. Utilisez des structures de données et des algorithmes efficaces pour gérer les collisions et les calculs de mouvement.

Minimisez les calculs inutiles pour garantir un gameplay fluide et réactif, en particulier sur les appareils plus anciens ou moins puissants.

Tests et ajustements

Testez soigneusement votre jeu avec différents scénarios pour vous assurer que les objets en mouvement aléatoires interagissent correctement avec les autres éléments du jeu. Testez les collisions, les interactions avec le joueur et tout comportement de mouvement spécial.

Ajustez la vitesse, le comportement et les modèles des objets en fonction des commentaires des tests de jeu pour obtenir une expérience de jeu optimale.

Aléatoire avec contrôle

Bien que le terme "aléatoire" soit utilisé pour ces objets en mouvement, avoir un caractère complètement aléatoire n'est pas toujours souhaitable. Envisagez d'incorporer un caractère aléatoire contrôlé, où certains mouvements ou schémas sont définis dans une plage ou un ensemble de possibilités.

Le caractère aléatoire contrôlé garantit que le jeu reste stimulant et agréable sans devenir trop chaotique.

Rendre les jeux plus attrayants avec des objets en mouvement aléatoires

Les objets mobiles aléatoires ajoutent un élément de surprise et d'imprévisibilité à votre jeu, le rendant plus dynamique et engageant. Ils gardent les joueurs sur leurs gardes, nécessitant des réflexes rapides et une réflexion stratégique. De plus, la variété des mouvements et des interactions avec ces objets garantit qu'il n'y a pas deux expériences de jeu identiques.