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

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
#3
vote_ok
von rockerle (120 Punkte) - 15.09.2017 um 15:34 Uhr
Quellcode ausblenden Java-Code
import java.awt.event.*;
import java.awt.*;

import javax.swing.*;

public class Main extends JFrame {

	static JButton start;
	static JButton 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("Unentschieden");
		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-1;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