Hallo an alle!
Ich habe mir ein kleines Dartspiel programmiert danach habe ich einen Abspann für den Gewinner programmiert.
Nun will ich wenn der Gewinner festliegt der Abspann aufgerufen wird es zeigt aber immer Fehler an ;(
Bei Spiel zeigt es den Fehler bei Zeile 174 und bei Gewonnen bei 58 an!
Hier die Spiel Klasse
Hier die Gewonnen Klasse
Ich habe mir ein kleines Dartspiel programmiert danach habe ich einen Abspann für den Gewinner programmiert.
Nun will ich wenn der Gewinner festliegt der Abspann aufgerufen wird es zeigt aber immer Fehler an ;(
Bei Spiel zeigt es den Fehler bei Zeile 174 und bei Gewonnen bei 58 an!
Hier die Spiel Klasse
Java:
package dart;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Spiel {
public static void main(String[] args) {
int Mittspieler;
int Punkte = 301;
int anzahlWuerfe;
String Gewinner = "";
int besterWurf;
int schlechtesterWurf;
// Liste mit Objekten
ArrayList<Person> Spieler = new ArrayList<Person>();
// Endlosschleife bis eine Zahl eingegeben wurde
while (true) {
try {
String Eingabe = JOptionPane
.showInputDialog("Wieviele Mittspieler");
if (Eingabe == null) { System.exit(0);}
Mittspieler = Integer.parseInt(Eingabe);
break;
} catch (Exception e) {
System.out.println("Das war keine Zahl!");
JOptionPane.showMessageDialog(null, "Das war keine Zahl");
}
}
// hier folgt eine ausgabe
System.out.println("Danke für die Eingabe");
JOptionPane.showMessageDialog(null, "Danke für die Eingabe");
// hier werden die Personen angelegt mit Anzahl der Eingabe Mitspieler
for (int i = 1; i <= Mittspieler; i++) {
String Vorname = JOptionPane.showInputDialog("Vorname ");
String Nachname = JOptionPane.showInputDialog("Nachname ");
Person person = new Person(Vorname, Nachname, Punkte);
Spieler.add(person);
}
label: do {
for (Person ob : Spieler) {
// Aktueler Punktestand zu beginn der Runde
int Startpunkte = ob.getPunkte();
label2: for (int w = 1; w <= 3; w++) {
boolean richtigeZahl = false;
int AktuellePunkte = 0;
String Geworfen = null;
do {
while (true) {
try {
Geworfen = JOptionPane.showInputDialog("Wurf"
+ w + " " + ob.getVorname() + " "
+ ob.getNachname());
AktuellePunkte = Integer.parseInt(Geworfen);
break;
} catch (Exception e) {
System.out.println("Das war keine Zahl!");
JOptionPane.showMessageDialog(null,
"Das war keine Zahl");
}
}
if (checkWurf(AktuellePunkte)) {
richtigeZahl = true;
}
// Prüft ob Wurf gültig war wird gantz unten als ein
// Objekt übergeben mit
// den Werten true ore false ob checkWurf die Aktuellen
// Punkte bekommt
// setzt dann den Wert richtige Zahl auf true
else {
System.out.println("Kann nicht sein");
JOptionPane.showMessageDialog(null, "Kann"
+ " nicht" + " sein");
}
} while (richtigeZahl == false);
// läuft die else so lange durch bis sie oben beim if true
// ergibt
if (ob.getPunkte() - AktuellePunkte == 0) {
// Gewinnername wird declariert
Gewinner = ob.getVorname() + " " + ob.getNachname();
anzahlWuerfe = ob.getAnzahlWuerfe();
besterWurf = ob.getHoechsterWurf();
schlechtesterWurf = ob.getNidrigsterWurf();
break label;
}
else if (ob.getPunkte() - AktuellePunkte < 0) {
// Punkte wieder aufaddieren
ob.setPunkte(Startpunkte);
System.out.println("Sie haben überworfen Sie haben"
+ "jetzt" + " wieder" + " " + ob.getPunkte()
+ " " + "Punkte" + " " + ob.getVorname() + " " + ob.getNachname());
JOptionPane.showMessageDialog(null,
"Sie haben überworfen Sie haben" + "jetzt "
+ "wieder" + " " + ob.getPunkte() + " "
+ "Punkte" + " " + ob.getVorname() + " " + ob.getNachname());
break label2;
}
ob.setGeworfen(Integer.parseInt(Geworfen));
}
System.out.println(ob.getVorname() + " " + ob.getNachname()
+ " " + "hat jetzt noch" + " " + ob.getPunkte() + " "
+ "Punkt(e)");
JOptionPane.showMessageDialog(null,
ob.getVorname() + " " + ob.getNachname() + " "
+ "hat jetzt noch" + " " + ob.getPunkte() + " "
+ "Punkte");
int Wurfgesamt;
Wurfgesamt = Startpunkte - ob.getPunkte();
if (Wurfgesamt > ob.getHoechsterWurf()) {
ob.setHoechsterWurf(Wurfgesamt);
}
int Wurfgesamt2;
Wurfgesamt2 = Startpunkte - ob.getPunkte();
if (Wurfgesamt2 < ob.getNidrigsterWurf()) {
ob.setNidrigsterWurf(Wurfgesamt2);
}
}
} while (true);
anzahlWuerfe = anzahlWuerfe + 1;
System.out.println("Spiel beendet. " + " " + Gewinner + " "
+ "hat gewonnen" + " " + " " + "Mit Wurf" + " " + anzahlWuerfe
+ " " + "Der Höchste Wurf in diesem Spiel war: " + besterWurf
+ " " + "Der nidrigste Wurf war" + " " + schlechtesterWurf);
JOptionPane.showMessageDialog(null, "Spiel beendet." + Gewinner + " "
+ "hat gewonnen" + " " + "Mit Wurf" + " " + anzahlWuerfe);
//Methode von Gewonnen aufrufen hier zeigt es den Fehler an
Gewonnen SpielGewonnen = new Gewonnen();
SpielGewonnen.drawImage();
}
public static boolean checkWurf(int AktuellePunkte) {
if (AktuellePunkte > 60) {
return false;
}
int[] zahlen = { 23, 25, 29, 31, 37, 41, 43, 47, 49, 53, 55, 59 };
for (int i = 0; i < zahlen.length; i++) {
if (zahlen[i] == AktuellePunkte) {
return false;
}
}
return true;
}
}
Hier die Gewonnen Klasse
Java:
package dart;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Gewonnen extends JFrame implements ActionListener {
private JButton Knopf;
public Gewonnen() {
super("Gewonnen");
JPanel Platte = new JPanel();
Platte.setLayout(new FlowLayout());
Platte.setBackground(Color.black); // <--Schwartzer Hintergrund
Knopf = new JButton("Drück mich!");
Knopf.addActionListener(this);
Box Oben = Box.createHorizontalBox();
Oben.setPreferredSize(new Dimension(400, 100));
Platte.add(Oben);
Platte.add(Knopf);
setContentPane(Platte);
}
public void actionPerformed(ActionEvent Ereignis) {
drawImage();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Gewonnen Rahmen = new Gewonnen();
Rahmen.setSize(400, 300);
Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Rahmen.setVisible(true);
}
// Methode
public void drawImage() {
Graphics Stift = getGraphics();
Dimension Groesse = getSize();
int Breite = Groesse.width;
int Hoehe = Groesse.height;
for (int i = 0; i < 200; i++) {
final int FMax = 9;
Color[] Farbe = { Color.black, Color.gray, Color.white,
Color.cyan,
Color.magenta, Color.yellow, Color.red, Color.green,
Color.blue };
// hier zeigt es den anderen Fehler an
Stift.setColor(Farbe[(int) (Math.random() * FMax)]);
Stift.setFont(new Font("Arial", Font.PLAIN,
(int) (Math.random() * 40)));
Stift.drawString("Gewonnen", (int) (Math.random() * Breite),
(int) (Math.random() * Hoehe));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}