Hi ich hab hier ein Problem jedesmal wenn ich das SPiel startet sollten eigentlich für jeden Raum eine neue Instanz der Klasse Raum erzeugt werden, in der Klasse Raum werden aus einer HashMap zufällig ein paar Gegenstände herausgeholt und im Raum verteilt, aber jedes mal hab ich in jedem Raum die selben Sachen. Ich erzeug mit Random eine Zufallszahl und die bestimmt welcher Gegenstand oder mehrere in das Array für Gegenstaende(as) kommt. Es gibt noch eine Klasse Gegenstaende in der die Inhalte der HashMap zurück gegeben werden. ISt Random so blöd das er mir für jeden Raum immer wieder die selben zahlen erzeugt, das kann ja fast nicht sein mir kommt so vor als würde er die Gegenstände nur einmal erzeugen und dann auf alle verteilen. Ich dachte mit new würde ich eine frische Instanz erzeugen.
Das ist jeweil nur Teilcode nicht die Vollstaendige Klasse
Hier die Klasse Raum
Das ist jeweil nur Teilcode nicht die Vollstaendige Klasse
Code:
class Spiel
{
* Erzeuge alle Räume und verbinde ihre Ausgänge miteinander.
*/
private void raeumeAnlegen()
{
Raum draussen, hoersaal, cafeteria, labor, buero;
// die Räume erzeugen
draussen = new Raum("vor dem Haupteingang der Universität",dingens);
hoersaal = new Raum("in einem Vorlesungssaal",dingens);
cafeteria = new Raum("in der Cafeteria der Uni",dingens);
labor = new Raum("in einem Rechnerraum",dingens);
buero = new Raum("im Verwaltungsbüro der Informatik",dingens);
// die Ausgänge initialisieren
draussen.setzeAusgang("east", hoersaal);
draussen.setzeAusgang("south", labor);
draussen.setzeAusgang("west", cafeteria);
hoersaal.setzeAusgang("west", draussen);
cafeteria.setzeAusgang("east", draussen);
labor.setzeAusgang("north", draussen);
labor.setzeAusgang("east", buero);
buero.setzeAusgang("west", labor);
aktuellerRaum = draussen; // das Spiel startet draussen
Hier die Klasse Raum
Code:
public class Raum
{
private String beschreibung;
private HashMap ausgaenge; // die Ausgänge dieses Raums
private Gegenstaende dinge;
private ArrayList as;
private String ergeb;
/**
* Erzeuge einen Raum mit einer Beschreibung. Ein Raum
* hat anfangs keine Ausgänge.
* @param beschreibung enthält eine Beschreibung in der Form
* "in einer Küche" oder "auf einem Sportplatz".
*/
public Raum(String beschreibung,Gegenstaende dinge)
{
this.beschreibung = beschreibung;
ausgaenge = new HashMap();
this.dinge = dinge;
as = new ArrayList();
ergeb = "";
inventar();
things();
}
private void inventar()
{
Random zufall = new Random();
int y = zufall.nextInt(4);
y+=1;
int ix = zufall.nextInt(y);
for (int i =0; ix > as.size(); i++)
{
int yx = zufall.nextInt(dinge.getListengroesse());
as.add(dinge.getGegenstand(yx));
}
}
private void things()
{
ergeb = "";
for (Iterator it = as.iterator(); it.hasNext();)
{
String x =(String) it.next();
ergeb += x +"(" + dinge.getDing(x) + ")";
}
}
}
}