Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed 4DGL-uLCD-SE PinDetect
main.cpp@0:8ee41d0deef7, 2021-10-26 (annotated)
- Committer:
- klin315
- Date:
- Tue Oct 26 05:10:36 2021 +0000
- Revision:
- 0:8ee41d0deef7
- Child:
- 1:3cd6e5938144
ok
Who changed what in which revision?
| User | Revision | Line number | New 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 | 0:8ee41d0deef7 | 6 | Description: Main function that implements all the getters and setters |
| 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 | } |