jeudi 4 juin 2015
Erzeugung unterschiedlicher Speicheradressen
Posted on 01:58 by verona
Hallo zusammen ,
ich sitze momentan an einer Praktikumsaufgabe fürs Studium.
Wir sollen das Text basierte Beispiel Programm "Die Welt von Zuul" verändern und zusätzliche Funktionen einbauen.
Wir haben das Spiel unbenannt und es "Homer hat gesoffen" genannt. Ziel des Spiels den Schlüssel von Homers Auto in Springfield zu suchen...
Das Problem das wir jetzt haben ist, das unser Spiel nicht beendet wird wenn wir genau am Selben Ort sind wo der Schlüssel ist,der (durch die Funktion Random) zufällig versteckt wurde.
Wenn wir die Speicheradressen ausgeben lassen , kommen von "zufallsraum" und aktuellerRaum" auch unterschiedliche Adresse raus. Das liegt meiner Meinung nach das wir einmal eine ArrayList doppelt erstellen....
Kann uns da einer eventuell ein Typ geben für Anfänger?
ich sitze momentan an einer Praktikumsaufgabe fürs Studium.
Wir sollen das Text basierte Beispiel Programm "Die Welt von Zuul" verändern und zusätzliche Funktionen einbauen.
Wir haben das Spiel unbenannt und es "Homer hat gesoffen" genannt. Ziel des Spiels den Schlüssel von Homers Auto in Springfield zu suchen...
Das Problem das wir jetzt haben ist, das unser Spiel nicht beendet wird wenn wir genau am Selben Ort sind wo der Schlüssel ist,der (durch die Funktion Random) zufällig versteckt wurde.
Java Code:
-
-
if(aktuellerRaum.equals(zufallsraum))
-
{
-
beendet = true;
-
}
Wenn wir die Speicheradressen ausgeben lassen , kommen von "zufallsraum" und aktuellerRaum" auch unterschiedliche Adresse raus. Das liegt meiner Meinung nach das wir einmal eine ArrayList doppelt erstellen....
Kann uns da einer eventuell ein Typ geben für Anfänger?
Java Code:
-
-
import java.util.*;
-
-
-
/**
-
* Dies ist die Hauptklasse der Anwendung "Die Welt von Zuul".
-
* "Die Welt von Zuul" ist ein sehr einfaches, textbasiertes
-
* Adventure-Game. Ein Spieler kann sich in einer Umgebung bewegen,
-
* mehr nicht. Das Spiel sollte auf jeden Fall ausgebaut werden,
-
* damit es interessanter wird!
-
*
-
* Zum Spielen muss eine Instanz dieser Klasse erzeugt werden und
-
* an ihr die Methode "spielen" aufgerufen werden.
-
*
-
* Diese Instanz dieser Klasse erzeugt und initialisiert alle
-
* anderen Objekte der Anwendung: Sie legt alle Räume und einen
-
* Parser an und startet das Spiel. Sie wertet auch die Befehle
-
* aus, die der Parser liefert und sorgt für ihre Ausführung.
-
*
-
* @author Michael Kölling und David J. Barnes
-
* @version 31.07.2011
-
*/
-
-
-
class Spiel
-
{
-
private Raum aktuellerRaum;
-
private ArrayList<Raum> raumliste;
-
Charakter charakter;
-
-
-
/**
-
* Erzeuge ein Spiel und initialisiere die interne Raumkarte.
-
*/
-
public Spiel()
-
{
-
-
-
raeumeAnlegen();
-
}
-
-
/**
-
* Erzeuge alle Räume und verbinde ihre Ausgänge miteinander.
-
*/
-
-
{
-
Raum draussen, grundschule, supermarkt, kneipe, akw, burger;
-
this.raumliste = new ArrayList<Raum>();
-
-
-
-
// die Räume erzeugen
-
draussen = new Raum("Auf der Evergreenterrace");
-
grundschule = new Raum("bei der Springfielder Grundschule");
-
supermarkt = new Raum("bei Apu im Kwiki Markt");
-
kneipe = new Raum("in Moe´s Bar");
-
akw = new Raum("im Atomkraftwerkk");
-
burger= new Raum("bei Krusty Burger");
-
// die Ausgänge initialisieren
-
draussen.setzeAusgang("east", grundschule);
-
draussen.setzeAusgang("south", kneipe);
-
draussen.setzeAusgang("west", supermarkt);
-
-
-
grundschule.setzeAusgang("north", draussen);
-
grundschule.setzeAusgang("south", akw);
-
grundschule.setzeAusgang("west", kneipe);
-
-
-
supermarkt.setzeAusgang("north", draussen);
-
supermarkt.setzeAusgang("east", kneipe);
-
supermarkt.setzeAusgang("south", burger);
-
-
-
kneipe.setzeAusgang("north", draussen);
-
kneipe.setzeAusgang("south", akw);
-
kneipe.setzeAusgang("west", supermarkt);
-
kneipe.setzeAusgang("east", grundschule);
-
kneipe.setzeAusgang("westsouth", burger);
-
-
-
akw.setzeAusgang("north", kneipe);
-
akw.setzeAusgang("west", burger);
-
akw.setzeAusgang("east", grundschule);
-
-
burger.setzeAusgang("north",supermarkt);
-
burger.setzeAusgang("east",akw);
-
burger.setzeAusgang("northeast",kneipe);
-
-
-
-
-
-
aktuellerRaum = draussen; // das Spiel startet draussen
-
this.raumliste.add(draussen);
-
this.raumliste.add(kneipe);
-
this.raumliste.add(grundschule);
-
this.raumliste.add(burger);
-
this.raumliste.add(supermarkt);
-
this.raumliste.add (akw);
-
-
return this.raumliste;
-
-
}
-
/**
-
* Wähle zufällig eine der Standardantworten aus.
-
* @return eine zufällig gewählte Standardantwort.
-
*/
-
{
-
// Erzeuge eine Zufallszahl, die als Index in der Liste der
-
// Standardantworten benutzt werden kann. Die Zahl wird im Bereich
-
// von null (inklusiv) bis zur Größe der Liste (exklusiv) liegen.
-
Raum zufallsraum = null;
-
-
do{
-
int index = zufallsgenerator.nextInt(raumliste.size());
-
zufallsraum = (Raum) raumliste.get(index);
-
}
-
while(zufallsraum == (Raum) raumliste.get(0));
-
//System.out.println(zufallsraum.gibKurzbeschreibung()+"llllll");
-
return zufallsraum;
-
}
-
-
{
-
Raum charakterRaum =null;
-
-
do{
-
int index1 = random.nextInt(raumliste.size());
-
charakterRaum = (Raum) raumliste.get(index1);
-
-
-
}
-
while(charakterRaum == (Raum) raumliste.get(0)||charakterRaum.equals(zufallsraum));
-
//System.out.println(charakterRaum.gibKurzbeschreibung()+"CCCCCCC");
-
return charakterRaum;
-
}
-
-
-
/**
-
* Die Hauptmethode zum Spielen. Läuft bis zum Ende des Spiels
-
* in einer Schleife.
-
*/
-
public void spielen()
-
{
-
willkommenstextAusgeben();
-
-
Raum zufallsraum = raumAuswaehlen(raeumeAnlegen());
-
Raum charakterRaum = istImRaum(raeumeAnlegen(), zufallsraum);
-
Charakter charakter = new Charakter(" Barney ", "der Trunkenbold aus Springfield ");
-
-
-
// Die Hauptschleife. Hier lesen wir wiederholt Befehle ein
-
// und führen sie aus, bis das Spiel beendet wird.
-
-
boolean beendet = false;
-
boolean test = false;
-
while (! beendet) {
-
Befehl befehl = parser.liefereBefehl();
-
test = verarbeiteBefehl(befehl);
-
-
//System.out.println("wihle funktion"+zufallsraum.gibKurzbeschreibung());
-
if(test == true )
-
{
-
beendet = true;
-
}
-
-
if(aktuellerRaum.equals(zufallsraum))
-
{
-
beendet = true;
-
}
-
-
//System.out.println(charakterRaum.gibKurzbeschreibung());
-
if(aktuellerRaum.equals(charakterRaum))
-
{
-
}
-
-
-
-
}
-
-
}
-
/**
-
* Einen Begrüßungstext für den Spieler ausgeben.
-
*/
-
private void willkommenstextAusgeben()
-
{
-
}
-
-
-
/**
-
* Verarbeite einen gegebenen Befehl (führe ihn aus).
-
* @param befehl Der zu verarbeitende Befehl.
-
* @return 'true', wenn der Befehl das Spiel beendet, 'false' sonst.
-
*/
-
private boolean verarbeiteBefehl(Befehl befehl)
-
{
-
boolean moechteBeenden = false;
-
-
-
if(befehl.istUnbekannt()) {
-
return false;
-
}
-
-
-
if (befehlswort.equals("help")) {
-
hilfstextAusgeben();
-
}
-
else if (befehlswort.equals("go")) {
-
wechsleRaum(befehl);
-
}
-
else if (befehlswort.equals("quit")) {
-
moechteBeenden = beenden(befehl);
-
}
-
// ansonsten: Befehl nicht erkannt.
-
return moechteBeenden;
-
}
-
-
-
// Implementierung der Benutzerbefehle:
-
-
-
/**
-
* Gib Hilfsinformationen aus.
-
* Hier geben wir eine etwas alberne und unklare Beschreibung
-
* aus, sowie eine Liste der Befehlswörter.
-
*/
-
private void hilfstextAusgeben()
-
{
-
parser.zeigeBefehle();
-
}
-
-
-
/**
-
* Versuche, in eine Richtung zu gehen. Wenn es einen Ausgang gibt,
-
* wechsele in den neuen Raum, ansonsten gib eine Fehlermeldung
-
* aus.
-
*/
-
private void wechsleRaum(Befehl befehl)
-
{
-
if(!befehl.hatZweitesWort()) {
-
// Gibt es kein zweites Wort, wissen wir nicht, wohin...
-
return;
-
}
-
-
-
-
-
// Wir versuchen, den Raum zu verlassen.
-
Raum naechsterRaum = aktuellerRaum.gibAusgang(richtung);
-
-
-
if (naechsterRaum == null) {
-
}
-
else {
-
aktuellerRaum = naechsterRaum;
-
}
-
}
-
-
-
/**
-
* "quit" wurde eingegeben. Überprüfe den Rest des Befehls,
-
* ob das Spiel wirklich beendet werden soll.
-
* @return 'true', wenn der Befehl das Spiel beendet, 'false' sonst.
-
*/
-
private boolean beenden(Befehl befehl)
-
{
-
if(befehl.hatZweitesWort()) {
-
return false;
-
}
-
else {
-
return true; // Das Spiel soll beendet werden.
-
}
-
}
-
}
Erzeugung unterschiedlicher Speicheradressen
Categories: Erzeugung unterschiedlicher Speicheradressen
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire