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
Die.cpp@0:7d8ffdfdb16e, 2021-10-22 (annotated)
- Committer:
- ashi31
- Date:
- Fri Oct 22 03:57:47 2021 +0000
- Revision:
- 0:7d8ffdfdb16e
Lab4
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ashi31 | 0:7d8ffdfdb16e | 1 | #include "Die.h" |
| ashi31 | 0:7d8ffdfdb16e | 2 | |
| ashi31 | 0:7d8ffdfdb16e | 3 | #include <string> |
| ashi31 | 0:7d8ffdfdb16e | 4 | #include <iostream> |
| ashi31 | 0:7d8ffdfdb16e | 5 | |
| ashi31 | 0:7d8ffdfdb16e | 6 | #include <stdlib.h> /* srand, rand */ |
| ashi31 | 0:7d8ffdfdb16e | 7 | #include <time.h> /* time */ |
| ashi31 | 0:7d8ffdfdb16e | 8 | |
| ashi31 | 0:7d8ffdfdb16e | 9 | #define WHITE 0xFFFFFF |
| ashi31 | 0:7d8ffdfdb16e | 10 | |
| ashi31 | 0:7d8ffdfdb16e | 11 | using namespace std; |
| ashi31 | 0:7d8ffdfdb16e | 12 | |
| ashi31 | 0:7d8ffdfdb16e | 13 | //Constructors |
| ashi31 | 0:7d8ffdfdb16e | 14 | Die::Die(){ |
| ashi31 | 0:7d8ffdfdb16e | 15 | val = 1; |
| ashi31 | 0:7d8ffdfdb16e | 16 | } |
| ashi31 | 0:7d8ffdfdb16e | 17 | |
| ashi31 | 0:7d8ffdfdb16e | 18 | Die::Die(int v){ |
| ashi31 | 0:7d8ffdfdb16e | 19 | if((v > 0) && (v < 7)){ |
| ashi31 | 0:7d8ffdfdb16e | 20 | val = v; |
| ashi31 | 0:7d8ffdfdb16e | 21 | } |
| ashi31 | 0:7d8ffdfdb16e | 22 | else{ |
| ashi31 | 0:7d8ffdfdb16e | 23 | val = 1; |
| ashi31 | 0:7d8ffdfdb16e | 24 | } |
| ashi31 | 0:7d8ffdfdb16e | 25 | } |
| ashi31 | 0:7d8ffdfdb16e | 26 | |
| ashi31 | 0:7d8ffdfdb16e | 27 | //Public Methods |
| ashi31 | 0:7d8ffdfdb16e | 28 | void Die::rollDie(){ |
| ashi31 | 0:7d8ffdfdb16e | 29 | |
| ashi31 | 0:7d8ffdfdb16e | 30 | val = rand()%6+1; |
| ashi31 | 0:7d8ffdfdb16e | 31 | } |
| ashi31 | 0:7d8ffdfdb16e | 32 | |
| ashi31 | 0:7d8ffdfdb16e | 33 | //6 draw functions |
| ashi31 | 0:7d8ffdfdb16e | 34 | void Die::draw1(int pos, uLCD_4DGL& scr){ |
| ashi31 | 0:7d8ffdfdb16e | 35 | int ycent = 42*(((pos-1)/3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 36 | int xcent = 42*(((pos-1)%3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 37 | |
| ashi31 | 0:7d8ffdfdb16e | 38 | int width = 20; |
| ashi31 | 0:7d8ffdfdb16e | 39 | |
| ashi31 | 0:7d8ffdfdb16e | 40 | int rad = 5; |
| ashi31 | 0:7d8ffdfdb16e | 41 | |
| ashi31 | 0:7d8ffdfdb16e | 42 | scr.rectangle(xcent-width, ycent-width, xcent+width, ycent+width, WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 43 | scr.filled_circle(xcent,ycent,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 44 | } |
| ashi31 | 0:7d8ffdfdb16e | 45 | |
| ashi31 | 0:7d8ffdfdb16e | 46 | void Die::draw2(int pos, uLCD_4DGL& scr){ |
| ashi31 | 0:7d8ffdfdb16e | 47 | int ycent = 42*(((pos-1)/3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 48 | int xcent = 42*(((pos-1)%3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 49 | |
| ashi31 | 0:7d8ffdfdb16e | 50 | int width = 20; |
| ashi31 | 0:7d8ffdfdb16e | 51 | |
| ashi31 | 0:7d8ffdfdb16e | 52 | int rad = 5; |
| ashi31 | 0:7d8ffdfdb16e | 53 | |
| ashi31 | 0:7d8ffdfdb16e | 54 | scr.rectangle(xcent-width, ycent-width, xcent+width, ycent+width, WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 55 | scr.filled_circle(xcent+12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 56 | scr.filled_circle(xcent-12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 57 | } |
| ashi31 | 0:7d8ffdfdb16e | 58 | |
| ashi31 | 0:7d8ffdfdb16e | 59 | void Die::draw3(int pos, uLCD_4DGL& scr){ |
| ashi31 | 0:7d8ffdfdb16e | 60 | int ycent = 42*(((pos-1)/3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 61 | int xcent = 42*(((pos-1)%3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 62 | |
| ashi31 | 0:7d8ffdfdb16e | 63 | int width = 20; |
| ashi31 | 0:7d8ffdfdb16e | 64 | |
| ashi31 | 0:7d8ffdfdb16e | 65 | int rad = 5; |
| ashi31 | 0:7d8ffdfdb16e | 66 | |
| ashi31 | 0:7d8ffdfdb16e | 67 | scr.rectangle(xcent-width, ycent-width, xcent+width, ycent+width, WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 68 | scr.filled_circle(xcent+12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 69 | scr.filled_circle(xcent,ycent,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 70 | scr.filled_circle(xcent-12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 71 | } |
| ashi31 | 0:7d8ffdfdb16e | 72 | |
| ashi31 | 0:7d8ffdfdb16e | 73 | void Die::draw4(int pos, uLCD_4DGL& scr){ |
| ashi31 | 0:7d8ffdfdb16e | 74 | int ycent = 42*(((pos-1)/3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 75 | int xcent = 42*(((pos-1)%3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 76 | |
| ashi31 | 0:7d8ffdfdb16e | 77 | int width = 20; |
| ashi31 | 0:7d8ffdfdb16e | 78 | |
| ashi31 | 0:7d8ffdfdb16e | 79 | int rad = 5; |
| ashi31 | 0:7d8ffdfdb16e | 80 | |
| ashi31 | 0:7d8ffdfdb16e | 81 | scr.rectangle(xcent-width, ycent-width, xcent+width, ycent+width, WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 82 | scr.filled_circle(xcent+12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 83 | scr.filled_circle(xcent+12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 84 | scr.filled_circle(xcent-12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 85 | scr.filled_circle(xcent-12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 86 | } |
| ashi31 | 0:7d8ffdfdb16e | 87 | |
| ashi31 | 0:7d8ffdfdb16e | 88 | void Die::draw5(int pos, uLCD_4DGL& scr){ |
| ashi31 | 0:7d8ffdfdb16e | 89 | int ycent = 42*(((pos-1)/3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 90 | int xcent = 42*(((pos-1)%3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 91 | |
| ashi31 | 0:7d8ffdfdb16e | 92 | int width = 20; |
| ashi31 | 0:7d8ffdfdb16e | 93 | |
| ashi31 | 0:7d8ffdfdb16e | 94 | int rad = 5; |
| ashi31 | 0:7d8ffdfdb16e | 95 | |
| ashi31 | 0:7d8ffdfdb16e | 96 | scr.rectangle(xcent-width, ycent-width, xcent+width, ycent+width, WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 97 | scr.filled_circle(xcent,ycent,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 98 | scr.filled_circle(xcent+12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 99 | scr.filled_circle(xcent+12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 100 | scr.filled_circle(xcent-12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 101 | scr.filled_circle(xcent-12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 102 | } |
| ashi31 | 0:7d8ffdfdb16e | 103 | |
| ashi31 | 0:7d8ffdfdb16e | 104 | void Die::draw6(int pos, uLCD_4DGL& scr){ |
| ashi31 | 0:7d8ffdfdb16e | 105 | int ycent = 42*(((pos-1)/3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 106 | int xcent = 42*(((pos-1)%3)+1)-21; |
| ashi31 | 0:7d8ffdfdb16e | 107 | |
| ashi31 | 0:7d8ffdfdb16e | 108 | int width = 20; |
| ashi31 | 0:7d8ffdfdb16e | 109 | |
| ashi31 | 0:7d8ffdfdb16e | 110 | int rad = 5; |
| ashi31 | 0:7d8ffdfdb16e | 111 | |
| ashi31 | 0:7d8ffdfdb16e | 112 | scr.rectangle(xcent-width, ycent-width, xcent+width, ycent+width, WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 113 | scr.filled_circle(xcent-12,ycent,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 114 | scr.filled_circle(xcent+12,ycent,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 115 | scr.filled_circle(xcent+12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 116 | scr.filled_circle(xcent+12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 117 | scr.filled_circle(xcent-12,ycent+12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 118 | scr.filled_circle(xcent-12,ycent-12,rad,WHITE); |
| ashi31 | 0:7d8ffdfdb16e | 119 | } |
| ashi31 | 0:7d8ffdfdb16e | 120 | |
| ashi31 | 0:7d8ffdfdb16e | 121 | //display Die based on value |
| ashi31 | 0:7d8ffdfdb16e | 122 | void Die::displayDie(int position, uLCD_4DGL& screen){ |
| ashi31 | 0:7d8ffdfdb16e | 123 | if(val == 1){draw1(position,screen);} |
| ashi31 | 0:7d8ffdfdb16e | 124 | if(val == 2){draw2(position,screen);} |
| ashi31 | 0:7d8ffdfdb16e | 125 | if(val == 3){draw3(position,screen);} |
| ashi31 | 0:7d8ffdfdb16e | 126 | if(val == 4){draw4(position,screen);} |
| ashi31 | 0:7d8ffdfdb16e | 127 | if(val == 5){draw5(position,screen);} |
| ashi31 | 0:7d8ffdfdb16e | 128 | if(val == 6){draw6(position,screen);} |
| ashi31 | 0:7d8ffdfdb16e | 129 | } |
| ashi31 | 0:7d8ffdfdb16e | 130 | |
| ashi31 | 0:7d8ffdfdb16e | 131 | |
| ashi31 | 0:7d8ffdfdb16e | 132 | |
| ashi31 | 0:7d8ffdfdb16e | 133 | //S&G |
| ashi31 | 0:7d8ffdfdb16e | 134 | void Die::setVal(int v){ |
| ashi31 | 0:7d8ffdfdb16e | 135 | val = v; |
| ashi31 | 0:7d8ffdfdb16e | 136 | } |
| ashi31 | 0:7d8ffdfdb16e | 137 | |
| ashi31 | 0:7d8ffdfdb16e | 138 | int Die::getVal(){ |
| ashi31 | 0:7d8ffdfdb16e | 139 | return val; |
| ashi31 | 0:7d8ffdfdb16e | 140 | } |