D
dyn
Gast
Hi, ich möchte eine Art Glücksrad programmieren.
Ich möchte mit den beiden Klassen "spieler" und "glücksrad" den Spielablauf simulieren.
Ich habe versucht es so objektorientiert wie möglich zu gestalten, sonst hätte ich wohl einfach alles in eine Klasse gepackt
Da das quasi mein erstes eigenes Programm ist bin ich was das angeht noch ein wenig unsicher und habe das ganze erstmal über System.out.println gemacht ohne GUI-Anbindung und ohne Überprüfung ob der gewählte Buchstabe im gesuchten Begriff vorhanden ist.
Von daher würde ich mich sehr freuen, wenn ihr mir sagen könntet,
1. wieso ich beim Kompilieren der glücksrad.class folgende Fehlermeldung bekomme(ich steig einfach nicht mehr durch):
Exception in thread "main" java.lang.NullPointerException
at glücksrad.naechster(glücksrad.java:42)
at glücksrad.<init>(glücksrad.java:29)
at glücksrad.main(glücksrad.java:65)
2. ob es überhaupt Sinn macht den Spielablauf ungefähr so gestalten zu wollen oder ob das ein schlechter Programmierstil ist.
3. wie ich einen Namen, den ich in einer anderen Klasse über ein Textfeld einlesen lasse, so übergebe, dass die Spieler eben nicht Mannfred, Klaus und Bernd heißen, sondern den Namen bekommen, der ins Textfeld eingebeben wird.
und
:###
Ich möchte mit den beiden Klassen "spieler" und "glücksrad" den Spielablauf simulieren.
Ich habe versucht es so objektorientiert wie möglich zu gestalten, sonst hätte ich wohl einfach alles in eine Klasse gepackt
Da das quasi mein erstes eigenes Programm ist bin ich was das angeht noch ein wenig unsicher und habe das ganze erstmal über System.out.println gemacht ohne GUI-Anbindung und ohne Überprüfung ob der gewählte Buchstabe im gesuchten Begriff vorhanden ist.
Von daher würde ich mich sehr freuen, wenn ihr mir sagen könntet,
1. wieso ich beim Kompilieren der glücksrad.class folgende Fehlermeldung bekomme(ich steig einfach nicht mehr durch):
Exception in thread "main" java.lang.NullPointerException
at glücksrad.naechster(glücksrad.java:42)
at glücksrad.<init>(glücksrad.java:29)
at glücksrad.main(glücksrad.java:65)
2. ob es überhaupt Sinn macht den Spielablauf ungefähr so gestalten zu wollen oder ob das ein schlechter Programmierstil ist.
3. wie ich einen Namen, den ich in einer anderen Klasse über ein Textfeld einlesen lasse, so übergebe, dass die Spieler eben nicht Mannfred, Klaus und Bernd heißen, sondern den Namen bekommen, der ins Textfeld eingebeben wird.
Code:
public class glücksrad {
Spieler spieler1;
Spieler spieler2;
Spieler spieler3;
int aktuellerSpieler = 2;
String aktuellerName;
public glücksrad ()
{
Spieler spieler1 = new Spieler("Mannfred", 0);
Spieler spieler2 = new Spieler("Klaus", 0);
Spieler spieler3 = new Spieler("Bernd", 0);
// Die methode naechster() soll quasi das Programm einleiten
naechster();
}
// wer ist als nächstes dran? --> naechster
public void naechster()
{
if (aktuellerSpieler == 2)
{
spieler1.drehen();
System.out.println(spieler1.getKontostand());
}
if (aktuellerSpieler == 1)
{
spieler2.drehen();
System.out.println(spieler2.getKontostand());
}
if (aktuellerSpieler == 2)
{
spieler3.drehen();
System.out.println(spieler3.getKontostand());
}
}
public static void main(String args[])
{
new glücksrad();
}
}
und
Code:
public class Spieler {
protected String name; // Name des Spielers
protected int kontostand; // Kontostand Spieler 1
int zahl; // Zufallszahl für gedrehtes Feld
String felder[] = { "Pleite :-P", "500", "200", "1000", "200", "Aussetzen", "Bonus", "2000", "Pleite :-P",
"500", "200", "5000", "1000", "Aussetzen", "Bonus", "2000"};
glücksrad rad;
//default Konstruktor
public Spieler()
{
setName("");
setKontostand(0);
glücksrad rad = new glücksrad();
}
public Spieler (String name, int kontostand)
{
setName(name);
setKontostand(kontostand);
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setKontostand(int kontostand)
{
this.kontostand = kontostand;
}
public int getKontostand()
{
return kontostand;
}
public void drehen()
{
for (int i = 0; i<=10; i++)
{
zahl = (int) (Math.random() * 16);
String feld = felder[zahl];
}
// Bankrott
if (zahl == 0 || zahl == 8)
{
kontostand = 0;
rad.naechster();
}
// Aussetzen
if (zahl == 5 || zahl == 13)
{
rad.naechster();
}
// "Bonus" ist noch nicht implementiert, erstmal wie "aussetzen"
if (zahl == 6 || zahl == 14)
{
rad.naechster();
}
switch (zahl)
{
case 1: case 9: kontostand += 500;
case 2: case 4: case 10: kontostand += 200;
case 3: case 12: kontostand += 1000;
case 7: case 15: kontostand += 2000;
case 11: kontostand = 5000;
}
}
}
:###