Import dicegame
This commit is contained in:
parent
cfecc02cad
commit
a81d9ed65e
4
dicegame/META-INF/MANIFEST.MF
Normal file
4
dicegame/META-INF/MANIFEST.MF
Normal file
@ -0,0 +1,4 @@
|
||||
Manifest-Version: 1.0
|
||||
Class-Path: .
|
||||
Main-Class: WuerfelspielGUI
|
||||
|
5
dicegame/src/dicegame/logic/DiceInteraction.java
Normal file
5
dicegame/src/dicegame/logic/DiceInteraction.java
Normal file
@ -0,0 +1,5 @@
|
||||
package dicegame.logic;
|
||||
|
||||
public interface DiceInteraction {
|
||||
public int changeDiceState(int diceIndex) throws SelectionException;
|
||||
}
|
276
dicegame/src/dicegame/logic/Logic.java
Normal file
276
dicegame/src/dicegame/logic/Logic.java
Normal file
@ -0,0 +1,276 @@
|
||||
package dicegame.logic;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class Logic implements DiceInteraction {
|
||||
public static final int DICE_NUMBER = 6;
|
||||
public static final int DEFAULT_PLAYER_NUMBER = 2;
|
||||
public static final int DEFAULT_ROUNDS = 10;
|
||||
private static final int DIE_UNFIXED = 0;
|
||||
private static final int DIE_TEMP_FIXED = 1;
|
||||
private static final int DIE_FIXED = 2;
|
||||
private boolean gameIsRunning;
|
||||
private boolean playerCanThrowDice;
|
||||
private int currentPlayer;
|
||||
private int roundNumber;
|
||||
private int roundPoints;
|
||||
private int maxRounds = DEFAULT_ROUNDS;
|
||||
private int[] points = new int[2];
|
||||
private String[] names = new String[2];
|
||||
private int[] dicePips = new int[6];
|
||||
private int[] diceFixed = new int[6];
|
||||
private Random random;
|
||||
|
||||
public Logic(Random random) {
|
||||
this.random = random;
|
||||
}
|
||||
|
||||
public void startGame() {
|
||||
this.resetGame();
|
||||
this.gameIsRunning = true;
|
||||
this.playerCanThrowDice = true;
|
||||
this.roundNumber = 1;
|
||||
this.currentPlayer = 0;
|
||||
}
|
||||
|
||||
public String rollDice() {
|
||||
if (!this.gameIsRunning) {
|
||||
return "Das Spiel läuft aktuell nicht!";
|
||||
} else {
|
||||
if (this.isAllDiceFixed()) {
|
||||
this.resetDice();
|
||||
}
|
||||
|
||||
for(int i = 0; i < DICE_NUMBER; ++i) {
|
||||
if (this.diceFixed[i] == DIE_TEMP_FIXED) {
|
||||
this.diceFixed[i] = DIE_FIXED;
|
||||
} else if (this.diceFixed[i] == DIE_UNFIXED) {
|
||||
this.dicePips[i] = this.random.nextInt(6) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.isScoringPipsAvailable()) {
|
||||
this.playerCanThrowDice = true;
|
||||
} else {
|
||||
this.playerCanThrowDice = false;
|
||||
this.roundPoints = 0;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isScoringPipsAvailable() {
|
||||
for(int i = 0; i < DICE_NUMBER; ++i) {
|
||||
if (this.diceFixed[i] != DIE_FIXED && (this.dicePips[i] == 5 || this.dicePips[i] == 1)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isAllDiceFixed() {
|
||||
for(int i = 0; i < DICE_NUMBER; ++i) {
|
||||
if (this.diceFixed[i] == DIE_UNFIXED) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public String checkIfGameCanStart() {
|
||||
if (this.gameIsRunning) {
|
||||
return "Das Spiel läuft bereits!";
|
||||
} else {
|
||||
for(int i = 0; i < DEFAULT_PLAYER_NUMBER; ++i) {
|
||||
if (this.names[i] == null || this.names[i].trim().length() < 2) {
|
||||
return "Spieler " + (i + 1) + " hat noch keinen Namen!";
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void resetGame() {
|
||||
this.roundNumber = 0;
|
||||
this.roundPoints = 0;
|
||||
this.resetDice();
|
||||
this.resetPoints();
|
||||
}
|
||||
|
||||
public void finishRound() {
|
||||
this.resetDice();
|
||||
int[] var10000 = this.points;
|
||||
int var10001 = this.currentPlayer;
|
||||
var10000[var10001] += this.roundPoints;
|
||||
this.roundPoints = 0;
|
||||
this.currentPlayer = ++this.currentPlayer % DEFAULT_PLAYER_NUMBER;
|
||||
if (this.currentPlayer == 0) {
|
||||
if (this.roundNumber == this.maxRounds) {
|
||||
this.gameIsRunning = false;
|
||||
} else {
|
||||
++this.roundNumber;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void resetDice() {
|
||||
for(int i = 0; i < DICE_NUMBER; ++i) {
|
||||
this.diceFixed[i] = DIE_UNFIXED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void resetPoints() {
|
||||
for(int i = 0; i < DEFAULT_PLAYER_NUMBER; ++i) {
|
||||
this.points[i] = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getRoundNumber() {
|
||||
return this.roundNumber;
|
||||
}
|
||||
|
||||
public int getRoundPoints() {
|
||||
return this.roundPoints;
|
||||
}
|
||||
|
||||
public boolean isDieFixed(int dieIndex) {
|
||||
return this.diceFixed[dieIndex] != DIE_UNFIXED;
|
||||
}
|
||||
|
||||
public boolean isAtLeastOneDieFixedInCurrentThrow() {
|
||||
for(int i = 0; i < DICE_NUMBER; ++i) {
|
||||
if (this.diceFixed[i] == DIE_TEMP_FIXED) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private int countTempFixedByPips(int pips) {
|
||||
int count = 0;
|
||||
|
||||
for(int i = 0; i < DICE_NUMBER; ++i) {
|
||||
if (this.diceFixed[i] == DIE_TEMP_FIXED && this.dicePips[i] == pips) {
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public int getDiePips(int dieIndex) {
|
||||
return this.dicePips[dieIndex];
|
||||
}
|
||||
|
||||
public int getMaxRounds() {
|
||||
return this.maxRounds;
|
||||
}
|
||||
|
||||
public String setMaxRounds(int maxRounds) {
|
||||
if (this.gameIsRunning) {
|
||||
return "Rundenzahl kann nicht während eines Spiels verändert werden!";
|
||||
} else {
|
||||
this.maxRounds = maxRounds;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public int getPoints(int playerIndex) {
|
||||
return this.points[playerIndex];
|
||||
}
|
||||
|
||||
public String getName(int playerIndex) {
|
||||
return this.names[playerIndex];
|
||||
}
|
||||
|
||||
public String setName(int playerIndex, String name) {
|
||||
if (this.gameIsRunning) {
|
||||
return "Ein Spielername kann nicht während eines Spiels verändert werden!";
|
||||
} else {
|
||||
this.names[playerIndex] = name;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPlayerCanThrowDice() {
|
||||
return this.playerCanThrowDice;
|
||||
}
|
||||
|
||||
public boolean isGameIsRunning() {
|
||||
return this.gameIsRunning;
|
||||
}
|
||||
|
||||
public int getCurrentPlayer() {
|
||||
return this.currentPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int changeDiceState(int diceIndex) throws SelectionException {
|
||||
if (this.diceFixed[diceIndex] == DIE_UNFIXED) {
|
||||
setDieFixed(diceIndex);
|
||||
} else {
|
||||
setDieUnfixed(diceIndex);
|
||||
}
|
||||
return roundPoints;
|
||||
}
|
||||
|
||||
private void setDieFixed(int dieIndex) throws SelectionException {
|
||||
int c;
|
||||
if (this.dicePips[dieIndex] == 1) {
|
||||
c = this.countTempFixedByPips(1);
|
||||
if (c != 2 && c != 5) {
|
||||
this.roundPoints += 100;
|
||||
} else {
|
||||
this.roundPoints -= 200;
|
||||
this.roundPoints += 1000;
|
||||
}
|
||||
|
||||
this.diceFixed[dieIndex] = DIE_TEMP_FIXED;
|
||||
} else if (this.dicePips[dieIndex] == 5) {
|
||||
c = this.countTempFixedByPips(5);
|
||||
if (c != 2 && c != 5) {
|
||||
this.roundPoints += 50;
|
||||
} else {
|
||||
this.roundPoints -= 100;
|
||||
this.roundPoints += 500;
|
||||
}
|
||||
|
||||
this.diceFixed[dieIndex] = DIE_TEMP_FIXED;
|
||||
} else {
|
||||
throw new SelectionException("Es können nur 1'en und 5'en fixiert werden!");
|
||||
}
|
||||
}
|
||||
|
||||
private void setDieUnfixed(int dieIndex) throws SelectionException {
|
||||
int c;
|
||||
if (this.dicePips[dieIndex] == 1) {
|
||||
c = this.countTempFixedByPips(1);
|
||||
if (c != 3 && c != 6) {
|
||||
this.roundPoints -= 100;
|
||||
} else {
|
||||
this.roundPoints -= 1000;
|
||||
this.roundPoints += 200;
|
||||
}
|
||||
|
||||
this.diceFixed[dieIndex] = DIE_UNFIXED;
|
||||
} else if (this.dicePips[dieIndex] == 5) {
|
||||
c = this.countTempFixedByPips(5);
|
||||
if (c != 3 && c != 6) {
|
||||
this.roundPoints -= 50;
|
||||
} else {
|
||||
this.roundPoints -= 500;
|
||||
this.roundPoints += 100;
|
||||
}
|
||||
|
||||
this.diceFixed[dieIndex] = DIE_UNFIXED;
|
||||
}
|
||||
}
|
||||
}
|
7
dicegame/src/dicegame/logic/SelectionException.java
Normal file
7
dicegame/src/dicegame/logic/SelectionException.java
Normal file
@ -0,0 +1,7 @@
|
||||
package dicegame.logic;
|
||||
|
||||
public class SelectionException extends Exception {
|
||||
SelectionException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
608
dicegame/src/dicegame/view/GUI.java
Normal file
608
dicegame/src/dicegame/view/GUI.java
Normal file
@ -0,0 +1,608 @@
|
||||
package dicegame.view;
|
||||
|
||||
import dicegame.logic.SelectionException;
|
||||
import dicegame.logic.Logic;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Font;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.Random;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.JToggleButton;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
public final class GUI extends JFrame implements ActionListener {
|
||||
private final Logic logic;
|
||||
private static final long serialVersionUID = 1L;
|
||||
private JPanel jContentPane = null;
|
||||
private JPanel panelHead = null;
|
||||
private JPanel panelMain = null;
|
||||
private JTextField textfieldS1Name = null;
|
||||
private JLabel labelS1Name = null;
|
||||
private JLabel labelS2Name = null;
|
||||
private JTextField textfieldS2Name = null;
|
||||
private JPanel panelSpieler1 = null;
|
||||
private JPanel panelSpieler2 = null;
|
||||
private JLabel labelS1Points = null;
|
||||
private JLabel labelS1PointsValue = null;
|
||||
private JLabel labelS2Points = null;
|
||||
private JLabel labelS2PointsValue = null;
|
||||
private JPanel panelGoButton = null;
|
||||
private JButton buttonGo = null;
|
||||
private JPanel panelRound = null;
|
||||
private JLabel labelRound = null;
|
||||
private JLabel labelRoundValue = null;
|
||||
private JPanel panelDice = null;
|
||||
private JToggleButton toggleDie1 = null;
|
||||
private JToggleButton toggleDie2 = null;
|
||||
private JToggleButton toggleDie3 = null;
|
||||
private JToggleButton toggleDie4 = null;
|
||||
private JToggleButton toggleDie5 = null;
|
||||
private JToggleButton toggleDie6 = null;
|
||||
private JPanel panelActions = null;
|
||||
private JPanel panelRoundPoints = null;
|
||||
private JLabel labelRoundPoints = null;
|
||||
private JLabel labelRoundPointsValue = null;
|
||||
private JPanel panelActionsButtons = null;
|
||||
private JButton buttonRoll = null;
|
||||
private JButton buttonReady = null;
|
||||
private JPanel panelDiceActions = null;
|
||||
private JPanel panelStatus = null;
|
||||
private JLabel labelStatus = null;
|
||||
|
||||
private JPanel getPanelHead() {
|
||||
if (this.panelHead == null) {
|
||||
BorderLayout borderLayout3 = new BorderLayout();
|
||||
borderLayout3.setHgap(3);
|
||||
borderLayout3.setVgap(3);
|
||||
this.labelS2Name = new JLabel();
|
||||
this.labelS2Name.setText("Spieler 2 :");
|
||||
this.labelS2Name.setFont(new Font("Dialog", 0, 12));
|
||||
this.labelS2Name.setToolTipText("");
|
||||
this.labelS1Name = new JLabel();
|
||||
this.labelS1Name.setText("Spieler 1 :");
|
||||
this.labelS1Name.setFont(new Font("Dialog", 0, 12));
|
||||
this.panelHead = new JPanel();
|
||||
this.panelHead.setLayout(borderLayout3);
|
||||
this.panelHead.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
|
||||
this.panelHead.add(this.getPanelSpieler1(), "West");
|
||||
this.panelHead.add(this.getPanelSpieler2(), "East");
|
||||
this.panelHead.add(this.getPanelGoButton(), "South");
|
||||
}
|
||||
|
||||
return this.panelHead;
|
||||
}
|
||||
|
||||
private JPanel getPanelMain() {
|
||||
if (this.panelMain == null) {
|
||||
BorderLayout borderLayout1 = new BorderLayout();
|
||||
borderLayout1.setVgap(5);
|
||||
GridLayout gridLayout3 = new GridLayout();
|
||||
gridLayout3.setRows(3);
|
||||
gridLayout3.setColumns(1);
|
||||
this.panelMain = new JPanel();
|
||||
this.panelMain.setEnabled(true);
|
||||
this.panelMain.setBorder(BorderFactory.createEtchedBorder(0));
|
||||
this.panelMain.setLayout(borderLayout1);
|
||||
this.panelMain.add(this.getPanelRound(), "North");
|
||||
this.panelMain.add(this.getPanelDiceActions(), "Center");
|
||||
}
|
||||
|
||||
return this.panelMain;
|
||||
}
|
||||
|
||||
private JTextField getTextfieldS1Name() {
|
||||
if (this.textfieldS1Name == null) {
|
||||
this.textfieldS1Name = new JTextField();
|
||||
this.textfieldS1Name.setColumns(10);
|
||||
this.textfieldS1Name.setName("");
|
||||
this.textfieldS1Name.setToolTipText("Name des ersten Spielers, bestehend aus mindestens 2 Zeichen");
|
||||
this.textfieldS1Name.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
GUI.this.textfieldS2Name.grabFocus();
|
||||
}
|
||||
});
|
||||
this.textfieldS1Name.addKeyListener(new KeyAdapter() {
|
||||
public void keyReleased(KeyEvent e) {
|
||||
GUI.this.logic.setName(0, GUI.this.textfieldS1Name.getText());
|
||||
String s = GUI.this.logic.checkIfGameCanStart();
|
||||
if (s != null) {
|
||||
GUI.this.labelStatus.setText(s);
|
||||
GUI.this.buttonGo.setEnabled(false);
|
||||
} else {
|
||||
GUI.this.buttonGo.setEnabled(true);
|
||||
GUI.this.labelStatus.setText(" ");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this.textfieldS1Name;
|
||||
}
|
||||
|
||||
private JTextField getTextfieldS2Name() {
|
||||
if (this.textfieldS2Name == null) {
|
||||
this.textfieldS2Name = new JTextField();
|
||||
this.textfieldS2Name.setColumns(10);
|
||||
this.textfieldS2Name.setName("");
|
||||
this.textfieldS2Name.setToolTipText("Name des zweiten Spielers, bestehend aus mindestens 2 Zeichen");
|
||||
this.textfieldS2Name.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
GUI.this.buttonGo.grabFocus();
|
||||
}
|
||||
});
|
||||
this.textfieldS2Name.addKeyListener(new KeyAdapter() {
|
||||
public void keyReleased(KeyEvent e) {
|
||||
GUI.this.logic.setName(1, GUI.this.textfieldS2Name.getText());
|
||||
String s = GUI.this.logic.checkIfGameCanStart();
|
||||
if (s != null) {
|
||||
GUI.this.labelStatus.setText(s);
|
||||
GUI.this.buttonGo.setEnabled(false);
|
||||
} else {
|
||||
GUI.this.buttonGo.setEnabled(true);
|
||||
GUI.this.labelStatus.setText(" ");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this.textfieldS2Name;
|
||||
}
|
||||
|
||||
private JPanel getPanelSpieler1() {
|
||||
if (this.panelSpieler1 == null) {
|
||||
GridLayout gridLayout21 = new GridLayout();
|
||||
gridLayout21.setRows(2);
|
||||
this.labelS1PointsValue = new JLabel();
|
||||
this.labelS1PointsValue.setText("0");
|
||||
this.labelS1PointsValue.setFont(new Font("Dialog", 1, 14));
|
||||
GridLayout gridLayout1 = new GridLayout();
|
||||
gridLayout1.setRows(2);
|
||||
gridLayout1.setColumns(2);
|
||||
this.labelS1Points = new JLabel();
|
||||
this.labelS1Points.setText("Punkte :");
|
||||
this.labelS1Points.setFont(new Font("Dialog", 0, 12));
|
||||
GridLayout gridLayout = new GridLayout();
|
||||
gridLayout.setRows(2);
|
||||
gridLayout.setColumns(2);
|
||||
this.panelSpieler1 = new JPanel();
|
||||
this.panelSpieler1.setLayout(gridLayout21);
|
||||
this.panelSpieler1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
|
||||
this.panelSpieler1.add(this.labelS1Name, (Object)null);
|
||||
this.panelSpieler1.add(this.getTextfieldS1Name(), (Object)null);
|
||||
this.panelSpieler1.add(this.labelS1Points, (Object)null);
|
||||
this.panelSpieler1.add(this.labelS1PointsValue, (Object)null);
|
||||
}
|
||||
|
||||
return this.panelSpieler1;
|
||||
}
|
||||
|
||||
private JPanel getPanelSpieler2() {
|
||||
if (this.panelSpieler2 == null) {
|
||||
this.labelS2PointsValue = new JLabel();
|
||||
this.labelS2PointsValue.setText("0");
|
||||
this.labelS2PointsValue.setFont(new Font("Dialog", 1, 14));
|
||||
this.labelS2Points = new JLabel();
|
||||
this.labelS2Points.setText("Punkte :");
|
||||
this.labelS2Points.setFont(new Font("Dialog", 0, 12));
|
||||
GridLayout gridLayout2 = new GridLayout();
|
||||
gridLayout2.setRows(2);
|
||||
gridLayout2.setColumns(2);
|
||||
this.panelSpieler2 = new JPanel();
|
||||
this.panelSpieler2.setLayout(gridLayout2);
|
||||
this.panelSpieler2.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
|
||||
this.panelSpieler2.add(this.labelS2Name, (Object)null);
|
||||
this.panelSpieler2.add(this.getTextfieldS2Name(), (Object)null);
|
||||
this.panelSpieler2.add(this.labelS2Points, (Object)null);
|
||||
this.panelSpieler2.add(this.labelS2PointsValue, (Object)null);
|
||||
}
|
||||
|
||||
return this.panelSpieler2;
|
||||
}
|
||||
|
||||
private JPanel getPanelGoButton() {
|
||||
if (this.panelGoButton == null) {
|
||||
this.panelGoButton = new JPanel();
|
||||
this.panelGoButton.setLayout(new GridBagLayout());
|
||||
this.panelGoButton.setEnabled(true);
|
||||
this.panelGoButton.add(this.getButtonGo(), new GridBagConstraints());
|
||||
}
|
||||
|
||||
return this.panelGoButton;
|
||||
}
|
||||
|
||||
private JButton getButtonGo() {
|
||||
if (this.buttonGo == null) {
|
||||
this.buttonGo = new JButton();
|
||||
this.buttonGo.setName("");
|
||||
this.buttonGo.setEnabled(false);
|
||||
this.buttonGo.setText(" Spiel starten ");
|
||||
this.buttonGo.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.buttonGo;
|
||||
}
|
||||
|
||||
private JPanel getPanelRound() {
|
||||
if (this.panelRound == null) {
|
||||
this.labelRoundValue = new JLabel();
|
||||
this.labelRoundValue.setText("0");
|
||||
this.labelRoundValue.setFont(new Font("Dialog", 0, 12));
|
||||
this.labelRound = new JLabel();
|
||||
this.labelRound.setText("Runde ");
|
||||
this.labelRound.setFont(new Font("Dialog", 0, 12));
|
||||
this.panelRound = new JPanel();
|
||||
this.panelRound.setLayout(new FlowLayout());
|
||||
this.panelRound.add(this.labelRound, (Object)null);
|
||||
this.panelRound.add(this.labelRoundValue, (Object)null);
|
||||
}
|
||||
|
||||
return this.panelRound;
|
||||
}
|
||||
|
||||
private JPanel getPanelDice() {
|
||||
if (this.panelDice == null) {
|
||||
GridLayout gridLayout5 = new GridLayout();
|
||||
gridLayout5.setRows(1);
|
||||
gridLayout5.setHgap(20);
|
||||
gridLayout5.setVgap(1);
|
||||
gridLayout5.setColumns(6);
|
||||
this.panelDice = new JPanel();
|
||||
this.panelDice.setPreferredSize(new Dimension(346, 26));
|
||||
this.panelDice.setBorder(BorderFactory.createEmptyBorder(5, 3, 5, 0));
|
||||
this.panelDice.setLayout(gridLayout5);
|
||||
this.panelDice.add(this.getToggleDie1(), (Object)null);
|
||||
this.panelDice.add(this.getToggleDie2(), (Object)null);
|
||||
this.panelDice.add(this.getToggleDie3(), (Object)null);
|
||||
this.panelDice.add(this.getToggleDie4(), (Object)null);
|
||||
this.panelDice.add(this.getToggleDie5(), (Object)null);
|
||||
this.panelDice.add(this.getToggleDie6(), (Object)null);
|
||||
}
|
||||
|
||||
return this.panelDice;
|
||||
}
|
||||
|
||||
private JToggleButton getToggleDie1() {
|
||||
if (this.toggleDie1 == null) {
|
||||
this.toggleDie1 = new JToggleButton();
|
||||
this.toggleDie1.setText("1");
|
||||
this.toggleDie1.setEnabled(false);
|
||||
this.toggleDie1.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.toggleDie1;
|
||||
}
|
||||
|
||||
private JToggleButton getToggleDie2() {
|
||||
if (this.toggleDie2 == null) {
|
||||
this.toggleDie2 = new JToggleButton();
|
||||
this.toggleDie2.setText("2");
|
||||
this.toggleDie2.setEnabled(false);
|
||||
this.toggleDie2.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.toggleDie2;
|
||||
}
|
||||
|
||||
private JToggleButton getToggleDie3() {
|
||||
if (this.toggleDie3 == null) {
|
||||
this.toggleDie3 = new JToggleButton();
|
||||
this.toggleDie3.setText("3");
|
||||
this.toggleDie3.setEnabled(false);
|
||||
this.toggleDie3.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.toggleDie3;
|
||||
}
|
||||
|
||||
private JToggleButton getToggleDie4() {
|
||||
if (this.toggleDie4 == null) {
|
||||
this.toggleDie4 = new JToggleButton();
|
||||
this.toggleDie4.setText("4");
|
||||
this.toggleDie4.setEnabled(false);
|
||||
this.toggleDie4.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.toggleDie4;
|
||||
}
|
||||
|
||||
private JToggleButton getToggleDie5() {
|
||||
if (this.toggleDie5 == null) {
|
||||
this.toggleDie5 = new JToggleButton();
|
||||
this.toggleDie5.setText("5");
|
||||
this.toggleDie5.setEnabled(false);
|
||||
this.toggleDie5.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.toggleDie5;
|
||||
}
|
||||
|
||||
private JToggleButton getToggleDie6() {
|
||||
if (this.toggleDie6 == null) {
|
||||
this.toggleDie6 = new JToggleButton();
|
||||
this.toggleDie6.setText("6");
|
||||
this.toggleDie6.setEnabled(false);
|
||||
this.toggleDie6.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.toggleDie6;
|
||||
}
|
||||
|
||||
private JPanel getPanelActions() {
|
||||
if (this.panelActions == null) {
|
||||
BorderLayout borderLayout2 = new BorderLayout();
|
||||
borderLayout2.setVgap(0);
|
||||
borderLayout2.setHgap(0);
|
||||
this.panelActions = new JPanel();
|
||||
this.panelActions.setLayout(borderLayout2);
|
||||
this.panelActions.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
||||
this.panelActions.add(this.getPanelRoundPoints(), "West");
|
||||
this.panelActions.add(this.getPanelActionsButtons(), "East");
|
||||
}
|
||||
|
||||
return this.panelActions;
|
||||
}
|
||||
|
||||
private JPanel getPanelRoundPoints() {
|
||||
if (this.panelRoundPoints == null) {
|
||||
this.labelRoundPointsValue = new JLabel();
|
||||
this.labelRoundPointsValue.setText("0");
|
||||
this.labelRoundPoints = new JLabel();
|
||||
this.labelRoundPoints.setText("Punkte des aktuellen Zuges : ");
|
||||
this.labelRoundPoints.setFont(new Font("Dialog", 0, 12));
|
||||
this.panelRoundPoints = new JPanel();
|
||||
this.panelRoundPoints.setLayout(new GridBagLayout());
|
||||
this.panelRoundPoints.add(this.labelRoundPoints, new GridBagConstraints());
|
||||
this.panelRoundPoints.add(this.labelRoundPointsValue, new GridBagConstraints());
|
||||
}
|
||||
|
||||
return this.panelRoundPoints;
|
||||
}
|
||||
|
||||
private JPanel getPanelActionsButtons() {
|
||||
if (this.panelActionsButtons == null) {
|
||||
GridLayout gridLayout6 = new GridLayout();
|
||||
gridLayout6.setRows(2);
|
||||
gridLayout6.setHgap(0);
|
||||
gridLayout6.setVgap(6);
|
||||
gridLayout6.setColumns(1);
|
||||
this.panelActionsButtons = new JPanel();
|
||||
this.panelActionsButtons.setLayout(gridLayout6);
|
||||
this.panelActionsButtons.add(this.getButtonRoll(), (Object)null);
|
||||
this.panelActionsButtons.add(this.getButtonReady(), (Object)null);
|
||||
}
|
||||
|
||||
return this.panelActionsButtons;
|
||||
}
|
||||
|
||||
private JButton getButtonRoll() {
|
||||
if (this.buttonRoll == null) {
|
||||
this.buttonRoll = new JButton();
|
||||
this.buttonRoll.setText("Würfeln");
|
||||
this.buttonRoll.setEnabled(false);
|
||||
this.buttonRoll.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.buttonRoll;
|
||||
}
|
||||
|
||||
private JButton getButtonReady() {
|
||||
if (this.buttonReady == null) {
|
||||
this.buttonReady = new JButton();
|
||||
this.buttonReady.setText("Zug beenden");
|
||||
this.buttonReady.setEnabled(false);
|
||||
this.buttonReady.addActionListener(this);
|
||||
}
|
||||
|
||||
return this.buttonReady;
|
||||
}
|
||||
|
||||
private JPanel getPanelDiceActions() {
|
||||
if (this.panelDiceActions == null) {
|
||||
BorderLayout borderLayout = new BorderLayout();
|
||||
borderLayout.setHgap(5);
|
||||
borderLayout.setVgap(5);
|
||||
this.panelDiceActions = new JPanel();
|
||||
this.panelDiceActions.setLayout(borderLayout);
|
||||
this.panelDiceActions.add(this.getPanelDice(), "Center");
|
||||
this.panelDiceActions.add(this.getPanelActions(), "South");
|
||||
}
|
||||
|
||||
return this.panelDiceActions;
|
||||
}
|
||||
|
||||
private JPanel getPanelStatus() {
|
||||
if (this.panelStatus == null) {
|
||||
this.labelStatus = new JLabel();
|
||||
this.labelStatus.setText(" ");
|
||||
this.labelStatus.setToolTipText("");
|
||||
this.labelStatus.setFont(new Font("Arial", 0, 12));
|
||||
this.panelStatus = new JPanel();
|
||||
this.panelStatus.setLayout(new BorderLayout());
|
||||
this.panelStatus.setBorder(BorderFactory.createBevelBorder(1));
|
||||
this.panelStatus.add(this.labelStatus, "North");
|
||||
}
|
||||
|
||||
return this.panelStatus;
|
||||
}
|
||||
|
||||
public GUI() {
|
||||
this.initialize();
|
||||
this.logic = new Logic(new Random());
|
||||
this.logic.resetGame();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
this.setSize(478, 311);
|
||||
this.setResizable(false);
|
||||
this.setDefaultCloseOperation(3);
|
||||
this.setName("mainFrame");
|
||||
this.setContentPane(this.getJContentPane());
|
||||
this.setTitle("Dings");
|
||||
}
|
||||
|
||||
private JPanel getJContentPane() {
|
||||
if (this.jContentPane == null) {
|
||||
BorderLayout borderLayout4 = new BorderLayout();
|
||||
borderLayout4.setHgap(3);
|
||||
borderLayout4.setVgap(2);
|
||||
this.jContentPane = new JPanel();
|
||||
this.jContentPane.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
|
||||
this.jContentPane.setLayout(borderLayout4);
|
||||
this.jContentPane.add(this.getPanelHead(), "North");
|
||||
this.jContentPane.add(this.getPanelMain(), "Center");
|
||||
this.jContentPane.add(this.getPanelStatus(), "South");
|
||||
}
|
||||
|
||||
return this.jContentPane;
|
||||
}
|
||||
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Object source = e.getSource();
|
||||
if (source != this.textfieldS1Name && source != this.textfieldS2Name) {
|
||||
if (source == this.buttonGo) {
|
||||
this.logic.startGame();
|
||||
this.labelStatus.setText(" ");
|
||||
this.buttonGo.setEnabled(false);
|
||||
this.textfieldS1Name.setEditable(false);
|
||||
this.textfieldS2Name.setEditable(false);
|
||||
this.buttonReady.setEnabled(true);
|
||||
this.labelS2PointsValue.setText(String.valueOf(this.logic.getPoints(1)));
|
||||
this.labelS1PointsValue.setText(String.valueOf(this.logic.getPoints(0)));
|
||||
this.syncRoundInfoToGui();
|
||||
this.logic.rollDice();
|
||||
this.syncLogicDiceToGui();
|
||||
this.toggleDie1.setEnabled(true);
|
||||
this.toggleDie2.setEnabled(true);
|
||||
this.toggleDie3.setEnabled(true);
|
||||
this.toggleDie4.setEnabled(true);
|
||||
this.toggleDie5.setEnabled(true);
|
||||
this.toggleDie6.setEnabled(true);
|
||||
} else if (source == this.buttonReady) {
|
||||
this.logic.finishRound();
|
||||
this.syncRoundInfoToGui();
|
||||
if (this.logic.isGameIsRunning()) {
|
||||
this.logic.rollDice();
|
||||
this.syncLogicDiceToGui();
|
||||
}
|
||||
} else if (source == this.buttonRoll) {
|
||||
if (!this.logic.isAtLeastOneDieFixedInCurrentThrow()) {
|
||||
this.labelStatus.setText("Wenigstens ein Würfel muss fixiert sein.");
|
||||
} else {
|
||||
String s = this.logic.rollDice();
|
||||
if (s != null) {
|
||||
this.labelStatus.setText(s);
|
||||
} else {
|
||||
this.syncLogicDiceToGui();
|
||||
}
|
||||
}
|
||||
} else if (source == this.toggleDie1) {
|
||||
this.toggleDie(this.toggleDie1, 0);
|
||||
} else if (source == this.toggleDie2) {
|
||||
this.toggleDie(this.toggleDie2, 1);
|
||||
} else if (source == this.toggleDie3) {
|
||||
this.toggleDie(this.toggleDie3, 2);
|
||||
} else if (source == this.toggleDie4) {
|
||||
this.toggleDie(this.toggleDie4, 3);
|
||||
} else if (source == this.toggleDie5) {
|
||||
this.toggleDie(this.toggleDie5, 4);
|
||||
} else if (source == this.toggleDie6) {
|
||||
this.toggleDie(this.toggleDie6, 5);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void toggleDie(JToggleButton die, int dieIndex) {
|
||||
String result = null;
|
||||
this.labelStatus.setText(" ");
|
||||
try {
|
||||
int resultingPoints = this.logic.changeDiceState(dieIndex);
|
||||
this.labelRoundPointsValue.setText(String.valueOf(resultingPoints));
|
||||
} catch (SelectionException e) {
|
||||
die.setSelected(!die.isSelected());
|
||||
this.labelStatus.setText(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void syncRoundInfoToGui() {
|
||||
if (this.logic.isGameIsRunning()) {
|
||||
this.labelRoundValue.setText(String.valueOf(this.logic.getRoundNumber()));
|
||||
this.labelRoundPointsValue.setText(String.valueOf(this.logic.getRoundPoints()));
|
||||
if (this.logic.getCurrentPlayer() == 0) {
|
||||
this.labelS1Name.setForeground(Color.GREEN);
|
||||
this.labelS2Name.setForeground(Color.BLACK);
|
||||
this.labelS2PointsValue.setText(String.valueOf(this.logic.getPoints(1)));
|
||||
} else {
|
||||
this.labelS2Name.setForeground(Color.GREEN);
|
||||
this.labelS1Name.setForeground(Color.BLACK);
|
||||
this.labelS1PointsValue.setText(String.valueOf(this.logic.getPoints(0)));
|
||||
}
|
||||
} else {
|
||||
this.labelS2Name.setForeground(Color.BLACK);
|
||||
this.labelS1Name.setForeground(Color.BLACK);
|
||||
this.textfieldS1Name.setEditable(true);
|
||||
this.textfieldS2Name.setEditable(true);
|
||||
this.labelStatus.setText("Das Spiel ist beendet!");
|
||||
this.buttonReady.setEnabled(false);
|
||||
this.buttonRoll.setEnabled(false);
|
||||
this.buttonGo.setEnabled(true);
|
||||
this.toggleDie1.setEnabled(false);
|
||||
this.toggleDie2.setEnabled(false);
|
||||
this.toggleDie3.setEnabled(false);
|
||||
this.toggleDie4.setEnabled(false);
|
||||
this.toggleDie5.setEnabled(false);
|
||||
this.toggleDie6.setEnabled(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void syncLogicDiceToGui() {
|
||||
this.syncLogicDieToGui(this.toggleDie1, 0);
|
||||
this.syncLogicDieToGui(this.toggleDie2, 1);
|
||||
this.syncLogicDieToGui(this.toggleDie3, 2);
|
||||
this.syncLogicDieToGui(this.toggleDie4, 3);
|
||||
this.syncLogicDieToGui(this.toggleDie5, 4);
|
||||
this.syncLogicDieToGui(this.toggleDie6, 5);
|
||||
this.buttonRoll.setEnabled(this.logic.isPlayerCanThrowDice());
|
||||
this.labelRoundPointsValue.setText(String.valueOf(this.logic.getRoundPoints()));
|
||||
}
|
||||
|
||||
private void syncLogicDieToGui(JToggleButton die, int dieIndex) {
|
||||
die.setText(String.valueOf(this.logic.getDiePips(dieIndex)));
|
||||
if (this.logic.isDieFixed(dieIndex)) {
|
||||
die.setForeground(Color.BLUE);
|
||||
die.setSelected(true);
|
||||
} else {
|
||||
die.setForeground(Color.BLACK);
|
||||
die.setSelected(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
GUI thisClass = new GUI();
|
||||
thisClass.setDefaultCloseOperation(3);
|
||||
thisClass.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user