Allgemein:
Hier habe ich nur die zwei nötigen Klassen für das Problem hineingeschrieben. Es wird versucht das Spiel "Wer war´s" in Java zu realisieren. Das ganze ist ein Schulprojekt (11.Klasse) , dass benotet wird
Problembeschreibung:
Ich möchte die Namen, des in der Klasse Spielbrett gespeicherten Arrays "obstsorten", mit der Methode ".getObstsorten(Zeile 162 Spielbrett)" in das Methodenlocale Array "sorten" der Klasse Spieler (Methode "suchen" Zeile 40) übernehmen.
Dies allerdings funktioniert nicht, da eine NullPointerException ausgelöst wird.
Das gleiche passiert mit dem Schlüsselarray (Klasse Spieler-Methode "suchen"-Zeile 51) mit der dazugehörigen getMethoden(Klasse Spielbrett-Zeile 171).
Wieso wird diese ausgelöst?
Hier habe ich nur die zwei nötigen Klassen für das Problem hineingeschrieben. Es wird versucht das Spiel "Wer war´s" in Java zu realisieren. Das ganze ist ein Schulprojekt (11.Klasse) , dass benotet wird
Problembeschreibung:
Ich möchte die Namen, des in der Klasse Spielbrett gespeicherten Arrays "obstsorten", mit der Methode ".getObstsorten(Zeile 162 Spielbrett)" in das Methodenlocale Array "sorten" der Klasse Spieler (Methode "suchen" Zeile 40) übernehmen.
Dies allerdings funktioniert nicht, da eine NullPointerException ausgelöst wird.
Das gleiche passiert mit dem Schlüsselarray (Klasse Spieler-Methode "suchen"-Zeile 51) mit der dazugehörigen getMethoden(Klasse Spielbrett-Zeile 171).
Wieso wird diese ausgelöst?
Java:
public class Spielbrett {
private Spielfeld[] spielfelder;
private Tier[] tier;
private Verdaechtiger[] verdaechtiger;
private Spielfigur figur;
private Wuerfel wuerfel;
// Wird versucht per getObstsorten zu bekommen (getObstsorten-Methode in Zeile 162 der Spielbrettklasse)
private String[] obstsorten = {"Traube", "Banane", "Pfirsich", "Avocado", "Birne", "Pflaume", "Ananas", "Zitrone" };
private String[] schluessel = {"Schlüssel", "Schlüssel", "Schlüssel", "Schlüssel"};
public Spielbrett(){
// Erzeugen des Würfels
wuerfel = new Wuerfel();
// Erzeugen der Tier
tier = new Tier[8];
tier[0] = new Tier("Esel");
tier[1] = new Tier("Katze");
tier[2] = new Tier("Schlange");
tier[3] = new Tier("Hund");
tier[4] = new Tier("Pferd");
tier[5] = new Tier("Maus");
tier[6] = new Tier("Vogel");
tier[7] = new Tier("Frodo");
for (int i = 0;i<tier.length;i++){
System.out.println(tier[i]);
}
//Erzeugen der Verdächtigen
verdaechtiger = new Verdaechtiger[8];
verdaechtiger[0] = new Verdaechtiger("Koch",true,true,true,true);
verdaechtiger[1] = new Verdaechtiger("Metzger",false,true,true,true);
verdaechtiger[2] = new Verdaechtiger("Hofnarr",true,false,true,true);
verdaechtiger[3] = new Verdaechtiger("PerverserZauberer",true,false,false,true);
verdaechtiger[4] = new Verdaechtiger("Schmied",false,true,false,true);
verdaechtiger[5] = new Verdaechtiger("Ork",false,false,true,true);
verdaechtiger[6] = new Verdaechtiger("Gollum",false,false,false,false);
verdaechtiger[7] = new Verdaechtiger("HE-MAN",false,false,false,true);
for (int i = 0;i<tier.length;i++){
System.out.println(verdaechtiger[i]);
}
// Erzeugen der Spielfelder
spielfelder = new Spielfeld[8];
spielfelder[0] = new Spielfeld("Schlafzimmer",tier[0],verdaechtiger[0]);
spielfelder[1] = new Spielfeld("Arbeitszimmer",tier[1],verdaechtiger[1]);
spielfelder[2] = new Spielfeld("Küche",tier[2],verdaechtiger[2]);
spielfelder[3] = new Spielfeld("Kinderzimmer",tier[3],verdaechtiger[3]);
spielfelder[4] = new Spielfeld("Wohnzimmer",tier[4],verdaechtiger[4]);
spielfelder[5] = new Spielfeld("Badezimmer",tier[5],verdaechtiger[5]);
spielfelder[6] = new Spielfeld("Turm",tier[6],verdaechtiger[6]);
spielfelder[7] = new Spielfeld("Stall",tier[7],verdaechtiger[7]);
// Spielfelder das Nächste
spielfelder[1].setNaechstes(spielfelder[2]);
spielfelder[2].setNaechstes(spielfelder[3]);
spielfelder[3].setNaechstes(spielfelder[4]);
spielfelder[4].setNaechstes(spielfelder[5]);
spielfelder[5].setNaechstes(spielfelder[6]);
spielfelder[6].setNaechstes(spielfelder[7]);
spielfelder[7].setNaechstes(spielfelder[0]);
spielfelder[0].setNaechstes(spielfelder[1]);
//Soielfelder das Vorherige
spielfelder[7].setVorheriges(spielfelder[0]);
spielfelder[0].setVorheriges(spielfelder[7]);
spielfelder[1].setVorheriges(spielfelder[6]);
spielfelder[2].setVorheriges(spielfelder[5]);
spielfelder[3].setVorheriges(spielfelder[4]);
spielfelder[4].setVorheriges(spielfelder[3]);
spielfelder[5].setVorheriges(spielfelder[2]);
spielfelder[6].setVorheriges(spielfelder[1]);
for (int i = 0;i<tier.length;i++){
System.out.println(spielfelder[i]);
}
// Spielfigur erstellen
figur = new Spielfigur(spielfelder[3]);
// Obst zuweisen
for (int i = 0;i<obstsorten.length ;i++ ) {
int rnd = (int)(Math.random()*8);
if (spielfelder[rnd].getObst()==null) {
spielfelder[rnd].setObst(obstsorten[i]);
for (int j = 0;j<tier.length;j++){
System.out.println(spielfelder[j].getObst());
}
System.out.println("\n");
} // end of if
else {
i--;
continue;
} // end of if-else
} // end of for
for (int j = 0;j<tier.length;j++){
System.out.println(spielfelder[j].getObst());
}
// Schluessel setzten
for (int i = 0;i<schluessel.length ;i++ ) {
int rnd = (int)(Math.random()*8);
if (spielfelder[rnd].getSchluessel()==null) {
spielfelder[rnd].setSchluessel(schluessel[i]);
} // end of if
else {
i--;
continue;
} // end of if-else
} // end of for
for (int j = 0;j<tier.length;j++){
System.out.println(spielfelder[j].getSchluessel());
}
// Ring verstecken
int rnd = (int)(Math.random()*8);
spielfelder[rnd].setTruhe(true);
// Tiere den Schuldigen bekannt geben & die rnd Variable wird von "Ring verstecken" übernommen um das Feld des Schuldigen einfacher zu Bestimmen
for (int i = 0;i<spielfelder.length ;i++ ) {
spielfelder[i].getTier().setNameDesSchuldigen(spielfelder[rnd].getVerdaechtiger().getName());
} // end of for
// Tiere bekannt geben was sie Fressen möchten
for (int i = 0;i<tier.length ;i++ ) {
rnd = (int)(Math.random()*8);
if (tier[rnd].getMoechteFressen()==null) {
tier[rnd].setMoechteFressen(obstsorten[i]);
} // end of if
else {
i--;
continue;
} // end of if-else
} // end of for
}
public Verdaechtiger[] getVerdaechtiger(){
return verdaechtiger;
}
public Spielfeld[] getSpielfelder() {
return spielfelder;
}
public String[] getObstsorten(){
return obstsorten;
}
public void wegstreichenObstsorten(int i){
obstsorten[i]=null;
}
public void wegstreichenSchluessel(int i){
schluessel[i]=null;
}
public String[] getSchluessel(){
return schluessel;
}
public Spielfigur getFigur(){
return figur;
}
public Wuerfel getWuerfel(){
return wuerfel;
}
}
Java:
public class Spieler {
private String name;
private Spielfigur figur;
private Wuerfel wuerfel;
private String[] gegensteande = new String[13];
private Spielbrett brett;
// konstruktor
public Spieler(String name, String farbe, Spielfigur figur, Wuerfel wuerfel){;
this.name = name;
this.figur = figur;
figur.setFarbe(farbe);
this.wuerfel = wuerfel;
}
public void wuerfeln(){
int augen = wuerfel.wuerfeln();
figur.setzen(augen, Tastatur.readChar());
wuerfel = null;
}
public String getName(){
return name;
}
public Spielfigur getSpielfigur(){
return figur;
}
public String suchen(){
String[] sorten = new String[8];
for (int i = 0;i<sorten.length ;i++ ) {
// Ich möchte nun die Namen, des in der Klasse Spielbrett gespeicherten Arrays "obstsorten",mit der Methode ".getObstsorten(Zeile 162 Spielbrett)" in das Array "sorten" der Klasse Spieler übernehmen
// Dies allerdings funktioniert nicht, da eine NullPointerException ausgelöst wird
// Wieso wird diese ausgelöst?
sorten[i] = brett.getObstsorten()[i];
} // end of for
String[] schluessel = new String[8];
for (int i = 0;i<schluessel.length ;i++ ) {
// Selber Fall mit den Schlüsseln! siehe obere Beschreibung
schluessel[i] = brett.getSchluessel()[i];
} // end of for
String gefundenerGegenstand="";
if (figur.getStehtAuf().getObst().equals(null)) {
for (int i = 0;i<schluessel.length ;i++ ) {
if (figur.getStehtAuf().getSchluessel().equals(schluessel[i])) {
gefundenerGegenstand = schluessel[i];
brett.wegstreichenSchluessel(i);
break;
} // end of for
} // end of for
} // end of if
else if(figur.getStehtAuf().getObst().equals(null) && figur.getStehtAuf().getSchluessel().equals(null)) {
gefundenerGegenstand = "nichts";
} // end of if-else
else {
for (int i = 0;i<sorten.length ;i++ ) {
if (figur.getStehtAuf().getObst().equals(sorten[i])) {
gegensteande[i] = sorten[i];
brett.wegstreichenObstsorten(i);
gefundenerGegenstand = gegensteande[i];
break;
} // end of if
} // end of if
} // end of if-else
return gefundenerGegenstand;
}
public String sprechen(){
String moechtefressen = figur.getStehtAuf().getTier().getMoechteFressen();
return moechtefressen;
}
public String geben(){
boolean inBesitzObst = false;
String nameDesVerdaechtigen="";
Spielfeld positionDesSchuldigen=null;
String kleidung="";
for (int i = 0;i<gegensteande.length ;i++ ) {
if (figur.getStehtAuf().getTier().getMoechteFressen().equals(gegensteande[i])) {
gegensteande[i]=null;
inBesitzObst=true;
} // end of if
} // end of for
if (inBesitzObst==true) {
nameDesVerdaechtigen = figur.getStehtAuf().getTier().getNameDesSchuldigen();
} // end of if
for (int i = 0;i<brett.getVerdaechtiger().length ;i++ ) {
if (brett.getVerdaechtiger()[i].equals(nameDesVerdaechtigen)) {
int rnd = (int)(Math.random()*4)+1;
String nameDesSchuldigen = figur.getStehtAuf().getTier().getNameDesSchuldigen();
for (int j = 0;i<brett.getVerdaechtiger().length ;j++ ) {
if (nameDesSchuldigen.equals(brett.getSpielfelder()[j].getVerdaechtiger().getName())) {
positionDesSchuldigen = brett.getSpielfelder()[j];
} // end of if
} // end of for
if (rnd==1) {
boolean hatHut = positionDesSchuldigen.getVerdaechtiger().getHut();
kleidung = "Hut";
} // end of if
if (rnd==2) {
boolean hatSchuhe = positionDesSchuldigen.getVerdaechtiger().getSchuhe();
kleidung = "Schuhe";
} // end of if
if (rnd==3) {
boolean hatOberteil = positionDesSchuldigen.getVerdaechtiger().getOberteil();
kleidung = "Oberteil";
} // end of if
if (rnd==4) {
boolean hatHose = positionDesSchuldigen.getVerdaechtiger().getHose();
kleidung = "Hose";
} // end of if
} // end of if
} // end of for
return kleidung ;
}
public boolean oeffnenTruhe(){
boolean gewonnen = false;
boolean vorhandenSchluessel = false;
for (int i = 0;i<gegensteande.length ;i++ ) {
if (gegensteande[i].equals("Schlüssel")) {
vorhandenSchluessel = true;
} // end of if
} // end of for
if (vorhandenSchluessel = true) {
if (figur.getStehtAuf().getTruhe()==true){
gewonnen = true;
}
} // end of if
return gewonnen;
}
}