Java :: Aufgabe #9 :: Lösung #4

5 Lösungen Lösungen öffentlich
#9

Würfelspiel(Random) mit GUI

Fortgeschrittener - Java von Jurom - 23.10.2012 um 12:38 Uhr
Das Programm soll ein einfaches Glücksspiel simulieren.
Lassen Sie 2 Zufallszahlen zwischen 1-6 ausgeben, die höhere Zahl gewinnt.
Wiederholen sie das Würfeln solange, bis der Anwender gewinnt.

Erstellen Sie ein GUI für das Programm, nach dem angehängtem Lösungslayout.
Fertiges Programm
#4
vote_ok
von rockerle (120 Punkte) - 15.09.2017 um 15:58 Uhr
Quellcode ausblenden Java-Code
import java.awt.event.*;
import java.awt.*;

import javax.swing.*;

public class Main extends JFrame {

	static JButton start, reset;

	static JLabel player, bot, wurfPlayer, wurfBot, ergebnis;

	//Labels um die letzten 10 Ergebnisse zu merken
	static JLabel[] ergebnisse = new JLabel[10];

	public static void main(String[] args) {

		Main frame = new Main();
		frame.setTitle("Wuerfelspiel");
		frame.getContentPane().setBackground(Color.white);
		frame.setSize(500, 400);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
		frame.setLayout(null);

		//Initialisieren der Ergebnis-Historie
		initErgeb(ergebnisse);

		player = new JLabel("Spieler");
		player.setBounds(150, 100, 100, 50);
		bot = new JLabel("Computer");
		bot.setBounds(150, 150, 100, 50);

		wurfPlayer = new JLabel();
		wurfPlayer.setBounds(250, 100, 100, 50);
		wurfBot = new JLabel();
		wurfBot.setBounds(250, 150, 100, 50);

		ergebnis = new JLabel();
		ergebnis.setBounds(170, 75, 200, 50);

		start = new JButton("Würfeln");
		start.setBounds(150, 200, 80, 40);
		reset = new JButton("Reset");
		reset.setBounds(250, 200, 80, 40);

		frame.add(player);
		frame.add(bot);
		frame.add(wurfPlayer);
		frame.add(wurfBot);
		frame.add(ergebnis);
		frame.add(start);
		frame.add(reset);
		for (int i = 0; i < 10; i++)
			frame.add(ergebnisse[i]);

		//ActionListener fuer naechste Runde
		start.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				wurfPlayer.setText("" + werfen());
				wurfBot.setText("" + werfen());
				auswerten();
			}
			int werfen() {
				return (int) (Math.random() * 6 + 1);
			}
		});

		//ActionListener fuer Reset-Button
		reset.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				wurfPlayer.setText("");
				wurfBot.setText("");
				ergebnis.setText("");
				resetErgeb(ergebnisse);
			}
		});
	}

	//Auswertung der Spielrunde
	static void auswerten() {
		int player = Integer.parseInt(wurfPlayer.getText());
		int bot = Integer.parseInt(wurfBot.getText());

		moveColors(ergebnisse);

		if (player > bot) {
			ergebnis.setText("Sie haben gewonnen!");
			ergebnisse[0].setBackground(Color.GREEN);
		} else if (player < bot) {
			ergebnis.setText("Sie haben verloren!");
			ergebnisse[0].setBackground(Color.RED);
		} else {
			ergebnis.setText("Unentschieden!");
			ergebnisse[0].setBackground(Color.gray);
		}
	}

	//Die letzten 9 Ergebnise auf Anzeige um 1 nach Hinten verschieben
	static void moveColors(JLabel[] labels) {

		for (int i = labels.length - 1; i > 0; i--) {
			labels[i].setBackground(labels[i - 1].getBackground());
		}
	}

	//Initialisieren der Anzeige fuer die letzten 10 Spiele
	static void initErgeb(JLabel[] labels) {
		for (int i = 0; i < 10; i++) {
			labels[i] = new JLabel();
			labels[i].setBounds(i * 49, 325, 49, 50);
			labels[i].setBackground(Color.WHITE);
			labels[i].setOpaque(true);
		}
	}
	
	//Loeschen der Historie
	static void resetErgeb(JLabel[] labels){
		for(int i=0;i<labels.length;i++)
			labels[i].setBackground(Color.white);
	}

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2102096

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.