Class Spiel

java.lang.Object
  
All Implemented Interfaces:
ea.TastenGedruecktReagierbar, ea.TastenLosgelassenReagierbar, ea.TastenReagierbar, ea.Ticker, Serializable

public class Spiel
extends ea.Game
implements ea.TastenGedruecktReagierbar, ea.TastenLosgelassenReagierbar, ea.Ticker

Spiel ist die spielsteurnde Klasse

Version:
1.2
Author:
DS, KF
See Also:
Serialized Form

Field Summary
protected  ARaum activeRoom
           
protected  int anzahl_menueelemente
           
protected  boolean betretbar
           
protected  Sprechblase blase
           
protected static int breite
           
protected  boolean changedRoom
           
protected static Konfiguration config
           
protected  String frueherer_Spielstatus
           
protected static int hoehe
           
protected  int index
           
protected  Entity interact
           
protected  ea.Text interactText
           
protected  Inventar inventar
           
protected  ea.Knoten kno
           
protected  Lehrer lehrer
           
protected  ea.Manager manager
           
protected  Menue menue
           
protected  ea.Rechteck menuekasten
           
protected  int menuepfeil_position
           
protected  boolean moving
           
protected  int nextDoor
           
protected  String[] personenFeld
           
protected  int personenzahl
           
protected  Pikachu pikachu
           
protected  ea.Sound playingSong
           
protected  boolean pressed26
           
protected  boolean pressed27
           
protected  boolean pressed28
           
protected  boolean pressed29
           
protected  boolean PREVENT_MENUE
           
protected  Random random
           
protected  Random randomSong
           
protected  int songnumber
           
protected  int songproof
           
protected  Spieler spieler
           
protected  ea.Figur[] spielmenuefiguren
           
protected  String[] spielmenuestrings
           
protected  ea.Text[] spielmenuetextobjekte
           
protected static String[] spielstaende
           
protected  String spielstatus
           
protected  ea.Knoten spielumgebung
           
protected static int spielzahl
           
protected  boolean TICK_AND_ANIM_PAUSED
           
protected  int zaehler
           
protected  int zaehler2
           
protected  int zelleBetreten
           
 
Fields inherited from class
animationsManager, audioManager, cam, pfadtrenner, statischeWurzel, wurzel
 
Constructor Summary
Spiel()
          Spiel Constructor
 
Method Summary
 int blickAnpassen(Tuer neueTuer)
          blickAnpassen passt den Blick beim Eintreten in den neuen Raum an
 void changeRoom()
          changeRoom Wechselt den Raum Ablauf: 1.Ueberprueft ob sich in der aktuellen Zelle eine Tuer befindet und loescht alle vorhandenen Personen-->code: changeRoom2() 2.Ruft intaractDoor fuer die aktuelle Zelle auf (Rueckgabe: String zielraum) -->code: changeRoom2() 3.Je nach Zielraum wird die Zieltuer des neuen Raumes und der neue Raum festgelegt -->code: changeRoom2(), changeRoom3() (aus Gruenden der korrekten Darstellung muessen Raum und Spieler abgemeldet und neu eingebungden werden 4.Hat eine Raumaenderung stattgefunden so wird die aktuelle Musik angehalten, der Tuersound abgespielt und nach einer bestimmten Zeit ein neuer Song abgespielt -->code: changeRoom3()
 void changeRoom2()
          Method changeRoom2 Dokumentation: Siehe changeRoom()
 void changeRoom3()
          Method changeRoom3 Dokumentation: Siehe changeRoom()
 void changeSong()
          Method changeSong Der Song wird gewechselt
 boolean errechneBetretbar(int richtung, int posx, int posy)
          errechneBetretbar gibt je nachdem welche blickrichtung die Person besitzt an ob die Zelle zu der sie blickt betretbar ist Achtung: In TasteReagiebar wird die Figur erst gedreht und dann wird geprueft ob die Zelle zu der die Figur blickt betretbar ist Wird keine Pfeiltaste gedrueckt wird die Methode nicht aufgerufen
 String figurErmitteln()
          Method figurErmitteln
 void interactText(int direction)
          Method interactText: Wird bei jeder Bewegung des Spielers aufgerufen.
static void main(String[] args)
           
 void moveAround()
          moveAround wird durch den Ticker in regelmäßigen Abständen aufgerufen Bei jedem Aufruf wird für jede in personenFeld hinterlegt figur eine Zufallzahl bestimmt Liegt diese Zahl im Bereich von 0 bis 3 wird die Person bewegt andernfalls passiert nichts Die Wahrscheinlichkeit, dass sich eine Person bewegt kann durch den Bereich aus dem die Zufallszahl ermittelt wird beinflusst werden - Je größer die Zahl, dest kleiner die Wahrscheinlichkeit, dass sich die Person bewegt - Je kleiner die Zahl, dest größer die Wahrscheinlichkeit, dass sich die Person bewegt Achtung: Die kleinsmögliche Zahl ist 4 (Bewegungswahrscheinlichkeit = 100%).
 void onCloseGameMenu()
          Methode onCloseGameMenu Diese Methode wird aufgerufen, wenn das ingame-Spielmenue geschlossen werden soll.
 void onCloseInventory()
           
 void onDisableGame()
          Method onDisableGame Methode fuer die Rueckkehr zum Hauptmenue Spielelemente werden geloescht, Menuetexte und neue Musik eingefuegt
 void onEnableGame()
          Method onEnableGame Methode zum Spielstart Texte werden geloescht, Testraum und neue Musik eingefuegt
 void onInputToGameMenu(int input)
          Methode onInputToGameMenu Diese Methode wird in tastereagieren(int code) aufgerugfen.
 void onOpenGameMenu()
          Methode spielmenue_starten Startet das Ingame-Spielmenue.
 void onOpenInventory()
           
 void personenBewegen(int direction, Personen person, String figurUp, String figurRight, String figurDown, String figurLeft, int range1, int range2, int range3, int range4)
          personenBewegen regelt die Bewegen und das Drehen von Objekten die von der Klasse Personen erben
 void personenLoeschen()
          personenLoeschen loescht alle in einem Raum vorhandenen Personen Es werden alle in personenFeld geespeicherten String-Variablen aufgerufen und dann entsprechen geloescht
 void personErstellen(String name, int index, int posx, int posy, int ausrichtung, String figurenpfad)
          personErstellen: Erstellt eine Figur für die Übergebenen Parameter name wird mit den Namen aus der Liste verglichen und die jewilige Personen wird erzeugt, in personenFeld gespeichert und grafisch eingebunden
 void songAbspielen()
          Method songApspielen Es wird mit dem Zufallsgenerator eine Songnummer bestimmt und der ausgewaehlte Song wird abgespielt Bevor die Zahl durch den Zufallsgenerator bestimmt wird, wird ueberprueft ob eine ander Zahl als die vorherige ermittelt wurde, da sonst kein Sound abgespielt wird
 void songAnhalten()
          Method songAnhalten Haelt den gerade spielenden Song an
 void spielstaendeLaden()
          Method spielstaendeLaden: Laedt die Spielstaende aus Spielstaende.eaa und uebertragt sie in spielstaende[]
 void sprechblase_entfernen()
          Löscht die aktuelle Sprechblase.
 void sprechblase_erschaffen(String zeile1)
          Erzeugt eine neue Sprechblase (vlg.
 void sprechblase_erschaffen(String zeile1, String zeile2)
          Erzeugt eine neue Sprechblase (vlg.
 void sprechblase_erschaffen(String zeile1, String zeile2, String zeile3)
          Erzeugt eine neue Sprechblase (vlg.
 void sprechblase_erschaffen(String zeile1, String zeile2, String zeile3, String zeile4)
          Erzeugt eine neue Sprechblase (vlg.
 void sprechblase_erschaffen(String zeile1, String zeile2, String zeile3, String zeile4, String zeile5)
          Erzeugt eine neue Sprechblase (vlg.
 void tasteGedrueckt(int code)
          tasteGedrueckt funktioniert wie tasteReagierbar enhaelt aber einen mit 50ms getakteten Ticker der bei gedrueckter Taste aufgerufen wird Ein zaehler laeuft mit um die Aufrufe auf 250 ms zu begrenzen
 void tasteLosgelassen(int code)
          tasteLosgelassen zaehler aus tasteGedrueckt wird für den nächsten Tastenanschlag zurückgesetzt Fals bei spielstatus "inGame" der spieler gesteuert wird, wird seine Laufanimation beendet
 void tasteReagieren(int Code)
           
 void tick()
          tick Wartet ab bis der Tuer-Sound abgespielt wurde
 
Methods inherited from class
beenden, eingabeFordern, fensterFontSetzen, fensterFontSetzen, fensterGroesse, frage, highscoreAnzeigen, highscoreAnzeigen, hintergrundSetzen, mausAnmelden, nachrichtSchicken, reagieren, rechenintensiveArbeitSetzen, sicherheitsFrage, tastenGedruecktReagierbarAnmelden, tastenLosgelassenReagierbarAnmelden, tastenReagierbarAnmelden, ueberblendeSetzen, ueberblendeSetzen, warten, zufallsBoolean, zufallsZahl
 
Methods inherited from class
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

activeRoom

protected ARaum activeRoom

anzahl_menueelemente

protected int anzahl_menueelemente

betretbar

protected boolean betretbar

blase

protected Sprechblase blase

breite

protected static int breite

changedRoom

protected boolean changedRoom

config

protected static Konfiguration config

frueherer_Spielstatus

protected String frueherer_Spielstatus

hoehe

protected static int hoehe

index

protected int index

interact

protected Entity interact

interactText

protected ea.Text interactText

inventar

protected Inventar inventar

kno

protected ea.Knoten kno

lehrer

protected Lehrer lehrer

manager

protected ea.Manager manager

menue

protected Menue menue

menuekasten

protected ea.Rechteck menuekasten

menuepfeil_position

protected int menuepfeil_position

moving

protected boolean moving

nextDoor

protected int nextDoor

personenFeld

protected String[] personenFeld

personenzahl

protected int personenzahl

pikachu

protected Pikachu pikachu

playingSong

protected ea.Sound playingSong

pressed26

protected boolean pressed26

pressed27

protected boolean pressed27

pressed28

protected boolean pressed28

pressed29

protected boolean pressed29

PREVENT_MENUE

protected boolean PREVENT_MENUE

random

protected Random random

randomSong

protected Random randomSong

songnumber

protected int songnumber

songproof

protected int songproof

spieler

protected Spieler spieler

spielmenuefiguren

protected ea.Figur[] spielmenuefiguren

spielmenuestrings

protected String[] spielmenuestrings

spielmenuetextobjekte

protected ea.Text[] spielmenuetextobjekte

spielstaende

protected static String[] spielstaende

spielstatus

protected String spielstatus

spielumgebung

protected ea.Knoten spielumgebung

spielzahl

protected static int spielzahl

TICK_AND_ANIM_PAUSED

protected boolean TICK_AND_ANIM_PAUSED

zaehler

protected int zaehler

zaehler2

protected int zaehler2

zelleBetreten

protected int zelleBetreten
Constructor Detail

Spiel

public Spiel()
Spiel Constructor

Method Detail

blickAnpassen

public int blickAnpassen(Tuer neueTuer)
blickAnpassen passt den Blick beim Eintreten in den neuen Raum an


changeRoom

public void changeRoom()
changeRoom Wechselt den Raum Ablauf: 1.Ueberprueft ob sich in der aktuellen Zelle eine Tuer befindet und loescht alle vorhandenen Personen-->code: changeRoom2() 2.Ruft intaractDoor fuer die aktuelle Zelle auf (Rueckgabe: String zielraum) -->code: changeRoom2() 3.Je nach Zielraum wird die Zieltuer des neuen Raumes und der neue Raum festgelegt -->code: changeRoom2(), changeRoom3() (aus Gruenden der korrekten Darstellung muessen Raum und Spieler abgemeldet und neu eingebungden werden 4.Hat eine Raumaenderung stattgefunden so wird die aktuelle Musik angehalten, der Tuersound abgespielt und nach einer bestimmten Zeit ein neuer Song abgespielt -->code: changeRoom3()


changeRoom2

public void changeRoom2()
Method changeRoom2 Dokumentation: Siehe changeRoom()


changeRoom3

public void changeRoom3()
Method changeRoom3 Dokumentation: Siehe changeRoom()


changeSong

public void changeSong()
Method changeSong Der Song wird gewechselt


errechneBetretbar

public boolean errechneBetretbar(int richtung,
                                 int posx,
                                 int posy)
errechneBetretbar gibt je nachdem welche blickrichtung die Person besitzt an ob die Zelle zu der sie blickt betretbar ist Achtung: In TasteReagiebar wird die Figur erst gedreht und dann wird geprueft ob die Zelle zu der die Figur blickt betretbar ist Wird keine Pfeiltaste gedrueckt wird die Methode nicht aufgerufen


figurErmitteln

public String figurErmitteln()
Method figurErmitteln

Returns:
figurenpfad: Ermittelt die neue Figur von spieler für den neuen Raum um ihn beim Eintreten in die richtige Richtung blicken zu lassen

interactText

public void interactText(int direction)
Method interactText: Wird bei jeder Bewegung des Spielers aufgerufen. Falls der Spieler in Richtung eines Entityobjekts blickt, dass ein Text enthaelt erscheint der entsprechende Text am Bildschirm Ablauf: 1.Das Feld des Objekts wird aus der uebergebenen Richtung ermittelt 2.Es wird ueberpruft ob die Zelle ein Objekt mit Text enthaehlt 3.Die Blickrichtung wird mit der Ausrichtung von Text2 der Objektzelle abgeglichen --> Ist die Blickrichtung ungleich der Ausrichtung wird Text1 angezeigt --> Andernfalls wird Text2 verwendet (Dieses Vorgehen ist notwendig um einer Ueberlappung des Textes und des Spielers vorzubeugen)


main

public static void main(String[] args)

moveAround

public void moveAround()
moveAround wird durch den Ticker in regelmäßigen Abständen aufgerufen Bei jedem Aufruf wird für jede in personenFeld hinterlegt figur eine Zufallzahl bestimmt Liegt diese Zahl im Bereich von 0 bis 3 wird die Person bewegt andernfalls passiert nichts Die Wahrscheinlichkeit, dass sich eine Person bewegt kann durch den Bereich aus dem die Zufallszahl ermittelt wird beinflusst werden - Je größer die Zahl, dest kleiner die Wahrscheinlichkeit, dass sich die Person bewegt - Je kleiner die Zahl, dest größer die Wahrscheinlichkeit, dass sich die Person bewegt Achtung: Die kleinsmögliche Zahl ist 4 (Bewegungswahrscheinlichkeit = 100%). Würde die Zahl kleiner als 4 gewählt, so könnte sich die Person nicht in alle Richtungen bewegen


onCloseGameMenu

public void onCloseGameMenu()
Methode onCloseGameMenu Diese Methode wird aufgerufen, wenn das ingame-Spielmenue geschlossen werden soll. Dadurch verschwindet der weiße Me


onCloseInventory

public void onCloseInventory()

onDisableGame

public void onDisableGame()
Method onDisableGame Methode fuer die Rueckkehr zum Hauptmenue Spielelemente werden geloescht, Menuetexte und neue Musik eingefuegt


onEnableGame

public void onEnableGame()
Method onEnableGame Methode zum Spielstart Texte werden geloescht, Testraum und neue Musik eingefuegt


onInputToGameMenu

public void onInputToGameMenu(int input)
Methode onInputToGameMenu Diese Methode wird in tastereagieren(int code) aufgerugfen. Sie steuert die Auswahl des Ingame-Spielmenuepfeils.

Parameters:
input - in tastenreagierbar uebergeben. 26 entspricht dem Pfeil nach oben, 28 nach unten.

onOpenGameMenu

public void onOpenGameMenu()
Methode spielmenue_starten Startet das Ingame-Spielmenue. Ein weißes Fenster auf der rechten Seite wird erscheinen, in dem die Auswahltexte erscheinen. Hier muessen die Auswahloptionen fuers Ingame-Menue eingetragen werden


onOpenInventory

public void onOpenInventory()

personenBewegen

public void personenBewegen(int direction,
                            Personen person,
                            String figurUp,
                            String figurRight,
                            String figurDown,
                            String figurLeft,
                            int range1,
                            int range2,
                            int range3,
                            int range4)
personenBewegen regelt die Bewegen und das Drehen von Objekten die von der Klasse Personen erben

Parameters:
direction: - gibt die Richtung an in die sich die Figur bewegen soll
person: - Objekt, dass bewegt werden soll (z.B. Spieler)
figurUp,figurRight, - figurDown, figurLeft: Hier müssen die in config festgelegten Figuren fuer jede Richtung angegeben werden
range1, - range2, range3, range4: Gibt an wie weit sich die Person in die jeweiligen Richtung 1, 2, 3 und 4 bewegen können (Diese Angabe sollte immer innerhalb der Zellen von activeRoom liegen; um den ganzen Raum begehbar zu machen '0, activeRoom.breite, activeRoom.hoehe, 0' einfügen Ablauf: 1. Die Blickrichtung wird geprüft; Entspricht sie nicht der Bewegungsrichtung so wird sie mit der Methode changeFigur in Entity angepasst 2. GetNextPosition ermittelt die Positions- und Blickrichtungsaenderung 3. Danach wird ueberprueft ob eine Raumaenderung stattfinden soll (siehe changeRoom()) 4. Liegen die nun festgelegten in dem Bewegungsbereich der Person und ist die aufgerufene Zelle betretbar so wird die Spielfigur bewegt Wenn die Person der Spieler ist wird zu Beginn der interactText gelöscht(falls er anzeigt wird) Danach wird der Text der Zelle zu der der Spieler blicht(falls vorhanden) aufgerufen und angezeigt

personenLoeschen

public void personenLoeschen()
personenLoeschen loescht alle in einem Raum vorhandenen Personen Es werden alle in personenFeld geespeicherten String-Variablen aufgerufen und dann entsprechen geloescht


personErstellen

public void personErstellen(String name,
                            int index,
                            int posx,
                            int posy,
                            int ausrichtung,
                            String figurenpfad)
personErstellen: Erstellt eine Figur für die Übergebenen Parameter name wird mit den Namen aus der Liste verglichen und die jewilige Personen wird erzeugt, in personenFeld gespeichert und grafisch eingebunden


songAbspielen

public void songAbspielen()
Method songApspielen Es wird mit dem Zufallsgenerator eine Songnummer bestimmt und der ausgewaehlte Song wird abgespielt Bevor die Zahl durch den Zufallsgenerator bestimmt wird, wird ueberprueft ob eine ander Zahl als die vorherige ermittelt wurde, da sonst kein Sound abgespielt wird


songAnhalten

public void songAnhalten()
Method songAnhalten Haelt den gerade spielenden Song an


spielstaendeLaden

public void spielstaendeLaden()
Method spielstaendeLaden: Laedt die Spielstaende aus Spielstaende.eaa und uebertragt sie in spielstaende[]


sprechblase_entfernen

public void sprechblase_entfernen()
Löscht die aktuelle Sprechblase.


sprechblase_erschaffen

public void sprechblase_erschaffen(String zeile1)
Erzeugt eine neue Sprechblase (vlg. Pokemon.). Die Methode sprechblase_erschaffen wurde überladen: Je nach Anzahl der benötigten Zeilen (max.5) muss auch eine entsprechende Anzahl an Strings (je einer für eine Zeile) übergeben werden. Wer eine Sprechblase mit 2 Zeilen erstellen wollte, müsste also die Methode sprechblase_erzeugen(STRING1, STRING2) ausführen.


sprechblase_erschaffen

public void sprechblase_erschaffen(String zeile1,
                                   String zeile2)
Erzeugt eine neue Sprechblase (vlg. Pokemon.). Die Methode sprechblase_erschaffen wurde überladen: Je nach Anzahl der benötigten Zeilen (max.5) muss auch eine entsprechende Anzahl an Strings (je einer für eine Zeile) übergeben werden. Wer eine Sprechblase mit 2 Zeilen erstellen wollte, müsste also die Methode sprechblase_erzeugen(STRING1, STRING2) ausführen.


sprechblase_erschaffen

public void sprechblase_erschaffen(String zeile1,
                                   String zeile2,
                                   String zeile3)
Erzeugt eine neue Sprechblase (vlg. Pokemon.). Die Methode sprechblase_erschaffen wurde überladen: Je nach Anzahl der benötigten Zeilen (max.5) muss auch eine entsprechende Anzahl an Strings (je einer für eine Zeile) übergeben werden. Wer eine Sprechblase mit 2 Zeilen erstellen wollte, müsste also die Methode sprechblase_erzeugen(STRING1, STRING2) ausführen.


sprechblase_erschaffen

public void sprechblase_erschaffen(String zeile1,
                                   String zeile2,
                                   String zeile3,
                                   String zeile4)
Erzeugt eine neue Sprechblase (vlg. Pokemon.). Die Methode sprechblase_erschaffen wurde überladen: Je nach Anzahl der benötigten Zeilen (max.5) muss auch eine entsprechende Anzahl an Strings (je einer für eine Zeile) übergeben werden. Wer eine Sprechblase mit 2 Zeilen erstellen wollte, müsste also die Methode sprechblase_erzeugen(STRING1, STRING2) ausführen.


sprechblase_erschaffen

public void sprechblase_erschaffen(String zeile1,
                                   String zeile2,
                                   String zeile3,
                                   String zeile4,
                                   String zeile5)
Erzeugt eine neue Sprechblase (vlg. Pokemon.). Die Methode sprechblase_erschaffen wurde überladen: Je nach Anzahl der benötigten Zeilen (max.5) muss auch eine entsprechende Anzahl an Strings (je einer für eine Zeile) übergeben werden. Wer eine Sprechblase mit 2 Zeilen erstellen wollte, müsste also die Methode sprechblase_erzeugen(STRING1, STRING2) ausführen.


tasteGedrueckt

public void tasteGedrueckt(int code)
tasteGedrueckt funktioniert wie tasteReagierbar enhaelt aber einen mit 50ms getakteten Ticker der bei gedrueckter Taste aufgerufen wird Ein zaehler laeuft mit um die Aufrufe auf 250 ms zu begrenzen

Specified by:
tasteGedrueckt in interface ea.TastenGedruecktReagierbar

tasteLosgelassen

public void tasteLosgelassen(int code)
tasteLosgelassen zaehler aus tasteGedrueckt wird für den nächsten Tastenanschlag zurückgesetzt Fals bei spielstatus "inGame" der spieler gesteuert wird, wird seine Laufanimation beendet

Specified by:
tasteLosgelassen in interface ea.TastenLosgelassenReagierbar

tasteReagieren

public void tasteReagieren(int Code)
Specified by:
tasteReagieren in class ea.Game

tick

public void tick()
tick Wartet ab bis der Tuer-Sound abgespielt wurde

Specified by:
tick in interface ea.Ticker