# Fehler beim Stein Scher papier Spiel



## Der_Niko (7. Dez 2008)

Hallo Freunde,

n Kumpel muss für die Schule oben genanntes Spiel programmieren. Doch leider zeigt sein Quelltext fehler an.
Würde mich echt freuen wenn einer von euch diesen beheben könnte, weil so wie ich das rausgehört hab, muss er das auf Zensur abgeben :shock: 

ich hab das e beim titel nicht vergessen, aber das es darf kein here vorkommen^^


```
import java.awt.*;
import java.awt.event.*;

/**
*
* Beschreibung
*
* @version 1.0 vom 30.11.2008
* @author
*/
import javax.swing.JOptionPane;

public class Knobeln1{

public class jojo extends Frame {
// Anfang Attribute
private Button BT_schere = new Button();
private Button BT_stein = new Button();
private Button BT_papier = new Button();
private Button BT_beenden = new Button();

// Ende Attribute
public static void main(String[] args)
{
//Deklarationen und Initialisierung
int eingabe, rechnertipp, gewinner;
String eingabeString;

public jojo(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 500;
int frameHeight = 500;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSiz e();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Panel cp = new Panel(null);
add(cp);
// Anfang Komponenten

BT_schere.setBounds(104, 64, 273, 65);
BT_schere.setLabel("Schere";
BT_schere.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BT_schere_ActionPerformed(evt);
}
});
BT_schere.setFont(new Font("Old English Text MT", Font.BOLD, 27));
BT_schere.setForeground(Color.black);
cp.add(BT_schere);
BT_stein.setBounds(104, 160, 273, 65);
BT_stein.setLabel("Stein";
BT_stein.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BT_stein_ActionPerformed(evt);
}
});
BT_stein.setFont(new Font("Old English Text MT", Font.BOLD, 27));
BT_stein.setForeground(Color.(none));
cp.add(BT_stein);
BT_papier.setBounds(104, 264, 273, 65);
BT_papier.setLabel("Papier";
BT_papier.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BT_papier_ActionPerformed(evt);
}
});
BT_papier.setFont(new Font("Old English Text MT", Font.BOLD, 27));
BT_papier.setForeground(Color.(none));
cp.add(BT_papier);
BT_beenden.setBounds(296, 376, 161, 57);
BT_beenden.setLabel("Beenden";
BT_beenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BT_beenden_ActionPerformed(evt);
}
});
BT_beenden.setFont(new Font("Old English Text MT", Font.BOLD, 23));
BT_beenden.setForeground(Color.(none));
cp.add(BT_beenden);
TF_ausgabe.setBounds(16, 368, 225, 72);
TF_ausgabe.setText("";
cp.add(TF_ausgabe);
// Ende Komponenten

setResizable(false);
setVisible(true);
}

// Anfang Methoden
public void BT_schere_ActionPerformed(ActionEvent evt) {
eingabe = 1;// TODO hier Quelltext einfügen
}

public void BT_stein_ActionPerformed(ActionEvent evt) {
eingabe = 2; // TODO hier Quelltext einfügen
}

public void BT_papier_ActionPerformed(ActionEvent evt) {
eingabe = 3; // TODO hier Quelltext einfügen
}

public void BT_beenden_ActionPerformed(ActionEvent evt) {
eingabe = 0; // TODO hier Quelltext einfügen
}

// Ende Methoden
```


```
So, und dann das...

/*************************************** ************
Klasse, die Stein, Schere, Papier spielt
0 ... Programm beenden
1 ... Stein
2 ... Schere
3 ... Papier
******************************** ********************
todo:
# abfangen wenn der Spieler "" (keine Eingabe) tätigt
# eigene Methode zur Ermittlung des Gewinners
# Ausgabe verbessern (statt 1,2,3 Stein,Schere,Papier) [in eigener Methode]
****************************** *********************/


// Anfang Methoden


while(eingabe!=0)
{
//Zufallszahl von 1 bis 3 bestimmen
rechnertipp=1 (int)(Math.random()*3);
//Gewinner auf "0" zurücksetzen
gewinner=0;

//Spieler hat Stein, Rechner hat Schere --> Sieger ist Spieler
if(eingabe==1 && rechnertipp==2)gewinner=1;
//Spieler hat Stein, Rechner hat Papier --> Sieger ist Rechner
if(eingabe==1 && rechnertipp==3)gewinner=2;
//Spieler hat Schere, Rechner hat Papier --> Sieger ist Spieler
if(eingabe==2 && rechnertipp==3)gewinner=1;
//Spieler hat Schere, Rechner hat Stein --> Sieger ist Rechner
if(eingabe==2 && rechnertipp==1)gewinner=2;
//Spieler hat Papier, Rechner hat Stein --> Sieger ist Spieler
if(eingabe==3 && rechnertipp==1)gewinner=1;
//Spieler hat Papier, Rechner hat Schere --> Sieger ist Rechner
if(eingabe==3 && rechnertipp==2)gewinner=2;

//nach gewinner unterscheiden
if(gewinner==0)
//keiner der obigen Fälle (ein Sieger) trat ein und gewinner ist noch immer "0"
{
JOptionPane.showMessageDialog(null,"Unen tschieden",
"Spielausgang", JOptionPane.INFORMATION_MESSAGE);
}else{
//einer der obigen Fälle ist eingetreten
if(gewinner==1)
//Spieler hat gewonnen
{
JOptionPane.showMessageDialog(null,"Spie ler hat gewonnen"
"\nSpieler= " eingabe "\nRechner= " rechnertipp,
"Spielausgang", JOptionPane.INFORMATION_MESSAGE);
}else{
//Rechner hat gewonnen
JOptionPane.showMessageDialog(null,"Rech ner hat gewonnen"
"\nSpieler= " eingabe "\nRechner= " rechnertipp,
"Spielausgang", JOptionPane.INFORMATION_MESSAGE);
}//ende if
}//ende if


}//ende while

System.exit(0);
}//ende main-Methode
// Ende Methoden

public static void main(String[] args) {
new jojo("jojo";
}
}//ende class

}
```

lg der Niko


----------



## Bert Brenner (7. Dez 2008)

Dieses Forum ist soweit ich weiss, nicht für Hausaufgaben gedacht.

Ein paar Tips:
1: Klassen Schreibt man gross.
2: Code kann man einrücken um Abschnitte leichter zu erkennen.
3: Zeile 13 und 15 Hintereinander macht irgendwie keinen Sinn.
4: new jojo("jojo";  <--- Habt ihr überhaupt mal geschaut was ihr da so zusammengetippt habt?


----------



## Der_Niko (7. Dez 2008)

Ich hab damit sowieso nichts zu tun...bloß sein Inet ist kaputt 
Aber die Hausaufgaben hat er ja größtenteils selber gemacht, es sind ja nur ein paar Fehler wohl aufgetreten

aber trotzdem vielen dank für die schnelle Hilfe =)
achso wegen dem "code kann man einrücken"
das hat er bestimmt gemacht, aber er hat mir dass per SVz geschickt und deswegen sieht das so unschön aus, glaub ich

werd mich bald melden obs was gebracht hat


----------



## Der_Niko (8. Dez 2008)

Sorry wegen dem Doppelpost...aber ich wollt ja bescheidsagen...
er bedankt sich erstmal ganz herzlich bei dir und fragt nachdem er deine genannten fehler behoben hat ob sonst aber alles so ok ist?


So er hat es heute abgegeben und bedankt sich recht Herzlich für die Hilfe.
Der Thread kann also geschlossen werden


----------

