Stein, Schere, Papier

Status
Nicht offen für weitere Antworten.

Vril

Bekanntes Mitglied
Bin dabei ein kleines Spiel zu schreiben. Dürfte ja jeden bekannt sein: Stein schlägt Schere, Papier schlägt Stein und Schere schlägt Papier.

Hab dazu drei entsprechende Buttons angelegt denen jeweils eine Zahl von 1 bis 3 zugeordnet ist. 1 = Stein,
2 = Schere und 3 = Papier. Dann erzeuge ich eine Zufallszahl zwischen 1 und 3.

Eine if Abfrage behandelt dann, wenn Stein gedrück und Zufallszahl = 2 gewonnen; wenn Papier gedrück und Zufallszahl = 1 gewonnen; wenn Schere gedrückt und Zufallszahl = 3 gewonnen. Ansonsten verloren.

Irgendwie wird aber nie was ausgegeben, ich kann keinen Fehler im Code entdecken!

Hat jemand zufällig eine Idee an was das liegen könnte?

Code:
import java.awt.*;
import java.awt.event.*;

public class Stein_Schere_Papier extends Frame implements ActionListener {
	
	private Button stein,schere,papier;
	int einsatz, auswahl;
	
	
	public Stein_Schere_Papier (String title) {
		super(title);
		setSize(300,400);
		setLayout(new FlowLayout());
		
		Button stein = new Button("STEIN");
		add(stein);
		stein.addActionListener(this);
		Button schere = new Button ("SCHERE");
		add(schere);
		schere.addActionListener(this);
		Button papier = new Button ("PAPIER");
		add(papier);
		papier.addActionListener(this);
		
		setVisible(true);
	}
	public void actionPerformed(ActionEvent event){
		
	
	  if (event.getSource() == stein)
			auswahl = 1;
		
		if (event.getSource() == schere)
			auswahl = 2;
			
	  if (event.getSource() == papier)
	  	auswahl = 3;

	  repaint();
	}
	public void paint(Graphics g){
	  einsatz = (int)(Math.random()*3)+1;
	  	  
	  if (auswahl == 1 && einsatz == 2) {
	     g.drawString("Gewonnen",100,200);}
	     
	  else if (auswahl == 2 && einsatz == 3){
	  	 g.drawString("Gewonnen", 100, 225);
	  }
	  else if (auswahl == 3 && einsatz == 1){
	  	g.drawString("Gewonnen",100,250);
	  }
	}
	
	public static void main (String[] args){
		new Stein_Schere_Papier("Ein Spiel: Stein, Schere, Papier");
	}
}
 

megachucky

Bekanntes Mitglied
getSource hab ich noch nie benutzt, aber ich würde es mal mit
setActionCommand und getActionCommand versuchen, dann müsste es auf jeden fall klappen...
 

Randall

Bekanntes Mitglied
Probiers mal so...bei mir hat das geklappt. Und zudem fängt ja deine if-Verzweigung nicht jede Eventualität ab....so dass nicht bei jedem klick was gezeichnet wird.. hab mal eine zusätzliche else-Verzweigung eingebaut,die das abfängt.

Code:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Stein_Schere_Papier extends Frame implements ActionListener {
   
   private Button stein,schere,papier;
   int einsatz, auswahl;   
    
   public Stein_Schere_Papier (String title) {
      super(title);
      setSize(300,400);
      setLayout(new FlowLayout());
    
     
      
      addWindowListener(new WindowAdapter(){
		public void windowClosing(WindowEvent evWindow)
		{System.exit(1);}
		});	
      
      Button stein = new Button("STEIN");
      add(stein);
      stein.addActionListener(this);
      Button schere = new Button ("SCHERE");
      add(schere);
      schere.addActionListener(this);
      Button papier = new Button ("PAPIER");
      add(papier);
      papier.addActionListener(this);
           
      setVisible(true);
   }
   public void actionPerformed(ActionEvent event){
      
   
     if (event.getActionCommand().equals("STEIN"))
         auswahl = 1;
     	
      
      if (event.getActionCommand().equals("SCHERE"))    
         auswahl = 2;
         
     if (event.getActionCommand().equals("PAPIER"))
        auswahl = 3;
     
     repaint();
   }
   
   public void paint(Graphics g){   	
     einsatz = (int)(Math.random()*3)+1; 
     System.out.println(einsatz);
     System.out.println(auswahl);
         
     if (auswahl == 1 && einsatz == 2) {
     	System.out.println("Auswahl = "+auswahl+" Einsatz = "+einsatz);
        g.drawString("Gewonnen",100,200);}        
        
     else if (auswahl == 2 && einsatz == 3){
         g.drawString("Gewonnen", 100, 225);
     }
     else if (auswahl == 3 && einsatz == 1){
        g.drawString("Gewonnen",100,250);
     }  
     else {g.drawString ("Verloren",100,250);}
   }
   
   public static void main (String[] args){
      new Stein_Schere_Papier("Ein Spiel: Stein, Schere, Papier");
   }
}
[/code]
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben