Farkle Game Code-Final
Dependencies: mbed 4DGL-uLCD-SE PinDetect
farkleMath.cpp
- Committer:
- mmcdoanld81
- Date:
- 2022-03-17
- Revision:
- 0:8ef203a5084f
File content as of revision 0:8ef203a5084f:
//This file contains all the score calculations for the different type of dicerolls #include <iostream> #include <fstream> #include <iomanip> #include <cmath> #include <cstdlib> #include <time.h> #include <string> #include <stdlib.h> #include <stdio.h> #include <sstream> #include "farkleMath.h" #include "diceMath.h" #include "MMA8452.h" #include "uLCD_4DGL.h" #include "Speaker.h" #include "temperature.h" #include "PinDetect.h" #include "mbed.h" using namespace std; extern MMA8452 acc; extern uLCD_4DGL uLCD; extern PinDetect pb1; extern PinDetect pb2; extern PinDetect pb3; extern Serial pc; extern Speaker mySpeaker; extern Dice dice; FarkleMath farklemath; //Calls in my setters and getters so I can use them void FarkleMath::setRollScore(int input) { rollScore = input; } void FarkleMath::setTurnScore(int input) { turnScore = input; } int FarkleMath::getRollScore() { return rollScore; } int FarkleMath::getTurnScore() { return turnScore; } FarkleMath::FarkleMath() { turnScore = 0; rollScore = 0; } //The following code is the calculations for all possible ways //to get points in this game void FarkleMath::five(bool& value) { if ((dice.getGetDiceResults(5)==(1||2))){ value = false; rollScore += (50); dice.setSetDiceResult(5, 0); dice.setTakeaway((1)); uLCD.locate(0,13); } } void FarkleMath::one(bool& value) { if ((dice.getGetDiceResults(1)==(1||2))){ value = false; rollScore += (100); dice.setTakeaway((1)); dice.setSetDiceResult(1, 0); uLCD.locate(0,13); } } void FarkleMath::twofive(bool& value) { if ((dice.getGetDiceResults(5)== 2)){ value = false; rollScore += (100); dice.setSetDiceResult(5, 0); dice.setTakeaway((2)); uLCD.locate(0,13); } } void FarkleMath::twoone(bool& value) { if ((dice.getGetDiceResults(1)==2)){ value = false; rollScore += (200); dice.setTakeaway((2)); dice.setSetDiceResult(1, 0); uLCD.locate(0,13); } } void FarkleMath::threeOne(bool& value) { if ((dice.getGetDiceResults(1)==3)){ value = false; rollScore += 1000; dice.setSetDiceResult(1, 0); dice.setTakeaway(3); uLCD.locate(0,13); } } void FarkleMath::threeTwo(bool& value) { if ((dice.getGetDiceResults(2)==3)){ value = false; rollScore += 200; dice.setSetDiceResult(2, 0); dice.setTakeaway(3); uLCD.locate(0,13); } } void FarkleMath::threeThree(bool& value) { if ((dice.getGetDiceResults(3)==3)){ value = false; rollScore += 300; dice.setSetDiceResult(3, 0); dice.setTakeaway(3); uLCD.locate(0,13); } } void FarkleMath::threeFour(bool& value) { if ((dice.getGetDiceResults(4)==3)){ value = false; rollScore += 400; dice.setSetDiceResult(4, 0); dice.setTakeaway(3); uLCD.locate(0,13); } } void FarkleMath::threeFive(bool& value) { if ((dice.getGetDiceResults(5)==3)){ value = false; rollScore += 500; dice.setSetDiceResult(5, 0); dice.setTakeaway(3); uLCD.locate(0,13); } } void FarkleMath::threeSix(bool& value) { if ((dice.getGetDiceResults(6)==3)) { value = false; rollScore += 600; dice.setTakeaway(3); dice.setSetDiceResult(6, 0); uLCD.locate(0,13); } } void FarkleMath::flush(bool& value) { if ((dice.getGetDiceResults(1)==1)&&(dice.getGetDiceResults(2)==2)&& (dice.getGetDiceResults(3)==3)&&(dice.getGetDiceResults(4)==4)&& (dice.getGetDiceResults(5)==5)&&(dice.getGetDiceResults(6)==6)) { value = false; rollScore += 1500; dice.setTakeaway(6); for(int i = 1; i<=6; i++) { dice.setSetDiceResult(i, 0); uLCD.locate(0,13); } } } //why find easy ways to do stuff when you can just hard code it into the game! void FarkleMath::threePairs(bool& value) { bool one = (dice.getGetDiceResults(1) == 2); bool two = (dice.getGetDiceResults(2) == 2); bool three = (dice.getGetDiceResults(3) == 2); bool four = (dice.getGetDiceResults(4) == 2); bool five = (dice.getGetDiceResults(5) == 2); bool six = (dice.getGetDiceResults(6) == 2); //all possible combinations of the dice to get bool oneTwoThree = ((one && two && three) == true); bool oneTwoFour = ((one && two && four) == true); bool oneTwoFive = ((one && two && five) == true); bool oneTwoSix = ((one && two && six) == true); bool oneThreeFour = ((one && three && four) == true); bool oneThreeFive = ((one && three && five) == true); bool oneThreeSix = ((one && three && six) == true); bool oneFourFive = ((one && four && five) == true); bool oneFourSix = ((one && four && six) == true); bool oneFiveSix = ((one && five && six) == true); bool twoThreeFour = ((two && three && four) == true); bool twoThreeFive = ((two && three && five) == true); bool twoThreeSix = ((two && three && six) == true); bool twoFourFive = ((two && four && five) == true); bool twoFourSix = ((two && four && six) == true); bool twoFiveSix = ((two && five && six) == true); bool threeFourFive = ((three && four && five) == true); bool threeFourSix = ((three && four && six) == true); bool threeFiveSix = ((three && five && six) == true); if ((oneTwoThree || oneTwoFour || oneTwoFive || oneTwoSix || oneThreeFour || oneThreeFive || oneThreeSix || oneFourFive || oneFourSix || oneFiveSix || twoThreeFour || twoThreeFive || twoThreeSix || twoFourFive || twoFourSix || twoFiveSix || threeFourFive || threeFourSix || threeFiveSix) == true){ value = false; rollScore += 1500; dice.setTakeaway(6); uLCD.locate(0,13); for (int k = 1; k <=6; k++){ dice.setSetDiceResult(k, 0); } } } void FarkleMath::twoTriplets(bool& value) { for (int i = 1; i <=6; i++){ if ((dice.getGetDiceResults(i)==3)){ for (int j = 1; j <=6; j++){ if (((dice.getGetDiceResults(j)==3)&&(j != i))){ value = false; rollScore += 2500; dice.setTakeaway(6); for (int k = 1; k <=6; k++){ dice.setSetDiceResult(k, 0); uLCD.locate(0,13); } } } } } } void FarkleMath::fourOfAKind(bool& value) { for (int i = 1; i <=6; i++){ if ((dice.getGetDiceResults(i)==4)) { value = false; rollScore += 1000; dice.setSetDiceResult(i, 0); dice.setTakeaway(4); uLCD.locate(0,13); } } } void FarkleMath::fiveOfAKind(bool& value) { for (int i = 1; i <=6; i++){ if ((dice.getGetDiceResults(i)==5)) { value = false; rollScore += 2000; dice.setSetDiceResult(i, 0); dice.setTakeaway(5); uLCD.locate(0,13); } } } void FarkleMath::sixOfAKind(bool& value) { for (int i = 1; i <=6; i++) { if ((dice.getGetDiceResults(i)==6)) { value = false; rollScore += 3000; dice.setSetDiceResult(i, 0); dice.setTakeaway(6); uLCD.locate(0,13); } } } void FarkleMath::isZero(bool& value){ if (value == true){ rollScore = 0; } } void FarkleMath::printRollScore(bool& value){ if (value == false){ uLCD.locate(0,13); uLCD.text_width(1); uLCD.text_height(1); uLCD.printf("Roll Score: %d\n",rollScore); } } void FarkleMath::printTurnScore(bool& value){ if (value == false){ uLCD.locate(0,14); uLCD.text_width(1); uLCD.text_height(1); uLCD.printf("Turn Score: %d", turnScore); } } void FarkleMath::printFarkle(bool& value){ if (value == true){ rollScore = 0; turnScore = 0; uLCD.locate(0,12); uLCD.text_width(3); uLCD.text_height(3); uLCD.printf("FARKLE"); } } //Prints the end game screen with amount of points for turn void FarkleMath::printEndGame(int value) { uLCD.cls(); uLCD.text_width(2); uLCD.text_height(2); uLCD.printf("This\n"); uLCD.printf("Turns\n"); uLCD.printf("Score Is\n"); uLCD.printf("--------\n"); uLCD.printf("%d\n", value); uLCD.printf("Points!\n"); } //Calculates the score for a turn. Set in a way from what gives the //highest score to the lowest score. These are all function calls. void FarkleMath::calculateScore(){ temp = true; sixOfAKind(temp); fiveOfAKind(temp); fourOfAKind(temp); twoTriplets(temp); threePairs(temp); flush(temp); threeSix(temp); threeFive(temp); threeFour(temp); threeThree(temp); threeTwo(temp); threeOne(temp); twoone(temp); twofive(temp); one(temp); five(temp); isZero(temp); turnScore = turnScore + rollScore; printRollScore(temp); printTurnScore(temp); printFarkle(temp); rollScore = 0; }