Yatzy/Facade/Game.java

151 lines
4.8 KiB
Java

package Facade;
import java.util.ArrayList;
import Domain.*;
public class Game {
private ArrayList<Player> players = new ArrayList<>();
private int numberOfDice;
private Dice dice = new Dice(numberOfDice);
private int[] diceValues;
private Yatzy_Sheet sheet = new Yatzy_Sheet();
private Ones ones = new Ones();
private Twos twos = new Twos();
private Threes threes = new Threes();
private Fours fours = new Fours();
private Fives fives = new Fives();
private Sixes sixes = new Sixes();
private TwoPairs twoPairs = new TwoPairs();
private ThreePairs threePairs = new ThreePairs();
private FourPairs fourPairs = new FourPairs();
private FullHouse fullHouse = new FullHouse();
private StraightFlush straightFlush = new StraightFlush();
private RoyalStraightFlush royalStraightFlush = new RoyalStraightFlush();
private Yatzy yatzy = new Yatzy();
public void startgame(int playerCount, String[] name, int numberOfDice){
for(int i = 0; i < playerCount; i++){
Player player1 = new Player(name[i], sheet, dice);
players.add(player1);
}
}
// public void startgame(int playerCount, String[] name, int numberOfDice){
// this.numberOfDice = numberOfDice;
// dice = new Dice(numberOfDice);
// for(int i = 0; i < playerCount; i++){
// Player player = new Player(name[i], sheet, dice);
// players.add(player);
// }
// }
public int[] rollDice(Dice dice){
dice.rollDice(numberOfDice);
int[] diceValues = dice.getValues();
return diceValues;
}
public void choosCategory(int category){
switch(category){
case 1:
ones.correctCategory(diceValues);
sheet.addScore(0, ones.getScore(diceValues));
break;
case 2:
twos.correctCategory(diceValues);
sheet.addScore(1, twos.getScore(diceValues));
break;
case 3:
threes.correctCategory(diceValues);
sheet.addScore(2, threes.getScore(diceValues));
break;
case 4:
fours.correctCategory(diceValues);
sheet.addScore(3, fours.getScore(diceValues));
break;
case 5:
fives.correctCategory(diceValues);
sheet.addScore(4, fives.getScore(diceValues));
break;
case 6:
sixes.correctCategory(diceValues);
sheet.addScore(5, sixes.getScore(diceValues));
break;
case 7:
twoPairs.correctCategory(diceValues);
sheet.addScore(6, twoPairs.getScore(diceValues));
break;
case 8:
threePairs.correctCategory(diceValues);
sheet.addScore(7, threePairs.getScore(diceValues));
break;
case 9:
fourPairs.correctCategory(diceValues);
sheet.addScore(8, fourPairs.getScore(diceValues));
break;
case 10:
fullHouse.correctCategory(diceValues);
sheet.addScore(9, fullHouse.getScore(diceValues));
break;
case 11:
straightFlush.correctCategory(diceValues);
sheet.addScore(10, straightFlush.getScore(diceValues));
break;
case 12:
royalStraightFlush.correctCategory(diceValues);
sheet.addScore(11, royalStraightFlush.getScore(diceValues));
break;
case 13:
yatzy.correctCategory(diceValues);
sheet.addScore(12, yatzy.getScore(diceValues));
break;
}
}
public boolean isGameOver(){
if(sheet.fullArray() == true){
return true;
}
return false;
}
public int getScore(){
return sheet.getSum();
}
public int[] getCategoryScore(){
return sheet.getTabelle();
}
public String getPlayerName(int playerIndex) {
if (playerIndex >= 0 && playerIndex < players.size()) {
return players.get(playerIndex).getName();
}
return "";
}
public String getCategoryNames(){
String[] categorynames = new String[13];
categorynames[0] = "Ones";
categorynames[1] = "Twos";
categorynames[2] = "Threes";
categorynames[3] = "Fours";
categorynames[4] = "Fives";
categorynames[5] = "Sixes";
categorynames[6] = "Two Pairs";
categorynames[7] = "Three Pairs";
categorynames[8] = "Four Pairs";
categorynames[9] = "Full House";
categorynames[10] = "Straight Flush";
categorynames[11] = "Royal Straight Flush";
categorynames[12] = "Yatzy";
return categorynames.toString();
}
}