Spielautomat

Crix

Mitglied
Also ich hab einen Spielautomat versucht zu programmieren der funktioniert so es werde 3 Zahlen generiert falls die 3 Zahlen gleich sind hat man gewonnen. Graphisch wollte ich das so umsetzen das für jede Zahl ein bestimmter Kreis in einer Farbe gezeichnet wird allerdings funktioniert das ganze nicht so richtig.
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;



public class zufall extends JFrame implements ActionListener {
	JFrame jf = new JFrame();
	static int x,y,z;
	JButton k = new JButton("Neues Spiel!");
	public zufall() {
		jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
		jf.setSize(400,400);
		jf.setLocationRelativeTo(null);
		jf.setVisible(true);
		jf.setLayout(null);
		
		JLabel q = new JLabel();
		if( x == y && y == z )
			q.setText("Großer Gewinn!");
		else
			if ( y == z || z == x || x == y)
				q.setText("Kleiner Gewinn!");
			else			
				q.setText("Kein Gewinn");
		
		k.setSize(150,60);
		k.setLocation(0,310);
		k.addActionListener(this);
		add(k);
	}
	
	public static void main(String args[]){
		zufall z1 = new zufall();
		z = (int) (Math.random()*3+1);
		x = (int) (Math.random()*3+1);
		y = (int) (Math.random()*3+1);
	
	}
	public void actionPerformed(ActionEvent e) {
		k.repaint();
		
	}
	public void paintComponent(Graphics stift){
		jf.paintComponents(stift);
		
 		switch(z)
 		{
 			case(1): 
 				stift.setColor(Color.blue);
				stift.fillOval(120, 50, 50, 50);
 				break;
 			case(2): 
 				stift.setColor(Color.green);
 				stift.fillOval(20, 50, 50, 50);
 				break;
 			case(3): 
 				stift.setColor(Color.red);
 				stift.fillOval(20, 50, 50, 50);
 				break;
 		}
 		switch(x)
 		{
 			case(1): 
 				stift.setColor(Color.blue);
 				stift.fillOval(70, 50, 50, 50);
 				break;
 			case(2): 
 				stift.setColor(Color.green);
 				stift.fillOval(70, 50, 50, 50);
 				break;
 			case(3): 
 				stift.setColor(Color.red);
 				stift.fillOval(70, 50, 50, 50);
 				break;
 		}
 		switch(y)
 		{
 			case(1): 
 				stift.setColor(Color.blue);
 				stift.fillOval(120, 50, 50, 50);
 				break;
 			case(2): 
 				stift.setColor(Color.green);
 				stift.fillOval(120, 50, 50, 50);
 				break;
 			case(3): 
 				stift.setColor(Color.red);
 				stift.fillOval(120, 50, 50, 50);
 				break;
 		}
	}
}
 

Crix

Mitglied
Also das Problem ist im Moment nichts auf dem JFrame angezeigt wird weder die Kreise noch der Button oder die Texte.
 

XPrototypeX

Aktives Mitglied
Du solltest grundsätzlich vom JPanel erben und dort Zeichnen.
Dann noch paintComponents() Überschreiben und im Kopf der Methode super.paitComponents(); schreiben.
 

Crix

Mitglied
Tut mir leid wenn die Frage dumm erscheint. Aber was genau bedeutet "erben" in dem Zusammenhang?
Könntest du die genauen Änderungen bitte in meinen Code übernehmen und posten das wäre sehr nett.
 
Zuletzt bearbeitet:

XPrototypeX

Aktives Mitglied
...
Before du irgendwo Code kopierst, solltest du ihn auch verstehen.

Java:
public class zufall extends JFrame implements ActionListener

Du extends daher erweiterst JFrame. Anders Ausgedrückt die Klasse (übrigens Klassennamen groß, Methoden sowie variablen klein) Zufall erbt von der Klasse JFrame. Du kannst nun Methoden der vererbten Klasse erweitern/ überschreiben.
 

Crix

Mitglied
Ich hab den Code nicht kopiert ich hab ihn selber geschrieben.
Aber könntest du trotzdem bitte meinen Code mit deinen Vorschlägen erweitern.
 
Zuletzt bearbeitet:

Crix

Mitglied
Nein weil ich nicht genau verstehe was du meinst da ich noch Java-Anfänger bin wie auch auf meinem Profil stehen sollte.
 

MrClave

Bekanntes Mitglied
Erben bedeutet immer "extends lalilu", bzw. "implements lalilu".

Du solltest dir lieber erst mal OOP angucken, bevor du solche Sachen machst.

Dein Fehler wird daran liegen, dass du von JFrame erbst und deine Klasse somit schon ein JFrame ist, du aber zusätzlich noch ein JFrame Memberfield hast und dich dann dazu entschieden hast mit beiden mal so und mal so zu arbeiten.

Von Zeile 17 bis 21 arbeitest du mit deinem Member, bei Zeile 35 wiederrum mit der geerbeten Klasse.
Ist klar, dass da nichts bei raus kommt.

Hinsetzen und lesen.
Es ist sinnlos sich an Programme zu wagen, mit Themen, von denen man nichts weiß.
Ein Projekt wie deines ist zwar lustig, aber viel lustiger ist es, wenn man ein großen Werkzeugkoffer hat, mit Tools, die einem alles erleichtern.
 

Crix

Mitglied
Ok danke dann werde ich wohl in meinem Buch weiter lesen müssen. Ich dachte halt ich könnte das schon da ich das selbe Programm schon in einem Applet geschrieben habe und da hat es problemlos funktioniert
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ComboBox Spielautomat Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben