Andrew Shi / Mbed 2 deprecated Lab4

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
ashi31
Date:
Fri Oct 22 03:57:47 2021 +0000
Revision:
0:7d8ffdfdb16e
Lab4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashi31 0:7d8ffdfdb16e 1 /**
ashi31 0:7d8ffdfdb16e 2
ashi31 0:7d8ffdfdb16e 3 Programmer: Andrew Shi
ashi31 0:7d8ffdfdb16e 4 Title: Lab 4 - Farkle Game
ashi31 0:7d8ffdfdb16e 5 Date: October 11 2021
ashi31 0:7d8ffdfdb16e 6 Description: Main function
ashi31 0:7d8ffdfdb16e 7
ashi31 0:7d8ffdfdb16e 8 **/
ashi31 0:7d8ffdfdb16e 9 #include "Die.h"
ashi31 0:7d8ffdfdb16e 10 #include "FarkleGame.h"
ashi31 0:7d8ffdfdb16e 11 #include "PinDetect.h"
ashi31 0:7d8ffdfdb16e 12
ashi31 0:7d8ffdfdb16e 13 #include "mbed.h"
ashi31 0:7d8ffdfdb16e 14 #include <time.h>
ashi31 0:7d8ffdfdb16e 15
ashi31 0:7d8ffdfdb16e 16 using namespace std;
ashi31 0:7d8ffdfdb16e 17
ashi31 0:7d8ffdfdb16e 18 Serial pc(USBTX,USBRX);
ashi31 0:7d8ffdfdb16e 19
ashi31 0:7d8ffdfdb16e 20 PinDetect A(p21);
ashi31 0:7d8ffdfdb16e 21 PinDetect B(p22);
ashi31 0:7d8ffdfdb16e 22 PinDetect C(p23);
ashi31 0:7d8ffdfdb16e 23
ashi31 0:7d8ffdfdb16e 24 int main(){
ashi31 0:7d8ffdfdb16e 25
ashi31 0:7d8ffdfdb16e 26 //clear system
ashi31 0:7d8ffdfdb16e 27 system("clear");
ashi31 0:7d8ffdfdb16e 28
ashi31 0:7d8ffdfdb16e 29 //declare buttons
ashi31 0:7d8ffdfdb16e 30 A.mode(PullUp);
ashi31 0:7d8ffdfdb16e 31 B.mode(PullUp);
ashi31 0:7d8ffdfdb16e 32 C.mode(PullUp); //unused
ashi31 0:7d8ffdfdb16e 33
ashi31 0:7d8ffdfdb16e 34 //declare uLCD screen
ashi31 0:7d8ffdfdb16e 35 uLCD_4DGL uLCD(p9,p10,p11);
ashi31 0:7d8ffdfdb16e 36 uLCD.cls();
ashi31 0:7d8ffdfdb16e 37 uLCD.display_control(PORTRAIT);
ashi31 0:7d8ffdfdb16e 38
ashi31 0:7d8ffdfdb16e 39 //declare accelerometer
ashi31 0:7d8ffdfdb16e 40 MMA8452 acc(p28, p27, 40000);
ashi31 0:7d8ffdfdb16e 41 acc.setBitDepth(MMA8452::BIT_DEPTH_12);
ashi31 0:7d8ffdfdb16e 42 acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G);
ashi31 0:7d8ffdfdb16e 43 acc.setDataRate(MMA8452::RATE_100);
ashi31 0:7d8ffdfdb16e 44
ashi31 0:7d8ffdfdb16e 45 //declare dice number
ashi31 0:7d8ffdfdb16e 46 int numDice = 6;
ashi31 0:7d8ffdfdb16e 47
ashi31 0:7d8ffdfdb16e 48 //initialize FarkleGame object
ashi31 0:7d8ffdfdb16e 49 FarkleGame game;
ashi31 0:7d8ffdfdb16e 50
ashi31 0:7d8ffdfdb16e 51 game.scrnWipe(uLCD);
ashi31 0:7d8ffdfdb16e 52
ashi31 0:7d8ffdfdb16e 53 //begin game
ashi31 0:7d8ffdfdb16e 54 while(1){
ashi31 0:7d8ffdfdb16e 55 //display intro and initialize values
ashi31 0:7d8ffdfdb16e 56 game.dispIntro(uLCD, numDice);
ashi31 0:7d8ffdfdb16e 57 game.init();
ashi31 0:7d8ffdfdb16e 58
ashi31 0:7d8ffdfdb16e 59 //check for roll, adjust number of Dice
ashi31 0:7d8ffdfdb16e 60 while(!game.checkRoll(acc)){
ashi31 0:7d8ffdfdb16e 61 if(!B){
ashi31 0:7d8ffdfdb16e 62 numDice = (numDice+1)%7;
ashi31 0:7d8ffdfdb16e 63 game.dispIntro(uLCD,numDice);
ashi31 0:7d8ffdfdb16e 64 }
ashi31 0:7d8ffdfdb16e 65 }
ashi31 0:7d8ffdfdb16e 66
ashi31 0:7d8ffdfdb16e 67 //roll dice when accelerometer is sensed, until A is clicked
ashi31 0:7d8ffdfdb16e 68 while(A){
ashi31 0:7d8ffdfdb16e 69 if(game.checkRoll(acc)){
ashi31 0:7d8ffdfdb16e 70 //roll dice and displar
ashi31 0:7d8ffdfdb16e 71 game.rollDice();
ashi31 0:7d8ffdfdb16e 72 game.displayDice(uLCD, numDice);
ashi31 0:7d8ffdfdb16e 73
ashi31 0:7d8ffdfdb16e 74 //update scores
ashi31 0:7d8ffdfdb16e 75 game.loadVals(numDice);
ashi31 0:7d8ffdfdb16e 76 game.updateScores();
ashi31 0:7d8ffdfdb16e 77
ashi31 0:7d8ffdfdb16e 78 //display screens based on scores
ashi31 0:7d8ffdfdb16e 79 if(game.calcScore() == 0){
ashi31 0:7d8ffdfdb16e 80 game.dispFarkle(uLCD);
ashi31 0:7d8ffdfdb16e 81 wait(3);
ashi31 0:7d8ffdfdb16e 82 break;
ashi31 0:7d8ffdfdb16e 83 }
ashi31 0:7d8ffdfdb16e 84 else{
ashi31 0:7d8ffdfdb16e 85 game.dispScore(uLCD);
ashi31 0:7d8ffdfdb16e 86 }
ashi31 0:7d8ffdfdb16e 87 }
ashi31 0:7d8ffdfdb16e 88 }
ashi31 0:7d8ffdfdb16e 89
ashi31 0:7d8ffdfdb16e 90 //display turn end screen
ashi31 0:7d8ffdfdb16e 91 game.dispTurn(uLCD);
ashi31 0:7d8ffdfdb16e 92 //wait for button to be pressed
ashi31 0:7d8ffdfdb16e 93 while(A){
ashi31 0:7d8ffdfdb16e 94 }
ashi31 0:7d8ffdfdb16e 95 //reset numDice
ashi31 0:7d8ffdfdb16e 96 numDice = 6;
ashi31 0:7d8ffdfdb16e 97 }
ashi31 0:7d8ffdfdb16e 98
ashi31 0:7d8ffdfdb16e 99 }
ashi31 0:7d8ffdfdb16e 100