HomeTurtlegrafikGPanelRobotikGameGrid WebTigerPython
 Python - Online
keyevents

6. TASTATURSTEUERUNG

 

 

DU LERNST HIER...

 

wie du die Tastatur zum Steuern der Spielfiguren verwenden kannst.


 

In sogenannten Callbackfunktionen definierst du, was geschehen soll, wenn eine Tastaturtaste gedrückt oder losgelassen wird wird. Diese Funktionen werden nicht durch das Programm aufgerufen, sondern automatisch vom System, wenn eine Taste betätigt wird. Die Callbackfunktionen werden mit den benannten Parametern keyPressed oder keyReleased in makeGamegrid() registriert. Mit der Funktion getKeyCode() kannst du den nummerischen Code der gedrückten Taste ermitteln.

 

 

MUSTERBEISPIEL

 

 

Beispiel1: Pacman mit den Cursotasten steuern
 

Der Pacman kann mit den Cursortasten UP, DOWN, LEFT bzw. RIGHT bewegt werden. Ziel ist es, möglichst schnell alle Pillen zu schlucken.

Die Klassen Pacman und Pill kannst du aus dem vorhergehenden Beispiel übernehmen.

 

Die Callbackfunktion keyCallback(e) definiert, was geschehen soll, wenn eine Cursortaste gedrückt wird. Die Callbackfunktion erhält den Parameter e, aus dem du mit getKeyCode() den Code der gedrückten Taste ermitteln kannst.. Bei den Cursortasten sind es die Zahlencodes 37, 38, 39 und 40.

  Je nach dem, welche Cursortaste gedrückt wurde, bewegt sich der Pacman in eine der 4 benachbarten Zellen. Die Richtung kann mit der Methode setDirection() festgelegt werden. Bei setDirection(270) bewegt sich der Pacman nach Norden.

Programm:

# Gg6.py
from gamegrid import *

# --------------------- class Pacman ---------------------
class Pacman(Actor):
    def __init__(self):
        Actor.__init__(self, True, "sprites/pacman.gif", 2);

    def tryToEat(self):
        self.show(0)
        actor = getOneActorAt(self.getLocation(), Pill);
        if (actor != None):
            actor.hide()
            self.show(1)

# --------------------- class Pill ---------------------
class Pill(Actor):
    def __init__(self):
        Actor.__init__(self, "sprites/pill_0.gif");

def keyCallback(e):
      keyCode = e.getKeyCode()
      if keyCode == 37: # left
          paki.setDirection(180)
      elif keyCode == 38: # up
          paki.setDirection(270)
      elif keyCode == 39: # right
          paki.setDirection(0)
      elif keyCode == 40: # down
          paki.setDirection(90) 
      paki.move()
      paki.tryToEat() 
 
makeGameGrid(10, 10, 60, Color.red, False, keyPressed = keyCallback)
paki = Pacman()
addActor(paki, Location(0,0))
for i in range(10):
    addActor(Pill(), getRandomEmptyLocation())
show()
doRun()
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Die Callbackfunktion keyCallback(e) wird vom System aufgerufen, wenn eine Tastaturtaste gedrückt wird. Sie wird mit dem Parameter keyPressed in makeGamegrid() registriert. Mit getKeyCode() kannst du den Code der gedrückten Taste ermitteln. Bei den Cursortasten sind es die Zahlencodes 37, 38, 39 und 40.

 

 

ZUM SELBST LÖSEN

 

1.

Ezeuge ein Spielfenster mir 20 horizontalen und 20 vertikalen Zellen, grösse 25 Pixel, ohne Gitterlinien, mit dem Hintergrundbild "sprites/bg2.gif"). Da die Roboterbahn einen transparenten Hintergrund hat, muss du zusätzlich mit setBgColor(Color.white) den Spielfenster-Hintergrund weiss machen. Für den Roboter verwendest du das Bild "sprites/mbrobot.gif".

Der Acror Robot mit dem Spritebild mbrobot.gif wird mit den Cursortasten vorwärts, rückwärts, links und rechts gesteuert und soll den Parcours durchfahren.

 
 
Damit sich das Spitebild immer in die Bewegungsrichtung dreht, musst du vor der Zuordnung des Sprites True verwenden.
Actor.__init__(self, True, "sprites/mbrobot.gif").