frogGame
Deutsch   English   Français   

JEU DE LA GRENOUILLE (FROG GAME)

 

 

DESCRIPTION DU JEU

 

Une grenouille doit traverser deux routes sans se faire écraser par les voitures. Dans notre version du jeu, lorsqu'elle entre en collision avec une voiture, elle n'est pas réellement écrasée, mais elle est replacée à sa position de départ, au bord inférieur de la fenêtre, où elle peut recommencer sa traversée. Lorsque la grenouille atteint la bande verte située en haut de la fenêtre, elle a atteint son objectif.

La grenouille peut être déplacée en cliquant sur le bouton gauche de la souris. À chaque clic, elle avance un peu. La vitesse des voitures peut être modifiée en changeant la période de simulation à l'aide de setSimulationPeriod().

Programme:

from gamegrid import *
import random
from soundsystem import *

# ------------- class Car -------------------------------
class Car(Actor):
    def __init__(self, carNb):
        Actor.__init__(self, ["sprites/car" + str(carNb) + ".gif"])
    
    def act(self):
        self.move()
        if self.getLocation().x < -100:
              self.setLocation(Location(1650, self.getLocation().y))
        if self.getLocation().x > 1650:
              self.setLocation(Location(-100, self.getLocation().y))
 
# --------------------- class Frogg ---------------------
class Frog(Actor):
    def __init__(self):
        Actor.__init__(self, True, "sprites/frog.gif")
        
    def act(self):
        if self.getY() > 10 and self.getY() < 25:
            play()  
          
    def collide(self, actor1, actor2):
        play()
        actor1.setLocation(Location(400, 560))
        return 0                   

# ------------- mouse -------------------------------
def pressCallback(e):
      frog.setLocation(Location(frog.getLocation().x, 
                                frog.getLocation().y - 10))       

# ------------- main -------------------------------
makeGameGrid(800, 600, 1, None,"sprites/lane.gif", False, 
             mousePressed = pressCallback)
frog = Frog()
addActor(frog, Location(400, 560))
cars = []
for i in range(20):
    cars.append(Car(i))  
for i in range(1, 5):
    cars[i].setHorzMirror(True)
    frog.addCollisionActor(cars[i])
    addActor(cars[i], Location(350 * i, 90), Location.WEST)      
for i in range(5, 10):
    frog.addCollisionActor(cars[i])
    addActor(cars[i], Location(350 * (i - 5), 350), Location.WEST)
for i in range(10, 15):
    frog.addCollisionActor(cars[i])
    addActor(cars[i], Location(350 * (i - 10), 220), Location.EAST)
for i in range(15, 20):
    cars[i].setHorzMirror(True)
    frog.addCollisionActor(cars[i])
    addActor(cars[i], Location(350 * (i - 15), 480), Location.EAST)

show()
setSimulationPeriod(60)
openSoundPlayer("wav/frog.wav")
doRun()
► copy To Clipboard

 

 

Explications du code

 
1.

Classe Car(Actor)
class Car(Actor):  Cette classe définit les voitures qui se déplacent de gauche à droite ou de droite à gauche sur le terrain de jeu.

2.

Méthode cars[i].setHorzMirror(True)
cars[i].setHorzMirror(True): Pour certaines voitures, l'image du sprite doit être inversée horizontalement afin qu'elle corresponde à leur direction de déplacement.

La bibliothèque d'images permet de consulter les sprites disponibles, de car0.gif à car19.gif.

3.

Méthode collide()
collidate():La détection des collisions est définie dans la classe Frog. Lorsqu'une collision se produit, la grenouille est replacée à sa position de départ (400, 560), tandis que les voitures continuent à se déplacer.

4.

Fonction pressCallback()
pressCallback() : Chaque fois que le joueur appuie sur le bouton gauche de la souris, la grenouille avance de 10 pixels.

5.

Fonction setSimulationPeriod()
etSimulationPeriod(): Cette fonction permet de modifier la vitesse de déplacement des voitures et, par conséquent, le niveau de difficulté du jeu.

6.

Fonction openSoundPlayer("wav/frog.wav")
openSoundPlayer("wav/frog.wav"): Cette fonction prépare le fichier sonore qui sera joué lorsque la grenouille entre en collision avec une voiture ou lorsqu'elle atteint son objectif.


 

 

Exercises

 
1. Modifie la direction de déplacement des voitures de manière à ce qu'elles circulent comme sur une autoroute à deux voies.

2. Les camions et les voitures particulières (Cars) doivent circuler sur la voie de droite, tandis que les autres véhicules doivent circuler sur la voie de gauche.