Dance Dance Revolution program for main mbed

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player

Committer:
wliu88
Date:
Fri Apr 29 02:04:07 2016 +0000
Revision:
0:8a02ac09eae0
new

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wliu88 0:8a02ac09eae0 1 #ifndef ARROWS_H
wliu88 0:8a02ac09eae0 2 #define ARROWS_H
wliu88 0:8a02ac09eae0 3
wliu88 0:8a02ac09eae0 4
wliu88 0:8a02ac09eae0 5 #include "mbed.h"
wliu88 0:8a02ac09eae0 6 #include "globals.h"
wliu88 0:8a02ac09eae0 7 //arrow.h: file responsible for generating arrow
wliu88 0:8a02ac09eae0 8 //LEFT = 0
wliu88 0:8a02ac09eae0 9 //UP = 1
wliu88 0:8a02ac09eae0 10 //DOWN = 2
wliu88 0:8a02ac09eae0 11 //RIGHT = 3
wliu88 0:8a02ac09eae0 12 //INVALID = -1
wliu88 0:8a02ac09eae0 13
wliu88 0:8a02ac09eae0 14 class Arrow {
wliu88 0:8a02ac09eae0 15 public:
wliu88 0:8a02ac09eae0 16 int active;
wliu88 0:8a02ac09eae0 17 int type;
wliu88 0:8a02ac09eae0 18 int locx1;
wliu88 0:8a02ac09eae0 19 int locx2;
wliu88 0:8a02ac09eae0 20 int locx3;
wliu88 0:8a02ac09eae0 21 int locy1;
wliu88 0:8a02ac09eae0 22 int locy2;
wliu88 0:8a02ac09eae0 23 int locy3;
wliu88 0:8a02ac09eae0 24 int currx;
wliu88 0:8a02ac09eae0 25 int curry;
wliu88 0:8a02ac09eae0 26 double delay;
wliu88 0:8a02ac09eae0 27 Arrow(){}
wliu88 0:8a02ac09eae0 28 Arrow(int dir) {
wliu88 0:8a02ac09eae0 29 type = dir;
wliu88 0:8a02ac09eae0 30 if(dir != -1){ active = 0; }
wliu88 0:8a02ac09eae0 31 else {active = 1;}
wliu88 0:8a02ac09eae0 32 }
wliu88 0:8a02ac09eae0 33 Arrow(int dir, double arg_delay){
wliu88 0:8a02ac09eae0 34 type = dir;
wliu88 0:8a02ac09eae0 35 if(dir != -1){active =0;}
wliu88 0:8a02ac09eae0 36 else {active = 1;}
wliu88 0:8a02ac09eae0 37 delay = arg_delay;
wliu88 0:8a02ac09eae0 38 }
wliu88 0:8a02ac09eae0 39 double getDelay(){
wliu88 0:8a02ac09eae0 40 return delay;
wliu88 0:8a02ac09eae0 41 }
wliu88 0:8a02ac09eae0 42 void setType(int dir) {
wliu88 0:8a02ac09eae0 43 type = dir;
wliu88 0:8a02ac09eae0 44 }
wliu88 0:8a02ac09eae0 45 int getType(){
wliu88 0:8a02ac09eae0 46 return type;
wliu88 0:8a02ac09eae0 47 }
wliu88 0:8a02ac09eae0 48 int getActive(){
wliu88 0:8a02ac09eae0 49 return active;
wliu88 0:8a02ac09eae0 50 }
wliu88 0:8a02ac09eae0 51 void setActive(int activepassive){
wliu88 0:8a02ac09eae0 52 active = activepassive;
wliu88 0:8a02ac09eae0 53 }
wliu88 0:8a02ac09eae0 54 void init(int screenNum){
wliu88 0:8a02ac09eae0 55 if(active){
wliu88 0:8a02ac09eae0 56 switch(type){
wliu88 0:8a02ac09eae0 57 case 0:
wliu88 0:8a02ac09eae0 58 locx1 = 10;
wliu88 0:8a02ac09eae0 59 locy1 = 123;
wliu88 0:8a02ac09eae0 60 locx2 = 20;
wliu88 0:8a02ac09eae0 61 locy2 = 119;
wliu88 0:8a02ac09eae0 62 locx3 = 20;
wliu88 0:8a02ac09eae0 63 locy3 = 127;
wliu88 0:8a02ac09eae0 64 currx = 15;
wliu88 0:8a02ac09eae0 65 curry = 123;
wliu88 0:8a02ac09eae0 66 break;
wliu88 0:8a02ac09eae0 67 case 3:
wliu88 0:8a02ac09eae0 68 locx1 = 106;
wliu88 0:8a02ac09eae0 69 locy1 = 119;
wliu88 0:8a02ac09eae0 70 locx2 = 106;
wliu88 0:8a02ac09eae0 71 locy2 = 127;
wliu88 0:8a02ac09eae0 72 locx3 = 116;
wliu88 0:8a02ac09eae0 73 locy3 = 123;
wliu88 0:8a02ac09eae0 74 currx = 111;
wliu88 0:8a02ac09eae0 75 curry = 123;
wliu88 0:8a02ac09eae0 76 break;
wliu88 0:8a02ac09eae0 77 case 1:
wliu88 0:8a02ac09eae0 78 locx1 = 42;
wliu88 0:8a02ac09eae0 79 locy1 = 127;
wliu88 0:8a02ac09eae0 80 locx2 = 47;
wliu88 0:8a02ac09eae0 81 locy2 = 119;
wliu88 0:8a02ac09eae0 82 locx3 = 52;
wliu88 0:8a02ac09eae0 83 locy3 = 127;
wliu88 0:8a02ac09eae0 84 currx = 47;
wliu88 0:8a02ac09eae0 85 curry = 123;
wliu88 0:8a02ac09eae0 86 break;
wliu88 0:8a02ac09eae0 87 case 2:
wliu88 0:8a02ac09eae0 88 locx1 = 74;
wliu88 0:8a02ac09eae0 89 locy1 = 119;
wliu88 0:8a02ac09eae0 90 locx2 = 79;
wliu88 0:8a02ac09eae0 91 locy2 = 127;
wliu88 0:8a02ac09eae0 92 locx3 = 84;
wliu88 0:8a02ac09eae0 93 locy3 = 119;
wliu88 0:8a02ac09eae0 94 currx = 79;
wliu88 0:8a02ac09eae0 95 curry = 123;
wliu88 0:8a02ac09eae0 96 break;
wliu88 0:8a02ac09eae0 97 default:
wliu88 0:8a02ac09eae0 98 //arrow has not been released/dead
wliu88 0:8a02ac09eae0 99 }
wliu88 0:8a02ac09eae0 100 if(type != -1){
wliu88 0:8a02ac09eae0 101 if(screenNum==0){
wliu88 0:8a02ac09eae0 102 uLCD.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF);
wliu88 0:8a02ac09eae0 103 }
wliu88 0:8a02ac09eae0 104 else if (screenNum == 1) {
wliu88 0:8a02ac09eae0 105 uLCD2.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF);
wliu88 0:8a02ac09eae0 106 }
wliu88 0:8a02ac09eae0 107 else {
wliu88 0:8a02ac09eae0 108 uLCD.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF);
wliu88 0:8a02ac09eae0 109 uLCD2.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF);
wliu88 0:8a02ac09eae0 110 }
wliu88 0:8a02ac09eae0 111 }
wliu88 0:8a02ac09eae0 112 }
wliu88 0:8a02ac09eae0 113 }
wliu88 0:8a02ac09eae0 114
wliu88 0:8a02ac09eae0 115 void init2(){
wliu88 0:8a02ac09eae0 116 if(active){
wliu88 0:8a02ac09eae0 117 switch(type){
wliu88 0:8a02ac09eae0 118 case 0:
wliu88 0:8a02ac09eae0 119 locx1 = 10;
wliu88 0:8a02ac09eae0 120 locy1 = 123;
wliu88 0:8a02ac09eae0 121 locx2 = 20;
wliu88 0:8a02ac09eae0 122 locy2 = 119;
wliu88 0:8a02ac09eae0 123 locx3 = 20;
wliu88 0:8a02ac09eae0 124 locy3 = 127;
wliu88 0:8a02ac09eae0 125 currx = 15;
wliu88 0:8a02ac09eae0 126 curry = 123;
wliu88 0:8a02ac09eae0 127 break;
wliu88 0:8a02ac09eae0 128 case 3:
wliu88 0:8a02ac09eae0 129 locx1 = 106;
wliu88 0:8a02ac09eae0 130 locy1 = 119;
wliu88 0:8a02ac09eae0 131 locx2 = 106;
wliu88 0:8a02ac09eae0 132 locy2 = 127;
wliu88 0:8a02ac09eae0 133 locx3 = 116;
wliu88 0:8a02ac09eae0 134 locy3 = 123;
wliu88 0:8a02ac09eae0 135 currx = 111;
wliu88 0:8a02ac09eae0 136 curry = 123;
wliu88 0:8a02ac09eae0 137 break;
wliu88 0:8a02ac09eae0 138 case 1:
wliu88 0:8a02ac09eae0 139 locx1 = 42;
wliu88 0:8a02ac09eae0 140 locy1 = 127;
wliu88 0:8a02ac09eae0 141 locx2 = 47;
wliu88 0:8a02ac09eae0 142 locy2 = 119;
wliu88 0:8a02ac09eae0 143 locx3 = 52;
wliu88 0:8a02ac09eae0 144 locy3 = 127;
wliu88 0:8a02ac09eae0 145 currx = 47;
wliu88 0:8a02ac09eae0 146 curry = 123;
wliu88 0:8a02ac09eae0 147 break;
wliu88 0:8a02ac09eae0 148 case 2:
wliu88 0:8a02ac09eae0 149 locx1 = 74;
wliu88 0:8a02ac09eae0 150 locy1 = 119;
wliu88 0:8a02ac09eae0 151 locx2 = 79;
wliu88 0:8a02ac09eae0 152 locy2 = 127;
wliu88 0:8a02ac09eae0 153 locx3 = 84;
wliu88 0:8a02ac09eae0 154 locy3 = 119;
wliu88 0:8a02ac09eae0 155 currx = 79;
wliu88 0:8a02ac09eae0 156 curry = 123;
wliu88 0:8a02ac09eae0 157 break;
wliu88 0:8a02ac09eae0 158 default:
wliu88 0:8a02ac09eae0 159 //arrow has not been released/dead
wliu88 0:8a02ac09eae0 160 }
wliu88 0:8a02ac09eae0 161 if(type != -1){
wliu88 0:8a02ac09eae0 162 uLCD2.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF);
wliu88 0:8a02ac09eae0 163 }
wliu88 0:8a02ac09eae0 164 }
wliu88 0:8a02ac09eae0 165 }
wliu88 0:8a02ac09eae0 166
wliu88 0:8a02ac09eae0 167 int update(int screenNum){
wliu88 0:8a02ac09eae0 168 switch(screenNum){
wliu88 0:8a02ac09eae0 169 case 0:
wliu88 0:8a02ac09eae0 170 if(type != -1){
wliu88 0:8a02ac09eae0 171 uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 172 locy1 -= 9;
wliu88 0:8a02ac09eae0 173 locy2 -= 9;
wliu88 0:8a02ac09eae0 174 locy3 -= 9;
wliu88 0:8a02ac09eae0 175 //currx -= 8;
wliu88 0:8a02ac09eae0 176 curry -= 9;
wliu88 0:8a02ac09eae0 177 uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
wliu88 0:8a02ac09eae0 178 if(curry <= 5){
wliu88 0:8a02ac09eae0 179 uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 180 active = 0;
wliu88 0:8a02ac09eae0 181 return 1;
wliu88 0:8a02ac09eae0 182 }
wliu88 0:8a02ac09eae0 183 else{
wliu88 0:8a02ac09eae0 184 return 0;
wliu88 0:8a02ac09eae0 185 }
wliu88 0:8a02ac09eae0 186 }
wliu88 0:8a02ac09eae0 187 else{return 1;}
wliu88 0:8a02ac09eae0 188 break;
wliu88 0:8a02ac09eae0 189 case 1:
wliu88 0:8a02ac09eae0 190 if(type != -1){
wliu88 0:8a02ac09eae0 191 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 192 locy1 -= 9;
wliu88 0:8a02ac09eae0 193 locy2 -= 9;
wliu88 0:8a02ac09eae0 194 locy3 -= 9;
wliu88 0:8a02ac09eae0 195 //currx -= 8;
wliu88 0:8a02ac09eae0 196 curry -= 9;
wliu88 0:8a02ac09eae0 197 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
wliu88 0:8a02ac09eae0 198 if(curry <= 5){
wliu88 0:8a02ac09eae0 199 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 200 active = 0;
wliu88 0:8a02ac09eae0 201 return 1;
wliu88 0:8a02ac09eae0 202 }
wliu88 0:8a02ac09eae0 203 else{
wliu88 0:8a02ac09eae0 204 return 0;
wliu88 0:8a02ac09eae0 205 }
wliu88 0:8a02ac09eae0 206 }
wliu88 0:8a02ac09eae0 207 else{return 1;}
wliu88 0:8a02ac09eae0 208 break;
wliu88 0:8a02ac09eae0 209 default:
wliu88 0:8a02ac09eae0 210 if(type != -1){
wliu88 0:8a02ac09eae0 211 uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 212 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 213 locy1 -= 9;
wliu88 0:8a02ac09eae0 214 locy2 -= 9;
wliu88 0:8a02ac09eae0 215 locy3 -= 9;
wliu88 0:8a02ac09eae0 216 //currx -= 8;
wliu88 0:8a02ac09eae0 217 curry -= 9;
wliu88 0:8a02ac09eae0 218 uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
wliu88 0:8a02ac09eae0 219 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
wliu88 0:8a02ac09eae0 220 if(curry <= 5){
wliu88 0:8a02ac09eae0 221 uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 222 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 223 active = 0;
wliu88 0:8a02ac09eae0 224 return 1;
wliu88 0:8a02ac09eae0 225 }
wliu88 0:8a02ac09eae0 226 else{
wliu88 0:8a02ac09eae0 227 return 0;
wliu88 0:8a02ac09eae0 228 }
wliu88 0:8a02ac09eae0 229 }
wliu88 0:8a02ac09eae0 230 else{return 1;}
wliu88 0:8a02ac09eae0 231 }
wliu88 0:8a02ac09eae0 232 }
wliu88 0:8a02ac09eae0 233
wliu88 0:8a02ac09eae0 234 int update2(){
wliu88 0:8a02ac09eae0 235 if(type != -1){
wliu88 0:8a02ac09eae0 236 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 237 locy1 -= 9;
wliu88 0:8a02ac09eae0 238 locy2 -= 9;
wliu88 0:8a02ac09eae0 239 locy3 -= 9;
wliu88 0:8a02ac09eae0 240 //currx -= 8;
wliu88 0:8a02ac09eae0 241 curry -= 9;
wliu88 0:8a02ac09eae0 242 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
wliu88 0:8a02ac09eae0 243 if(curry <= 5){
wliu88 0:8a02ac09eae0 244 uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
wliu88 0:8a02ac09eae0 245 active = 0;
wliu88 0:8a02ac09eae0 246 return 1;
wliu88 0:8a02ac09eae0 247 }
wliu88 0:8a02ac09eae0 248 else{
wliu88 0:8a02ac09eae0 249 return 0;
wliu88 0:8a02ac09eae0 250 }
wliu88 0:8a02ac09eae0 251 }
wliu88 0:8a02ac09eae0 252 else{return 1;}
wliu88 0:8a02ac09eae0 253 }
wliu88 0:8a02ac09eae0 254 };
wliu88 0:8a02ac09eae0 255
wliu88 0:8a02ac09eae0 256 #endif