Kevin Lin / Mbed 2 deprecated Lab4Farkle

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
klin315
Date:
Tue Oct 26 06:04:46 2021 +0000
Revision:
1:3cd6e5938144
Parent:
0:8ee41d0deef7
d

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klin315 0:8ee41d0deef7 1 /**
klin315 0:8ee41d0deef7 2
klin315 0:8ee41d0deef7 3 Author: Kevin Lin
klin315 0:8ee41d0deef7 4 Title: Lab 4
klin315 0:8ee41d0deef7 5 Date: October 22 2021
klin315 1:3cd6e5938144 6 Description: Main function that implements the FarkleGame and its dice.
klin315 0:8ee41d0deef7 7
klin315 0:8ee41d0deef7 8 **/
klin315 0:8ee41d0deef7 9 #include "die.h"
klin315 0:8ee41d0deef7 10 #include "farklegame.h"
klin315 0:8ee41d0deef7 11 #include "PinDetect.h"
klin315 0:8ee41d0deef7 12
klin315 0:8ee41d0deef7 13 #include "mbed.h"
klin315 0:8ee41d0deef7 14
klin315 0:8ee41d0deef7 15 using namespace std;
klin315 0:8ee41d0deef7 16
klin315 0:8ee41d0deef7 17 Serial pc(USBTX,USBRX);
klin315 0:8ee41d0deef7 18 Speaker mySpeaker(p21);
klin315 0:8ee41d0deef7 19
klin315 0:8ee41d0deef7 20
klin315 0:8ee41d0deef7 21
klin315 0:8ee41d0deef7 22 int main(){
klin315 0:8ee41d0deef7 23
klin315 0:8ee41d0deef7 24 //clear system
klin315 0:8ee41d0deef7 25 system("clear");
klin315 0:8ee41d0deef7 26
klin315 0:8ee41d0deef7 27 //declare buttons
klin315 0:8ee41d0deef7 28
klin315 0:8ee41d0deef7 29
klin315 0:8ee41d0deef7 30 //declare uLCD screen
klin315 0:8ee41d0deef7 31 uLCD_4DGL uLCD(p9,p10,p11);
klin315 0:8ee41d0deef7 32 uLCD.cls();
klin315 0:8ee41d0deef7 33 uLCD.display_control(PORTRAIT);
klin315 0:8ee41d0deef7 34 PinDetect Button1(p16);
klin315 0:8ee41d0deef7 35 PinDetect Button2(p17);
klin315 0:8ee41d0deef7 36 Button1.mode(PullUp);
klin315 0:8ee41d0deef7 37 Button2.mode(PullUp);
klin315 0:8ee41d0deef7 38
klin315 0:8ee41d0deef7 39 //declare accelerometer
klin315 0:8ee41d0deef7 40 MMA8452 acc(p28, p27, 40000);
klin315 0:8ee41d0deef7 41 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
klin315 0:8ee41d0deef7 42 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
klin315 0:8ee41d0deef7 43 acc.setDataRate(MMA8452::RATE_100);
klin315 0:8ee41d0deef7 44
klin315 0:8ee41d0deef7 45 int numDice = 6;
klin315 0:8ee41d0deef7 46
klin315 0:8ee41d0deef7 47 FarkleGame game;
klin315 0:8ee41d0deef7 48
klin315 0:8ee41d0deef7 49 while(1){
klin315 0:8ee41d0deef7 50 game.displayIntro(uLCD, numDice);
klin315 0:8ee41d0deef7 51 game.restart();
klin315 0:8ee41d0deef7 52
klin315 0:8ee41d0deef7 53 while(!game.enoughGravity(acc)){
klin315 0:8ee41d0deef7 54 if(!Button2){
klin315 0:8ee41d0deef7 55 numDice = (numDice+1)%7;
klin315 0:8ee41d0deef7 56 game.displayIntro(uLCD,numDice);
klin315 0:8ee41d0deef7 57 }
klin315 0:8ee41d0deef7 58 }
klin315 0:8ee41d0deef7 59
klin315 0:8ee41d0deef7 60 while(Button1){
klin315 0:8ee41d0deef7 61 if(game.enoughGravity(acc)){
klin315 0:8ee41d0deef7 62 //roll dice and displar
klin315 0:8ee41d0deef7 63 game.rollDice(mySpeaker);
klin315 0:8ee41d0deef7 64 game.displayDice(uLCD, numDice);
klin315 0:8ee41d0deef7 65
klin315 0:8ee41d0deef7 66 //update scores
klin315 0:8ee41d0deef7 67 game.loadVals(numDice);
klin315 0:8ee41d0deef7 68 game.changeScore();
klin315 0:8ee41d0deef7 69
klin315 0:8ee41d0deef7 70 //display screens based on scores
klin315 0:8ee41d0deef7 71 if(game.calculateRoll() == 0){
klin315 0:8ee41d0deef7 72 game.displayFarkle(uLCD);
klin315 0:8ee41d0deef7 73 break;
klin315 0:8ee41d0deef7 74 }
klin315 0:8ee41d0deef7 75 else{
klin315 0:8ee41d0deef7 76 game.displayScore(uLCD);
klin315 0:8ee41d0deef7 77 }
klin315 0:8ee41d0deef7 78 }
klin315 0:8ee41d0deef7 79 }
klin315 0:8ee41d0deef7 80
klin315 0:8ee41d0deef7 81 //display turn end screen
klin315 0:8ee41d0deef7 82 game.displayTurnScore(uLCD);
klin315 0:8ee41d0deef7 83 //wait for button to be pressed
klin315 0:8ee41d0deef7 84 while(Button1){
klin315 0:8ee41d0deef7 85 }
klin315 0:8ee41d0deef7 86 //reset numDice
klin315 0:8ee41d0deef7 87 numDice = 6;
klin315 0:8ee41d0deef7 88 }
klin315 0:8ee41d0deef7 89
klin315 0:8ee41d0deef7 90 }