Hi!
Bin dabei eine Art Glücksrad zu programmieren.
Ich bin mittlerweile total durcheinander und weiß nicht, wieso mein Code für den Spielablauf nicht einwandfrei funktioniert.
Es lässt sich wunderbar kompilieren, aber ab und zu ist ein Spieler dran, obwohl er gar nicht dran sein sollte, bzw. das Spiel hört einfach nach einem Dreh auf.
Ich würde mich freuen, wenn jemand mir dahingehend weiterhelfen könnte.
Außerdem würde mich rein code-design-technisch interessieren, ob die Methode zum testen, was beim jeweils gedrehten Betrag passieren soll, eher zur Glücksrad-Klasse oder zur Spieler-Klasse gehört.
Es ist ja klar, dass ein Spieler-Objekt drehen kann.
Aber wer soll nun die Methode zum erdrehten Betrag beinhalten?! Würde mich halt rein OOP-technisch interessieren!
Hier nun der Code:
Bin dabei eine Art Glücksrad zu programmieren.
Ich bin mittlerweile total durcheinander und weiß nicht, wieso mein Code für den Spielablauf nicht einwandfrei funktioniert.
Es lässt sich wunderbar kompilieren, aber ab und zu ist ein Spieler dran, obwohl er gar nicht dran sein sollte, bzw. das Spiel hört einfach nach einem Dreh auf.
Ich würde mich freuen, wenn jemand mir dahingehend weiterhelfen könnte.
Außerdem würde mich rein code-design-technisch interessieren, ob die Methode zum testen, was beim jeweils gedrehten Betrag passieren soll, eher zur Glücksrad-Klasse oder zur Spieler-Klasse gehört.
Es ist ja klar, dass ein Spieler-Objekt drehen kann.
Aber wer soll nun die Methode zum erdrehten Betrag beinhalten?! Würde mich halt rein OOP-technisch interessieren!
Hier nun der Code:
Code:
public class glücksrad {
private Spieler spieler1;
private Spieler spieler2;
private Spieler spieler3;
int aktuellerSpieler = 2;
String aktuellerName;
public glücksrad ()
{
spieler1 = new Spieler("Mannfred", 0, this, true);
spieler2 = new Spieler("Klaus", 0, this, false);
spieler3 = new Spieler("Bernd", 0, this, false);
naechster();
}
// wer ist als nächstes dran? --> naechster
public void naechster()
{
/*
/ Wenn Spielernummer 2 ist, prüfe ob Spieler1 noch dran ist.
/ Wenn nicht, setze Spielernummer auf 3 und Spieler2 ist an der Reihe!
/ Wenn doch, gib aus, dass Spieler1 dran ist und drehe das Rad!
*/
if (aktuellerSpieler == 2)
{
if (spieler1.istDran() == false)
{
aktuellerSpieler = 3;
spieler2.setIstDran(true);
}
else
{
System.out.println("Spieler 1 ist dran!");
spieler1.drehen();
}
}
/*
/ Wenn Spielernummer 3 ist, prüfe ob Spieler2 noch dran ist.
/ Wenn nicht, setze Spielernummer auf 1 und Spieler3 ist an der Reihe!
/ Wenn doch, gib aus, dass Spieler2 dran ist und drehe das Rad!
*/
if (aktuellerSpieler == 3)
{
if (spieler2.istDran() == false)
{
aktuellerSpieler = 1;
spieler3.setIstDran(true);
}
else
{
System.out.println("Spieler 2 ist dran!");
spieler2.drehen();
}
}
/*
/ Wenn Spielernummer 1 ist, prüfe ob Spieler3 noch dran ist.
/ Wenn nicht, setze Spielernummer auf 2 und Spieler1 ist an der Reihe!
/ Wenn doch, gib aus, dass Spieler3 dran ist und drehe das Rad!
*/
if (aktuellerSpieler == 1)
{
if (spieler3.istDran() == false)
{
aktuellerSpieler = 2;
spieler1.setIstDran(true);
}
else
{
System.out.println("Spieler 3 ist dran!");
spieler3.drehen();
}
}
}
public static void main(String args[])
{
new glücksrad();
}
}
Code:
public class Spieler {
private String name; // Name des Spielers
private int kontostand; // Kontostand Spieler 1
private int zahl; // Zufallszahl für gedrehtes Feld
private int betrag; // erdrehter Betrag muss noch getBetrag gemacht werden!!
private boolean istDran; // dran?
private String felder[] = { "Pleite :-P", "500", "200", "1000", "200", "Aussetzen", "Bonus", "2000", "Pleite :-P",
"500", "200", "5000", "1000", "Aussetzen", "Bonus", "2000"};
// Glücksrad wird bereitgestellt
glücksrad rad;
// Konstruktor
public Spieler (String name, int kontostand, glücksrad rad, boolean istDran)
{
setName(name);
setKontostand(kontostand);
setIstDran(istDran);
this.rad = rad;
}
// Methode setName legt den Namen des Spielers fest.
public void setName(String name)
{
this.name = name;
}
// Methode getName liefert den Namen des Spielers.
public String getName()
{
return name;
}
// Methode setKontostand legt den Kontostand des Spielers fest.
public void setKontostand(int kontostand)
{
this.kontostand = kontostand;
}
// Methode getKontostand liefert den Kontostand des Spielers
public int getKontostand()
{
return kontostand;
}
// Methode setIstdran legt fest, ob der Spieler an der Reihe ist.
public void setIstDran(boolean istDran)
{
this.istDran = istDran;
}
// Methode istDran ermittelt, ob der Spieler dran ist.
public boolean istDran()
{
return istDran;
}
// Methode drehen simuliert das Drehen des Rades.
public void drehen()
{
// Berechne Zufallsbegriff
zahl = (int) (Math.random() * 16);
String feld = felder[zahl];
System.out.println("gedrehter Betrag: "+felder[zahl]);
switch (zahl)
{
// Wenn Bankrott -> Kontostand auf 0, nächster Spieler!
case 0: case 8: kontostand = 0; istDran = false; rad.naechster();
// Wenn Aussetzen -> nächster Spieler!
case 5: case 13: istDran = false; rad.naechster();
// Wenn Bonus -> nächster Spieler! (muss noch geändert werden)
case 6: case 14: istDran = false; rad.naechster();
// Wenn 500 -> fuege 500 zum Konto hinzu, Spieler ist weiterhin dran.
case 1: case 9: kontostand += 500; istDran = true ;break;
// Wenn 200 -> fuege 200 zum Konto hinzu, Spieler ist weiterhin dran.
case 2: case 4: case 10: kontostand += 200; istDran = true;break;
// Wenn 1000 -> fuege 1000 zum Konto hinzu, Spieler ist weiterhin dran.
case 3: case 12: kontostand += 1000;istDran = true;break;
// Wenn 2000 -> fuege 2000 zum Konto hinzu, Spieler ist weiterhin dran.
case 7: case 15: kontostand += 2000;istDran = true;break;
// Wenn 5000 -> fuege 5000 zum Konto hinzu, Spieler ist weiterhin dran.
case 11: kontostand += 5000;istDran = true;break;
}
}
}