frogGame
Deutsch   English   

FROG GAME

 

 

SPIELBESCHREIBUNG

 

Ein Frosch soll die beiden Strassen überqueren, ohne überfahren zu werden. In unserer Implementierung wird der Frosch bei Kollision mit einem Auto nicht "richtig" überfahren, sondern jeweils an die Startposition am unteren Rand des Fensters zurückversetzt, wo er einen neuen Versuch starten kann. Wenn er den grünen Streifen am oberen Rand des Fensters erreicht hat, hat er das Ziel erreicht.

Der Frosch kann mit Drücken der linken Maustaste bewegt werden. Bei jedem Klick bewegt er sich ein wenig vorwärts. Die Geschwindigkeit der fahrenden Autos kann angepasst werden, indem man die Simulationsperiode ändert (setSimulationsPeriod()).

Programm:

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()
► In Zwischenablage kopieren

 

 

Erklärungen zum Programmcode

 
1. class Car(Actor):  Definiert Autos, die sich vom linken zum rechten Rand oder umgekehrt bewegen.

2. cars[i].setHorzMirror(True): Bei einigen Autos muss das Spritebild gespiegelt werden. In der Bildbibliothek ist ersichtlich, welche Sprites car0.gif .... car19.gif vorhanden sind.

3.
collidate(): Die Kollision wird in der Klasse Frog definiert. Dabei wird der Frog an die Startposition (400, 560) zurückversetzt, die Autos bewegen sich weiter.

4. pressCallback() : Beim Drücken der linken Maustaste bewegt sich der Frog jeweils 10 Pixel weiter.

5. setSimulationPeriod(): Die Geschwindigkeit der fahrenden Autos kann angepasst werden und damit auch der Schwierigkeitsgrad des Spieles.

6. openSoundPlayer("wav/frog.wav"): Bereitet die Sounddatei vor, welche abgespielt wird, wenn der Frog mit einem Auto kollidiert oder das Ziel erreicht hat.

 

 

Aufgaben

 
1. Ändere die Bewegungsrichtung der Autos so, dass sich diese wie auf einer zweispurigen Autobahn bewegen.

2. Die Lastwaren und Cars sollen auf der rechten Spur fahren, die übrigen Autos links.