public int calculateScore(ScoreCategoryEnum.ScoreCategoryType t) { List <int> allDices = new List <int>(diceSaver); allDices.AddRange(dice); return(ScoreCategory.CalculateScore(allDices, t)); }
// Player choose a category to score and end his/her turn. It is end-turn action. public Dictionary <ScoreCategoryEnum.ScoreCategoryType, int> chooseCategory(ScoreCategoryEnum.ScoreCategoryType t) { List <int> allDices = new List <int>(diceSaver); allDices.AddRange(dice); int score = calculateScore(t); return(currentPlayer().saveScore(t, score, isYahtzee(allDices))); }
public int getScore(ScoreCategoryEnum.ScoreCategoryType category) { try { return(scorePerCategory[category]); } catch (Exception e) { // throw new Exception("Cant find category"); return(-1); } }
public void updateScoreText(int type) { Player p = g.currentPlayer(); List <int> dice = getDice(); ScoreCategoryEnum.ScoreCategoryType category = ScoreCategory.convert(type); if (p.calculateScore(dice, category) >= 0 && p.getScore(category) == -1) { p.saveScore(category, p.calculateScore(dice, category), g.isYahtzee(dice)); updateScoreBoard(); disableButton("category"); disableButton("rolldice"); enableButton("endturn"); } }
/* * */ public void saveScore(ScoreCategoryEnum.ScoreCategoryType category, int score, bool yahtzee) { if (scorePerCategory.ContainsKey(category)) { throw new Exception("Category is already filled"); } int bonusYahtzee = 0; scorePerCategory.TryGetValue(ScoreCategoryEnum.ScoreCategoryType.BONUS_YAHTZEE, out bonusYahtzee); if (yahtzee) { if (checkYahtzee()) { bonusYahtzee += 100; scorePerCategory[ScoreCategoryEnum.ScoreCategoryType.BONUS_YAHTZEE] = bonusYahtzee; } } scorePerCategory.Add(category, score); // Update lower section int lowerScore = 0; foreach (var pair in scorePerCategory) { if (9 <= (int)pair.Key && (int)pair.Key <= 16) { lowerScore += pair.Value; } } scorePerCategory[ScoreCategoryEnum.ScoreCategoryType.LOWER_SCORE] = lowerScore; // Update upper section int upperScore = 0; foreach (var pair in scorePerCategory) { if (1 <= (int)pair.Key && (int)pair.Key <= 6) { upperScore += pair.Value; } } scorePerCategory[ScoreCategoryEnum.ScoreCategoryType.UPPER_SCORE] = upperScore; int upperBonus = (upperScore >= 63) ? 35 : 0; scorePerCategory[ScoreCategoryEnum.ScoreCategoryType.UPPER_BONUS] = upperBonus; // Update total score int totalScore = lowerScore + upperScore + upperBonus + bonusYahtzee; scorePerCategory[ScoreCategoryEnum.ScoreCategoryType.TOTAL_SCORE] = totalScore; }
public int CalculateScore(List <int> dice, ScoreCategoryEnum.ScoreCategoryType category) { if (dice.Count > 6) { return(0); } int result = 0; if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.ACE)) { for (int i = 0; i < dice.Count; i++) { if (dice[i] == 1) { result += dice[i]; } } return(result); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.TWO)) { for (int i = 0; i < dice.Count; i++) { if (dice[i] == 2) { result += dice[i]; } } return(result); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.THREE)) { for (int i = 0; i < dice.Count; i++) { if (dice[i] == 3) { result += dice[i]; } } return(result); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.FOUR)) { for (int i = 0; i < dice.Count; i++) { if (dice[i] == 4) { result += dice[i]; } } return(result); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.FIVE)) { for (int i = 0; i < dice.Count; i++) { if (dice[i] == 5) { result += dice[i]; } } return(result); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.SIX)) { for (int i = 0; i < dice.Count; i++) { if (dice[i] == 6) { result += dice[i]; } } return(result); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.THREE_A_KIND)) { for (int i = 0; i < dice.Count; i++) { result += dice[i]; } return(ScoreCategory.isNOfKind(dice, 3) ? result : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.FOUR_A_KIND)) { for (int i = 0; i < dice.Count; i++) { result += dice[i]; } return(ScoreCategory.isNOfKind(dice, 4) ? result : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.FULLHOUSE)) { return(ScoreCategory.isFullHouse(dice) ? 25 : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.TINY_STRAIGHT)) { return(ScoreCategory.isTinyStraight(dice) ? 20 : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.SMALL_STRAIGHT)) { return(ScoreCategory.isSmallStraight(dice) ? 30 : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.LARGE_STRAIGHT)) { return(ScoreCategory.isLargeStraight(dice) ? 40 : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.YAHTZEE)) { return(ScoreCategory.isYahtzee(dice) ? 50 : 0); } else if (category.Equals(ScoreCategoryEnum.ScoreCategoryType.CHANCE)) { for (int i = 0; i < dice.Count; i++) { result += dice[i]; } return(result); } return(0); }
public Dictionary <ScoreCategoryEnum.ScoreCategoryType, int> saveScore(ScoreCategoryEnum.ScoreCategoryType category, int score, bool yahtzee) { scoreSheet.saveScore(category, score, yahtzee); return(scoreSheet.getDetailScore()); }
public int calculateScore(List <int> dice, ScoreCategoryEnum.ScoreCategoryType category) { return(scoreSheet.CalculateScore(dice, category)); }
public int getScore(ScoreCategoryEnum.ScoreCategoryType a) { return(scoreSheet.getScore(a)); }