Kamikaze Race. Bin Mohd Kamaludin. 200876993.
Dependencies: el14hzbm_Final_Project mbed
Fork of el14hzbm_FinalProject by
main.cpp@3:c2227b3e2f0c, 2018-02-20 (annotated)
- Committer:
- Zafranhernandez
- Date:
- Tue Feb 20 11:56:52 2018 +0000
- Revision:
- 3:c2227b3e2f0c
- Parent:
- 1:58b4f9dda460
hah
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Zafranhernandez | 1:58b4f9dda460 | 1 | /** |
Zafranhernandez | 1:58b4f9dda460 | 2 | @file main.cpp |
Zafranhernandez | 1:58b4f9dda460 | 3 | @brief Program implementation |
Zafranhernandez | 1:58b4f9dda460 | 4 | */ |
Zafranhernandez | 1:58b4f9dda460 | 5 | |
Zafranhernandez | 1:58b4f9dda460 | 6 | #include "main.h" |
Zafranhernandez | 0:211360300ec1 | 7 | |
Zafranhernandez | 0:211360300ec1 | 8 | int main() |
Zafranhernandez | 0:211360300ec1 | 9 | { |
Zafranhernandez | 1:58b4f9dda460 | 10 | lcd.init(); //initialize the lcd |
Zafranhernandez | 1:58b4f9dda460 | 11 | initArray(); //fill array with sine sample |
Zafranhernandez | 1:58b4f9dda460 | 12 | button.rise(&button_isr); //will read the rise edge when button is pressed |
Zafranhernandez | 1:58b4f9dda460 | 13 | button.mode(PullDown); //external button is set as PullDown |
Zafranhernandez | 0:211360300ec1 | 14 | |
Zafranhernandez | 0:211360300ec1 | 15 | while(1) { |
Zafranhernandez | 1:58b4f9dda460 | 16 | |
Zafranhernandez | 1:58b4f9dda460 | 17 | intro(); //state 0 - introduction interface |
Zafranhernandez | 1:58b4f9dda460 | 18 | firstView(); //state 1 - main menu interface |
Zafranhernandez | 1:58b4f9dda460 | 19 | gameView(); //state 2 - game interface |
Zafranhernandez | 1:58b4f9dda460 | 20 | optionView(); //state 3 - option interface |
Zafranhernandez | 1:58b4f9dda460 | 21 | instructionView(); //state 4 - how to play interface |
Zafranhernandez | 1:58b4f9dda460 | 22 | brightnessView(); //state 5 - set up brightness interface |
Zafranhernandez | 1:58b4f9dda460 | 23 | finishView(g_score); //state 6 - final score interface |
Zafranhernandez | 1:58b4f9dda460 | 24 | } |
Zafranhernandez | 1:58b4f9dda460 | 25 | } |
Zafranhernandez | 3:c2227b3e2f0c | 26 | |
Zafranhernandez | 1:58b4f9dda460 | 27 | void intro() //state 0 - introduction interface |
Zafranhernandez | 1:58b4f9dda460 | 28 | { |
Zafranhernandez | 1:58b4f9dda460 | 29 | if(state==0) { |
Zafranhernandez | 0:211360300ec1 | 30 | |
Zafranhernandez | 1:58b4f9dda460 | 31 | for(int k=90; k>5; k--) { |
Zafranhernandez | 1:58b4f9dda460 | 32 | lcd.printString("KAMIKAZE",k,1); //display game title in left moving motion |
Zafranhernandez | 1:58b4f9dda460 | 33 | lcd.printString("RACE",k+12,2); |
Zafranhernandez | 1:58b4f9dda460 | 34 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 35 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 36 | lcd.clear(); |
Zafranhernandez | 1:58b4f9dda460 | 37 | |
Zafranhernandez | 1:58b4f9dda460 | 38 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 39 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 40 | state=1; |
Zafranhernandez | 1:58b4f9dda460 | 41 | break; |
Zafranhernandez | 1:58b4f9dda460 | 42 | } |
Zafranhernandez | 1:58b4f9dda460 | 43 | } |
Zafranhernandez | 1:58b4f9dda460 | 44 | state=1; |
Zafranhernandez | 0:211360300ec1 | 45 | } |
Zafranhernandez | 0:211360300ec1 | 46 | } |
Zafranhernandez | 0:211360300ec1 | 47 | |
Zafranhernandez | 1:58b4f9dda460 | 48 | void firstView() //state 1 - main menu interface |
Zafranhernandez | 0:211360300ec1 | 49 | { |
Zafranhernandez | 1:58b4f9dda460 | 50 | if(state==1) { |
Zafranhernandez | 0:211360300ec1 | 51 | pointer_x=20; |
Zafranhernandez | 1:58b4f9dda460 | 52 | pointer_y=31; |
Zafranhernandez | 1:58b4f9dda460 | 53 | |
Zafranhernandez | 0:211360300ec1 | 54 | while(loop==0) { |
Zafranhernandez | 1:58b4f9dda460 | 55 | sleepTimer.start(); // start timer |
Zafranhernandez | 1:58b4f9dda460 | 56 | |
Zafranhernandez | 1:58b4f9dda460 | 57 | if(sleepTimer.read()<15) { //display all the main menu interface |
Zafranhernandez | 1:58b4f9dda460 | 58 | lcd.printString("KAMIKAZE",5,1); |
Zafranhernandez | 1:58b4f9dda460 | 59 | lcd.printString("RACE",17,2); |
Zafranhernandez | 1:58b4f9dda460 | 60 | lcd.drawLine(58,46,58,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 61 | lcd.drawLine(67,46,67,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 62 | lcd.drawLine(76,46,76,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 63 | lcd.drawCar(60,10,1); |
Zafranhernandez | 1:58b4f9dda460 | 64 | lcd.drawCar(60,25,1); |
Zafranhernandez | 1:58b4f9dda460 | 65 | lcd.drawCar(69,23,1); |
Zafranhernandez | 1:58b4f9dda460 | 66 | lcd.printString("Start",14,4); |
Zafranhernandez | 1:58b4f9dda460 | 67 | lcd.printString("Option",14,5); |
Zafranhernandez | 1:58b4f9dda460 | 68 | firstViewPointer(); |
Zafranhernandez | 1:58b4f9dda460 | 69 | lcd.drawCar(5,pointer_y,1); |
Zafranhernandez | 1:58b4f9dda460 | 70 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 71 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 72 | lcd.clear(); |
Zafranhernandez | 1:58b4f9dda460 | 73 | |
Zafranhernandez | 1:58b4f9dda460 | 74 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 75 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 76 | loop=1; |
Zafranhernandez | 1:58b4f9dda460 | 77 | |
Zafranhernandez | 1:58b4f9dda460 | 78 | if(pointer_y==31) { |
Zafranhernandez | 1:58b4f9dda460 | 79 | state=2; //go to game state |
Zafranhernandez | 1:58b4f9dda460 | 80 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 81 | state=3; //go to option state |
Zafranhernandez | 1:58b4f9dda460 | 82 | } |
Zafranhernandez | 0:211360300ec1 | 83 | } |
Zafranhernandez | 1:58b4f9dda460 | 84 | } else { //go to sleep mode after 15 second has passed |
Zafranhernandez | 1:58b4f9dda460 | 85 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 86 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 87 | SleepView(); |
Zafranhernandez | 0:211360300ec1 | 88 | } |
Zafranhernandez | 0:211360300ec1 | 89 | } |
Zafranhernandez | 0:211360300ec1 | 90 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 91 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 92 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 0:211360300ec1 | 93 | } |
Zafranhernandez | 0:211360300ec1 | 94 | } |
Zafranhernandez | 0:211360300ec1 | 95 | |
Zafranhernandez | 1:58b4f9dda460 | 96 | void gameView() //state 2 - game interface |
Zafranhernandez | 0:211360300ec1 | 97 | { |
Zafranhernandez | 1:58b4f9dda460 | 98 | if(state==2) { |
Zafranhernandez | 0:211360300ec1 | 99 | |
Zafranhernandez | 1:58b4f9dda460 | 100 | initialGameInterface(); //function to initialize the game with countdown timer. |
Zafranhernandez | 1:58b4f9dda460 | 101 | initGameVar(); //function to initiate all variable used in the game |
Zafranhernandez | 0:211360300ec1 | 102 | |
Zafranhernandez | 1:58b4f9dda460 | 103 | while(g_crash==0) { //0 - crash not occur |
Zafranhernandez | 0:211360300ec1 | 104 | |
Zafranhernandez | 0:211360300ec1 | 105 | for(int i=1; i<=g_level*20; i++) { |
Zafranhernandez | 1:58b4f9dda460 | 106 | carValue[i]=9*((rand()%6)+1)-5; //generate random position for all vehicle on the road |
Zafranhernandez | 0:211360300ec1 | 107 | } |
Zafranhernandez | 0:211360300ec1 | 108 | |
Zafranhernandez | 0:211360300ec1 | 109 | for(int y_move=-5; y_move<100000; y_move++) { |
Zafranhernandez | 0:211360300ec1 | 110 | |
Zafranhernandez | 1:58b4f9dda460 | 111 | if(game==PLAY) { //when game is played |
Zafranhernandez | 0:211360300ec1 | 112 | crash(carValue,y_move,g_score,g_level,car_x,car_y,delay); //function to check whether crash occur |
Zafranhernandez | 1:58b4f9dda460 | 113 | playermovement(g_level); //function to control the player's car movement |
Zafranhernandez | 0:211360300ec1 | 114 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 115 | checkLastCar(g_level); //function to check when will the last last car go out from the screen to finish level |
Zafranhernandez | 3:c2227b3e2f0c | 116 | |
Zafranhernandez | 3:c2227b3e2f0c | 117 | if((y_move-(lastCar))>40) { |
Zafranhernandez | 1:58b4f9dda460 | 118 | finishLevel(g_level); //finish level when last car has passed through |
Zafranhernandez | 0:211360300ec1 | 119 | break; |
Zafranhernandez | 0:211360300ec1 | 120 | } |
Zafranhernandez | 0:211360300ec1 | 121 | if(g_crash==1) { |
Zafranhernandez | 0:211360300ec1 | 122 | crashsound(); //play sound when crush happened |
Zafranhernandez | 0:211360300ec1 | 123 | wait(2); //delay to give time for new game |
Zafranhernandez | 0:211360300ec1 | 124 | |
Zafranhernandez | 0:211360300ec1 | 125 | if(g_liveleft<=1) { //check if live is zero after crash occured |
Zafranhernandez | 0:211360300ec1 | 126 | lcd.clear(); // if zero, game stop |
Zafranhernandez | 0:211360300ec1 | 127 | break; |
Zafranhernandez | 1:58b4f9dda460 | 128 | } else { //if still has life |
Zafranhernandez | 1:58b4f9dda460 | 129 | g_crash=0; //continue the game |
Zafranhernandez | 1:58b4f9dda460 | 130 | g_liveleft=g_liveleft-1; //reduce the life |
Zafranhernandez | 1:58b4f9dda460 | 131 | g_level=g_level-1; //start at same level when crash occur |
Zafranhernandez | 1:58b4f9dda460 | 132 | car_x=22; //return the car back to initial position |
Zafranhernandez | 0:211360300ec1 | 133 | car_y=38; |
Zafranhernandez | 0:211360300ec1 | 134 | break; |
Zafranhernandez | 0:211360300ec1 | 135 | } |
Zafranhernandez | 0:211360300ec1 | 136 | } |
Zafranhernandez | 0:211360300ec1 | 137 | lcd.clear(); |
Zafranhernandez | 0:211360300ec1 | 138 | g_score=g_score+1; //increase the score by 1 after every loop |
Zafranhernandez | 1:58b4f9dda460 | 139 | } else { //when game is paused |
Zafranhernandez | 1:58b4f9dda460 | 140 | y_move=y_move-1; //fix y_move to make the vehicle static |
Zafranhernandez | 3:c2227b3e2f0c | 141 | game_interface(g_score,g_level,g_liveleft); |
Zafranhernandez | 1:58b4f9dda460 | 142 | lcd.printString("Paused",15,2); //display pause on the screen |
Zafranhernandez | 0:211360300ec1 | 143 | lcd.refresh(); |
Zafranhernandez | 0:211360300ec1 | 144 | } |
Zafranhernandez | 1:58b4f9dda460 | 145 | if (g_button_flag==1) { //press button to paused/play the game. |
Zafranhernandez | 0:211360300ec1 | 146 | g_button_flag=0; |
Zafranhernandez | 0:211360300ec1 | 147 | pausesound(); |
Zafranhernandez | 0:211360300ec1 | 148 | wait(0.1); |
Zafranhernandez | 0:211360300ec1 | 149 | if(game == PLAY) { |
Zafranhernandez | 0:211360300ec1 | 150 | game = PAUSE; |
Zafranhernandez | 0:211360300ec1 | 151 | } else { |
Zafranhernandez | 0:211360300ec1 | 152 | game=PLAY; |
Zafranhernandez | 0:211360300ec1 | 153 | } |
Zafranhernandez | 0:211360300ec1 | 154 | } |
Zafranhernandez | 0:211360300ec1 | 155 | } |
Zafranhernandez | 0:211360300ec1 | 156 | g_level=g_level+1; |
Zafranhernandez | 3:c2227b3e2f0c | 157 | } //when the game finished, move to finish View(display high score) |
Zafranhernandez | 1:58b4f9dda460 | 158 | state=6; |
Zafranhernandez | 1:58b4f9dda460 | 159 | finishView(g_score); |
Zafranhernandez | 1:58b4f9dda460 | 160 | state=0; //goes back to main menu |
Zafranhernandez | 1:58b4f9dda460 | 161 | } |
Zafranhernandez | 1:58b4f9dda460 | 162 | } |
Zafranhernandez | 1:58b4f9dda460 | 163 | |
Zafranhernandez | 1:58b4f9dda460 | 164 | void optionView() //state 3 - option interface |
Zafranhernandez | 1:58b4f9dda460 | 165 | { |
Zafranhernandez | 1:58b4f9dda460 | 166 | if(state==3) { |
Zafranhernandez | 1:58b4f9dda460 | 167 | pointer_x=5; |
Zafranhernandez | 1:58b4f9dda460 | 168 | pointer_y=7; |
Zafranhernandez | 3:c2227b3e2f0c | 169 | |
Zafranhernandez | 1:58b4f9dda460 | 170 | while(loop==0) { |
Zafranhernandez | 1:58b4f9dda460 | 171 | sleepTimer.start(); // start timer |
Zafranhernandez | 3:c2227b3e2f0c | 172 | |
Zafranhernandez | 1:58b4f9dda460 | 173 | if(sleepTimer.read()<15) { |
Zafranhernandez | 1:58b4f9dda460 | 174 | lcd.printString("Instruction",13,1); |
Zafranhernandez | 1:58b4f9dda460 | 175 | lcd.printString("Brightness",13,2); |
Zafranhernandez | 1:58b4f9dda460 | 176 | lcd.printString("Achievement",13,3); |
Zafranhernandez | 1:58b4f9dda460 | 177 | lcd.printString("Back",13,4); |
Zafranhernandez | 1:58b4f9dda460 | 178 | optionPointer(); |
Zafranhernandez | 1:58b4f9dda460 | 179 | lcd.drawCar(4,pointer_y,1); |
Zafranhernandez | 1:58b4f9dda460 | 180 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 181 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 182 | lcd.clear(); |
Zafranhernandez | 3:c2227b3e2f0c | 183 | |
Zafranhernandez | 1:58b4f9dda460 | 184 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 185 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 186 | loop=1; |
Zafranhernandez | 3:c2227b3e2f0c | 187 | |
Zafranhernandez | 1:58b4f9dda460 | 188 | if(pointer_y==7) { |
Zafranhernandez | 1:58b4f9dda460 | 189 | state=4;//go to instruction |
Zafranhernandez | 1:58b4f9dda460 | 190 | } else if(pointer_y==15) { |
Zafranhernandez | 1:58b4f9dda460 | 191 | state=5;//go to brightness |
Zafranhernandez | 1:58b4f9dda460 | 192 | } else if(pointer_y==31) { |
Zafranhernandez | 1:58b4f9dda460 | 193 | state=1;//go back |
Zafranhernandez | 1:58b4f9dda460 | 194 | } else { //pointer====23 |
Zafranhernandez | 1:58b4f9dda460 | 195 | state=6;//go to achievement |
Zafranhernandez | 1:58b4f9dda460 | 196 | } |
Zafranhernandez | 1:58b4f9dda460 | 197 | } |
Zafranhernandez | 1:58b4f9dda460 | 198 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 199 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 200 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 201 | SleepView(); |
Zafranhernandez | 1:58b4f9dda460 | 202 | } |
Zafranhernandez | 0:211360300ec1 | 203 | } |
Zafranhernandez | 1:58b4f9dda460 | 204 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 205 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 206 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 0:211360300ec1 | 207 | } |
Zafranhernandez | 0:211360300ec1 | 208 | } |
Zafranhernandez | 0:211360300ec1 | 209 | |
Zafranhernandez | 1:58b4f9dda460 | 210 | void instructionView() //state 4 - how to play interface |
Zafranhernandez | 1:58b4f9dda460 | 211 | { |
Zafranhernandez | 1:58b4f9dda460 | 212 | if(state==4) { |
Zafranhernandez | 3:c2227b3e2f0c | 213 | |
Zafranhernandez | 1:58b4f9dda460 | 214 | while(loop==0) { |
Zafranhernandez | 1:58b4f9dda460 | 215 | sleepTimer.start(); // start timer |
Zafranhernandez | 3:c2227b3e2f0c | 216 | |
Zafranhernandez | 1:58b4f9dda460 | 217 | if(sleepTimer.read()<15) { |
Zafranhernandez | 1:58b4f9dda460 | 218 | lcd.printString("Make your way",0,0); //explain how to play the game |
Zafranhernandez | 1:58b4f9dda460 | 219 | lcd.printString("through the",0,1); |
Zafranhernandez | 1:58b4f9dda460 | 220 | lcd.printString("traffic by ",0,2); |
Zafranhernandez | 1:58b4f9dda460 | 221 | lcd.printString("avoiding all",0,3); |
Zafranhernandez | 1:58b4f9dda460 | 222 | lcd.printString("vehicles on",0,4); |
Zafranhernandez | 1:58b4f9dda460 | 223 | lcd.printString("the highway.",0,5); |
Zafranhernandez | 1:58b4f9dda460 | 224 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 225 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 226 | lcd.clear(); |
Zafranhernandez | 3:c2227b3e2f0c | 227 | |
Zafranhernandez | 1:58b4f9dda460 | 228 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 229 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 230 | loop=1; |
Zafranhernandez | 1:58b4f9dda460 | 231 | state=9; |
Zafranhernandez | 1:58b4f9dda460 | 232 | } |
Zafranhernandez | 1:58b4f9dda460 | 233 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 234 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 235 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 236 | SleepView(); |
Zafranhernandez | 1:58b4f9dda460 | 237 | } |
Zafranhernandez | 1:58b4f9dda460 | 238 | } |
Zafranhernandez | 1:58b4f9dda460 | 239 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 240 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 241 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 242 | } |
Zafranhernandez | 1:58b4f9dda460 | 243 | if(state==9) { |
Zafranhernandez | 3:c2227b3e2f0c | 244 | |
Zafranhernandez | 1:58b4f9dda460 | 245 | while(loop==0) { |
Zafranhernandez | 1:58b4f9dda460 | 246 | sleepTimer.start(); // start timer |
Zafranhernandez | 3:c2227b3e2f0c | 247 | |
Zafranhernandez | 1:58b4f9dda460 | 248 | if(sleepTimer.read()<15) { |
Zafranhernandez | 1:58b4f9dda460 | 249 | lcd.printString("You have ",0,0); |
Zafranhernandez | 1:58b4f9dda460 | 250 | lcd.printString("three lives",0,1); |
Zafranhernandez | 1:58b4f9dda460 | 251 | lcd.printString("at the ",0,2); |
Zafranhernandez | 1:58b4f9dda460 | 252 | lcd.printString("start of",0,3); |
Zafranhernandez | 1:58b4f9dda460 | 253 | lcd.printString("the game.",0,4); |
Zafranhernandez | 1:58b4f9dda460 | 254 | lcd.printString("Good Luck!!!",0,5); |
Zafranhernandez | 1:58b4f9dda460 | 255 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 256 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 257 | lcd.clear(); |
Zafranhernandez | 3:c2227b3e2f0c | 258 | |
Zafranhernandez | 1:58b4f9dda460 | 259 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 260 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 261 | loop=1; |
Zafranhernandez | 1:58b4f9dda460 | 262 | state=3; |
Zafranhernandez | 1:58b4f9dda460 | 263 | } |
Zafranhernandez | 1:58b4f9dda460 | 264 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 265 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 266 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 267 | SleepView(); |
Zafranhernandez | 1:58b4f9dda460 | 268 | } |
Zafranhernandez | 1:58b4f9dda460 | 269 | } |
Zafranhernandez | 1:58b4f9dda460 | 270 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 271 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 272 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 273 | } |
Zafranhernandez | 1:58b4f9dda460 | 274 | } |
Zafranhernandez | 1:58b4f9dda460 | 275 | |
Zafranhernandez | 1:58b4f9dda460 | 276 | void brightnessView() //state 5 - set up brightness interface |
Zafranhernandez | 0:211360300ec1 | 277 | { |
Zafranhernandez | 1:58b4f9dda460 | 278 | if(state==5) { |
Zafranhernandez | 1:58b4f9dda460 | 279 | brightness_adjuster=5; |
Zafranhernandez | 3:c2227b3e2f0c | 280 | |
Zafranhernandez | 1:58b4f9dda460 | 281 | while(loop==0) { |
Zafranhernandez | 1:58b4f9dda460 | 282 | sleepTimer.start(); // start timer |
Zafranhernandez | 3:c2227b3e2f0c | 283 | |
Zafranhernandez | 1:58b4f9dda460 | 284 | if(sleepTimer.read()<15) { |
Zafranhernandez | 1:58b4f9dda460 | 285 | brightnessController(); |
Zafranhernandez | 1:58b4f9dda460 | 286 | lcd.printString("Adjust",25,1); |
Zafranhernandez | 1:58b4f9dda460 | 287 | lcd.printString("Brightness",13,2); |
Zafranhernandez | 1:58b4f9dda460 | 288 | lcd.printString("+",78,4); |
Zafranhernandez | 1:58b4f9dda460 | 289 | lcd.printString("-",2,4); |
Zafranhernandez | 1:58b4f9dda460 | 290 | lcd.setBrightness(brightness_adjuster/10); |
Zafranhernandez | 1:58b4f9dda460 | 291 | lcd.drawRect(1,27,brightness_adjuster*8,4,1); |
Zafranhernandez | 1:58b4f9dda460 | 292 | lcd.drawRect(1,27,81,4,0); |
Zafranhernandez | 1:58b4f9dda460 | 293 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 294 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 295 | lcd.clear(); |
Zafranhernandez | 3:c2227b3e2f0c | 296 | |
Zafranhernandez | 1:58b4f9dda460 | 297 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 298 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 299 | loop=1; |
Zafranhernandez | 1:58b4f9dda460 | 300 | state=3; |
Zafranhernandez | 1:58b4f9dda460 | 301 | } |
Zafranhernandez | 1:58b4f9dda460 | 302 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 303 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 304 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 305 | SleepView(); |
Zafranhernandez | 1:58b4f9dda460 | 306 | } |
Zafranhernandez | 1:58b4f9dda460 | 307 | } |
Zafranhernandez | 1:58b4f9dda460 | 308 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 309 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 310 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 311 | } |
Zafranhernandez | 1:58b4f9dda460 | 312 | } |
Zafranhernandez | 1:58b4f9dda460 | 313 | |
Zafranhernandez | 1:58b4f9dda460 | 314 | void finishView(int g_score) //state 6 - final score interface |
Zafranhernandez | 1:58b4f9dda460 | 315 | { |
Zafranhernandez | 1:58b4f9dda460 | 316 | if(state==6) { |
Zafranhernandez | 3:c2227b3e2f0c | 317 | |
Zafranhernandez | 1:58b4f9dda460 | 318 | while(loop==0) { |
Zafranhernandez | 1:58b4f9dda460 | 319 | sleepTimer.start(); // start timer |
Zafranhernandez | 3:c2227b3e2f0c | 320 | |
Zafranhernandez | 1:58b4f9dda460 | 321 | if(sleepTimer.read()<15) { |
Zafranhernandez | 1:58b4f9dda460 | 322 | char buffer[14]; |
Zafranhernandez | 1:58b4f9dda460 | 323 | int length = sprintf(buffer,"%2d",g_score/20); //display final score |
Zafranhernandez | 1:58b4f9dda460 | 324 | lcd.printString("Your",30,1); |
Zafranhernandez | 1:58b4f9dda460 | 325 | lcd.printString("Final Score",10,2); |
Zafranhernandez | 1:58b4f9dda460 | 326 | lcd.printString("Is",34,3); |
Zafranhernandez | 1:58b4f9dda460 | 327 | lcd.printString(buffer,34,4); |
Zafranhernandez | 1:58b4f9dda460 | 328 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 329 | wait(0.1); |
Zafranhernandez | 1:58b4f9dda460 | 330 | lcd.clear(); |
Zafranhernandez | 3:c2227b3e2f0c | 331 | |
Zafranhernandez | 1:58b4f9dda460 | 332 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 333 | g_button_flag=0; |
Zafranhernandez | 1:58b4f9dda460 | 334 | loop=1; |
Zafranhernandez | 1:58b4f9dda460 | 335 | state=3; |
Zafranhernandez | 1:58b4f9dda460 | 336 | } |
Zafranhernandez | 1:58b4f9dda460 | 337 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 338 | sleepTimer.stop(); // stop the timer |
Zafranhernandez | 1:58b4f9dda460 | 339 | sleepTimer.reset(); // reset to 0 |
Zafranhernandez | 1:58b4f9dda460 | 340 | SleepView(); |
Zafranhernandez | 1:58b4f9dda460 | 341 | } |
Zafranhernandez | 1:58b4f9dda460 | 342 | } |
Zafranhernandez | 1:58b4f9dda460 | 343 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 344 | } |
Zafranhernandez | 1:58b4f9dda460 | 345 | } |
Zafranhernandez | 1:58b4f9dda460 | 346 | |
Zafranhernandez | 1:58b4f9dda460 | 347 | void SleepView() //this function applies the sleep mode concept |
Zafranhernandez | 3:c2227b3e2f0c | 348 | { |
Zafranhernandez | 3:c2227b3e2f0c | 349 | //improve power effciency for the game system |
Zafranhernandez | 1:58b4f9dda460 | 350 | while(loop==0) { //expand the battery lifetime. |
Zafranhernandez | 1:58b4f9dda460 | 351 | lcd.turnOff(); //also turn off the lcd scrren when not in used |
Zafranhernandez | 3:c2227b3e2f0c | 352 | sleep(); |
Zafranhernandez | 3:c2227b3e2f0c | 353 | |
Zafranhernandez | 1:58b4f9dda460 | 354 | if(g_button_flag==1) { |
Zafranhernandez | 1:58b4f9dda460 | 355 | g_button_flag=0; //if button pressed, turn on the screen back. |
Zafranhernandez | 1:58b4f9dda460 | 356 | lcd.init(); |
Zafranhernandez | 1:58b4f9dda460 | 357 | loop=1; |
Zafranhernandez | 1:58b4f9dda460 | 358 | } |
Zafranhernandez | 1:58b4f9dda460 | 359 | } |
Zafranhernandez | 1:58b4f9dda460 | 360 | loop=0; |
Zafranhernandez | 1:58b4f9dda460 | 361 | } |
Zafranhernandez | 1:58b4f9dda460 | 362 | |
Zafranhernandez | 1:58b4f9dda460 | 363 | |
Zafranhernandez | 1:58b4f9dda460 | 364 | |
Zafranhernandez | 1:58b4f9dda460 | 365 | void crash(int carValue[],int opponent_y,int g_score,int g_level,int k,int l,int delay) //function to check if crash occur |
Zafranhernandez | 1:58b4f9dda460 | 366 | { |
Zafranhernandez | 1:58b4f9dda460 | 367 | float carPixel[84][48]; //create array for vehicle on the road |
Zafranhernandez | 0:211360300ec1 | 368 | float enemyPixel[84][48]; |
Zafranhernandez | 0:211360300ec1 | 369 | |
Zafranhernandez | 0:211360300ec1 | 370 | lcd.clear(); |
Zafranhernandez | 0:211360300ec1 | 371 | lcd.drawCar(k,l,1); |
Zafranhernandez | 0:211360300ec1 | 372 | lcd.refresh(); |
Zafranhernandez | 3:c2227b3e2f0c | 373 | |
Zafranhernandez | 0:211360300ec1 | 374 | for(int i=0; i<=54; i++) { |
Zafranhernandez | 0:211360300ec1 | 375 | for(int j=0; j<=48; j++) { |
Zafranhernandez | 1:58b4f9dda460 | 376 | carPixel[i][j]=lcd.getPixel(i,j); //check player's car pixel |
Zafranhernandez | 0:211360300ec1 | 377 | } |
Zafranhernandez | 0:211360300ec1 | 378 | } |
Zafranhernandez | 0:211360300ec1 | 379 | lcd.clear(); |
Zafranhernandez | 0:211360300ec1 | 380 | |
Zafranhernandez | 0:211360300ec1 | 381 | for(int i=1; i<=(g_level*20); i++) { |
Zafranhernandez | 0:211360300ec1 | 382 | |
Zafranhernandez | 1:58b4f9dda460 | 383 | if (g_level>=9) { //for this part, it draw different type of vehicle for given road lane. |
Zafranhernandez | 3:c2227b3e2f0c | 384 | if (carValue[i]<10) { |
Zafranhernandez | 1:58b4f9dda460 | 385 | lcd.drawTruck(carValue[i],opponent_y-delay,1); //truck is drawn on most left lane |
Zafranhernandez | 1:58b4f9dda460 | 386 | } else if (carValue[i]<20) { |
Zafranhernandez | 1:58b4f9dda460 | 387 | lcd.drawVan(carValue[i],opponent_y-delay,1); //van is drawn second left lane |
Zafranhernandez | 1:58b4f9dda460 | 388 | } else if (carValue[i]<40) { |
Zafranhernandez | 1:58b4f9dda460 | 389 | lcd.drawCar(carValue[i],opponent_y-delay,1); //car is drawn on lane three and four |
Zafranhernandez | 1:58b4f9dda460 | 390 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 391 | lcd.drawCarReverse(carValue[i],opponent_y-delay,1); //car is drawn in opposite direction for opposite lane |
Zafranhernandez | 1:58b4f9dda460 | 392 | } |
Zafranhernandez | 0:211360300ec1 | 393 | if(i%3==0) { |
Zafranhernandez | 0:211360300ec1 | 394 | delay=delay+20; |
Zafranhernandez | 0:211360300ec1 | 395 | } |
Zafranhernandez | 1:58b4f9dda460 | 396 | } else if(g_level>=5) { //the step is repeat for different level |
Zafranhernandez | 1:58b4f9dda460 | 397 | if (carValue[i]<10) { //higher the level, more car will be on the road to make it more difficult |
Zafranhernandez | 1:58b4f9dda460 | 398 | lcd.drawTruck(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 399 | } else if (carValue[i]<20) { |
Zafranhernandez | 1:58b4f9dda460 | 400 | lcd.drawVan(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 401 | } else if (carValue[i]<40) { |
Zafranhernandez | 1:58b4f9dda460 | 402 | lcd.drawCar(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 403 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 404 | lcd.drawCarReverse(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 405 | } |
Zafranhernandez | 0:211360300ec1 | 406 | if(i%2==0) { |
Zafranhernandez | 0:211360300ec1 | 407 | delay=delay+20; |
Zafranhernandez | 0:211360300ec1 | 408 | } |
Zafranhernandez | 0:211360300ec1 | 409 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 410 | if (carValue[i]<10) { |
Zafranhernandez | 1:58b4f9dda460 | 411 | lcd.drawTruck(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 412 | } else if (carValue[i]<20) { |
Zafranhernandez | 1:58b4f9dda460 | 413 | lcd.drawVan(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 414 | } else if (carValue[i]<40) { |
Zafranhernandez | 1:58b4f9dda460 | 415 | lcd.drawCar(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 416 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 417 | lcd.drawCarReverse(carValue[i],opponent_y-delay,1); |
Zafranhernandez | 1:58b4f9dda460 | 418 | } |
Zafranhernandez | 0:211360300ec1 | 419 | delay=delay+20; |
Zafranhernandez | 0:211360300ec1 | 420 | } |
Zafranhernandez | 0:211360300ec1 | 421 | } |
Zafranhernandez | 0:211360300ec1 | 422 | lcd.refresh(); |
Zafranhernandez | 0:211360300ec1 | 423 | for(int i=0; i<=54; i++) { |
Zafranhernandez | 0:211360300ec1 | 424 | for(int j=0; j<=48; j++) { |
Zafranhernandez | 1:58b4f9dda460 | 425 | enemyPixel[i][j]=lcd.getPixel(i,j); //now, check the pixel for traffic's car |
Zafranhernandez | 0:211360300ec1 | 426 | } |
Zafranhernandez | 0:211360300ec1 | 427 | } |
Zafranhernandez | 0:211360300ec1 | 428 | for(int i=0; i<=54; i++) { |
Zafranhernandez | 0:211360300ec1 | 429 | for(int j=0; j<=48; j++) { |
Zafranhernandez | 1:58b4f9dda460 | 430 | if(enemyPixel[i][j]!=0 && carPixel[i][j]!=0) { //now, check if player's car pixel overlap with traffic's car pixel |
Zafranhernandez | 1:58b4f9dda460 | 431 | lcd.printString("!!CRASH!!",2,2); //if yes, print crash |
Zafranhernandez | 0:211360300ec1 | 432 | g_crash=1; |
Zafranhernandez | 0:211360300ec1 | 433 | } |
Zafranhernandez | 0:211360300ec1 | 434 | } |
Zafranhernandez | 0:211360300ec1 | 435 | } |
Zafranhernandez | 1:58b4f9dda460 | 436 | game_interface(g_score,g_level,g_liveleft); //put all the other displaying stuff to finish off the interface |
Zafranhernandez | 0:211360300ec1 | 437 | lcd.drawCar(k,l,1); |
Zafranhernandez | 0:211360300ec1 | 438 | lcd.refresh(); |
Zafranhernandez | 0:211360300ec1 | 439 | double ki=-((g_level)); |
Zafranhernandez | 1:58b4f9dda460 | 440 | duration=(0.02*exp(ki))+0.005; //use exponential decay equation to be used for speed control at increasing level |
Zafranhernandez | 3:c2227b3e2f0c | 441 | |
Zafranhernandez | 0:211360300ec1 | 442 | if(opponent_y%5==0) { |
Zafranhernandez | 0:211360300ec1 | 443 | gameplaysound(duration); |
Zafranhernandez | 0:211360300ec1 | 444 | } else { |
Zafranhernandez | 3:c2227b3e2f0c | 445 | wait(duration); |
Zafranhernandez | 0:211360300ec1 | 446 | } |
Zafranhernandez | 0:211360300ec1 | 447 | } |
Zafranhernandez | 0:211360300ec1 | 448 | |
Zafranhernandez | 1:58b4f9dda460 | 449 | void game_interface(int g_score,int g_level,int g_liveleft) //function to provide game interface during gameplay |
Zafranhernandez | 0:211360300ec1 | 450 | { |
Zafranhernandez | 0:211360300ec1 | 451 | score(61,2); |
Zafranhernandez | 0:211360300ec1 | 452 | level(61,18); |
Zafranhernandez | 0:211360300ec1 | 453 | char buffer[14]; |
Zafranhernandez | 1:58b4f9dda460 | 454 | int length = sprintf(buffer,"%2d",g_score/20); |
Zafranhernandez | 0:211360300ec1 | 455 | lcd.printString(buffer,62,1); |
Zafranhernandez | 0:211360300ec1 | 456 | int length1 = sprintf(buffer,"%2d",g_level); |
Zafranhernandez | 0:211360300ec1 | 457 | lcd.printString(buffer,62,3); |
Zafranhernandez | 0:211360300ec1 | 458 | live(g_liveleft); |
Zafranhernandez | 0:211360300ec1 | 459 | roadline(g_score); |
Zafranhernandez | 1:58b4f9dda460 | 460 | lcd.drawRect(59,33,g_level*2,4,1); |
Zafranhernandez | 1:58b4f9dda460 | 461 | lcd.drawRect(59,33,22,4,0); |
Zafranhernandez | 0:211360300ec1 | 462 | } |
Zafranhernandez | 0:211360300ec1 | 463 | |
Zafranhernandez | 1:58b4f9dda460 | 464 | void playermovement(int g_level) //function to control the player's car movement |
Zafranhernandez | 0:211360300ec1 | 465 | { |
Zafranhernandez | 3:c2227b3e2f0c | 466 | if (g_level>=3) { //at higher level, speed is faster, so give small scale movement to give better handling |
Zafranhernandez | 0:211360300ec1 | 467 | playerSpeed=1; |
Zafranhernandez | 1:58b4f9dda460 | 468 | } else if(g_level<3) { //at lower level, speed is slower, so high scale movemement is allowed. |
Zafranhernandez | 1:58b4f9dda460 | 469 | playerSpeed=2; |
Zafranhernandez | 0:211360300ec1 | 470 | } |
Zafranhernandez | 0:211360300ec1 | 471 | |
Zafranhernandez | 1:58b4f9dda460 | 472 | if(xPot>=0.7f) { //joystick movement control the screen is shown here |
Zafranhernandez | 0:211360300ec1 | 473 | if(car_x>-3 && car_x<49) { |
Zafranhernandez | 0:211360300ec1 | 474 | car_x=car_x+playerSpeed; |
Zafranhernandez | 0:211360300ec1 | 475 | } |
Zafranhernandez | 0:211360300ec1 | 476 | } |
Zafranhernandez | 0:211360300ec1 | 477 | if(xPot<=0.3f) { |
Zafranhernandez | 0:211360300ec1 | 478 | if(car_x>5 && car_x<57) { |
Zafranhernandez | 0:211360300ec1 | 479 | car_x=car_x-playerSpeed; |
Zafranhernandez | 0:211360300ec1 | 480 | } |
Zafranhernandez | 0:211360300ec1 | 481 | } |
Zafranhernandez | 0:211360300ec1 | 482 | if(yPot>0.7f) { |
Zafranhernandez | 0:211360300ec1 | 483 | if(car_y>5 && car_y<48) { |
Zafranhernandez | 0:211360300ec1 | 484 | car_y=car_y-playerSpeed; |
Zafranhernandez | 0:211360300ec1 | 485 | } |
Zafranhernandez | 0:211360300ec1 | 486 | } |
Zafranhernandez | 0:211360300ec1 | 487 | if(yPot<0.3f) { |
Zafranhernandez | 0:211360300ec1 | 488 | |
Zafranhernandez | 0:211360300ec1 | 489 | if(car_y>-3 && car_y<38) { |
Zafranhernandez | 0:211360300ec1 | 490 | car_y=car_y+playerSpeed; |
Zafranhernandez | 0:211360300ec1 | 491 | } |
Zafranhernandez | 0:211360300ec1 | 492 | } |
Zafranhernandez | 0:211360300ec1 | 493 | } |
Zafranhernandez | 0:211360300ec1 | 494 | |
Zafranhernandez | 1:58b4f9dda460 | 495 | void checkLastCar(int g_level) //check for last car will be on the screen |
Zafranhernandez | 3:c2227b3e2f0c | 496 | { |
Zafranhernandez | 3:c2227b3e2f0c | 497 | //needed in order to stop the for loop and finish the level |
Zafranhernandez | 3:c2227b3e2f0c | 498 | if(g_level>=9) { |
Zafranhernandez | 0:211360300ec1 | 499 | lastCar=g_level*33*4; |
Zafranhernandez | 0:211360300ec1 | 500 | } else if(g_level>=5) { |
Zafranhernandez | 0:211360300ec1 | 501 | lastCar=g_level*50*4; |
Zafranhernandez | 0:211360300ec1 | 502 | } else { |
Zafranhernandez | 0:211360300ec1 | 503 | lastCar=g_level*100*4; |
Zafranhernandez | 0:211360300ec1 | 504 | } |
Zafranhernandez | 0:211360300ec1 | 505 | } |
Zafranhernandez | 0:211360300ec1 | 506 | |
Zafranhernandez | 1:58b4f9dda460 | 507 | void finishLevel(int g_level) //display the high score screen when the game is finish |
Zafranhernandez | 0:211360300ec1 | 508 | { |
Zafranhernandez | 0:211360300ec1 | 509 | char buffer[48]; |
Zafranhernandez | 0:211360300ec1 | 510 | int length = sprintf(buffer,"%2d",g_level); |
Zafranhernandez | 0:211360300ec1 | 511 | lcd.printString(buffer,24,3); |
Zafranhernandez | 0:211360300ec1 | 512 | lcd.printString("Finish",10,1); |
Zafranhernandez | 0:211360300ec1 | 513 | lcd.printString("Level",14,2); |
Zafranhernandez | 0:211360300ec1 | 514 | lcd.refresh(); |
Zafranhernandez | 0:211360300ec1 | 515 | wait(2); |
Zafranhernandez | 0:211360300ec1 | 516 | lcd.clear(); |
Zafranhernandez | 0:211360300ec1 | 517 | delay=0; |
Zafranhernandez | 0:211360300ec1 | 518 | car_x=22; |
Zafranhernandez | 0:211360300ec1 | 519 | car_y=38; |
Zafranhernandez | 0:211360300ec1 | 520 | } |
Zafranhernandez | 0:211360300ec1 | 521 | |
Zafranhernandez | 1:58b4f9dda460 | 522 | void initialGameInterface() //provide initial countdown before the game start |
Zafranhernandez | 0:211360300ec1 | 523 | { |
Zafranhernandez | 1:58b4f9dda460 | 524 | for(int countdown=5; countdown>=1; countdown--) { //countdown from 5-1 |
Zafranhernandez | 1:58b4f9dda460 | 525 | score(61,2); |
Zafranhernandez | 1:58b4f9dda460 | 526 | level(61,18); |
Zafranhernandez | 1:58b4f9dda460 | 527 | lcd.printString("0",68,1); |
Zafranhernandez | 1:58b4f9dda460 | 528 | lcd.printString("1",68,3); |
Zafranhernandez | 0:211360300ec1 | 529 | lcd.drawHeart(59,40,3,1); |
Zafranhernandez | 0:211360300ec1 | 530 | |
Zafranhernandez | 0:211360300ec1 | 531 | lcd.drawLine(0,47,0,0,1); |
Zafranhernandez | 0:211360300ec1 | 532 | lcd.drawLine(83,47,83,0,1); |
Zafranhernandez | 0:211360300ec1 | 533 | lcd.drawLine(83,0,0,0,1); |
Zafranhernandez | 0:211360300ec1 | 534 | lcd.drawLine(83,47,0,47,1); |
Zafranhernandez | 0:211360300ec1 | 535 | |
Zafranhernandez | 0:211360300ec1 | 536 | lcd.drawRect(59,33,22,4,1); |
Zafranhernandez | 0:211360300ec1 | 537 | lcd.printString("Game",15,1); |
Zafranhernandez | 0:211360300ec1 | 538 | lcd.printString("Start",14,2); |
Zafranhernandez | 0:211360300ec1 | 539 | lcd.printString("In",12,3); |
Zafranhernandez | 0:211360300ec1 | 540 | char buffer[14]; |
Zafranhernandez | 0:211360300ec1 | 541 | int length = sprintf(buffer,"%2d",countdown); |
Zafranhernandez | 0:211360300ec1 | 542 | lcd.printString(buffer,30,3); |
Zafranhernandez | 0:211360300ec1 | 543 | |
Zafranhernandez | 0:211360300ec1 | 544 | lcd.refresh(); |
Zafranhernandez | 0:211360300ec1 | 545 | wait(1); |
Zafranhernandez | 0:211360300ec1 | 546 | lcd.clear(); |
Zafranhernandez | 0:211360300ec1 | 547 | } |
Zafranhernandez | 0:211360300ec1 | 548 | } |
Zafranhernandez | 0:211360300ec1 | 549 | |
Zafranhernandez | 1:58b4f9dda460 | 550 | void initGameVar() //initiate every variable use in the game before the game start |
Zafranhernandez | 0:211360300ec1 | 551 | { |
Zafranhernandez | 1:58b4f9dda460 | 552 | g_crash=0; |
Zafranhernandez | 1:58b4f9dda460 | 553 | g_liveleft=3; |
Zafranhernandez | 1:58b4f9dda460 | 554 | g_level=1; |
Zafranhernandez | 1:58b4f9dda460 | 555 | g_score=0; |
Zafranhernandez | 1:58b4f9dda460 | 556 | car_x=22; |
Zafranhernandez | 1:58b4f9dda460 | 557 | car_y=38; |
Zafranhernandez | 1:58b4f9dda460 | 558 | } |
Zafranhernandez | 1:58b4f9dda460 | 559 | |
Zafranhernandez | 1:58b4f9dda460 | 560 | void firstViewPointer() //control the pointer on main menu |
Zafranhernandez | 1:58b4f9dda460 | 561 | { |
Zafranhernandez | 1:58b4f9dda460 | 562 | if(yPot>0.7f) { |
Zafranhernandez | 1:58b4f9dda460 | 563 | pointer_y=31; |
Zafranhernandez | 1:58b4f9dda460 | 564 | } |
Zafranhernandez | 1:58b4f9dda460 | 565 | if(yPot<0.3f) { |
Zafranhernandez | 1:58b4f9dda460 | 566 | pointer_y=39; |
Zafranhernandez | 0:211360300ec1 | 567 | } |
Zafranhernandez | 0:211360300ec1 | 568 | } |
Zafranhernandez | 0:211360300ec1 | 569 | |
Zafranhernandez | 1:58b4f9dda460 | 570 | void optionPointer() //control the pointer on option menu |
Zafranhernandez | 0:211360300ec1 | 571 | { |
Zafranhernandez | 0:211360300ec1 | 572 | if(yPot>0.7f) { |
Zafranhernandez | 1:58b4f9dda460 | 573 | if(pointer_y>11 && pointer_y<32) { |
Zafranhernandez | 0:211360300ec1 | 574 | pointer_y=pointer_y-8; |
Zafranhernandez | 0:211360300ec1 | 575 | } |
Zafranhernandez | 0:211360300ec1 | 576 | } |
Zafranhernandez | 0:211360300ec1 | 577 | if(yPot<0.3f) { |
Zafranhernandez | 1:58b4f9dda460 | 578 | if(pointer_y>5 && pointer_y<28) { |
Zafranhernandez | 0:211360300ec1 | 579 | pointer_y=pointer_y+8; |
Zafranhernandez | 0:211360300ec1 | 580 | } |
Zafranhernandez | 0:211360300ec1 | 581 | } |
Zafranhernandez | 0:211360300ec1 | 582 | } |
Zafranhernandez | 0:211360300ec1 | 583 | |
Zafranhernandez | 1:58b4f9dda460 | 584 | void brightnessController() //control the brightness by using joystick |
Zafranhernandez | 0:211360300ec1 | 585 | { |
Zafranhernandez | 1:58b4f9dda460 | 586 | if(xPot>0.7f) { |
Zafranhernandez | 0:211360300ec1 | 587 | if(brightness_adjuster>=0 && brightness_adjuster<=9) { |
Zafranhernandez | 0:211360300ec1 | 588 | brightness_adjuster=brightness_adjuster+1; |
Zafranhernandez | 0:211360300ec1 | 589 | } |
Zafranhernandez | 0:211360300ec1 | 590 | } |
Zafranhernandez | 1:58b4f9dda460 | 591 | if(xPot<0.3f) { |
Zafranhernandez | 0:211360300ec1 | 592 | if(brightness_adjuster>=1 && brightness_adjuster<=10) { |
Zafranhernandez | 0:211360300ec1 | 593 | brightness_adjuster=brightness_adjuster-1; |
Zafranhernandez | 0:211360300ec1 | 594 | } |
Zafranhernandez | 0:211360300ec1 | 595 | } |
Zafranhernandez | 0:211360300ec1 | 596 | } |
Zafranhernandez | 0:211360300ec1 | 597 | |
Zafranhernandez | 0:211360300ec1 | 598 | void initArray() |
Zafranhernandez | 0:211360300ec1 | 599 | { |
Zafranhernandez | 0:211360300ec1 | 600 | // create LUT - loop through array and calculate sine wave samples |
Zafranhernandez | 0:211360300ec1 | 601 | for (int i = 0; i < n ; i++) { |
Zafranhernandez | 0:211360300ec1 | 602 | y[i] = 60 + 60*sin(i*2*PI/n); |
Zafranhernandez | 0:211360300ec1 | 603 | } |
Zafranhernandez | 0:211360300ec1 | 604 | |
Zafranhernandez | 0:211360300ec1 | 605 | } |
Zafranhernandez | 0:211360300ec1 | 606 | |
Zafranhernandez | 0:211360300ec1 | 607 | void tone(float frequency,float duration) |
Zafranhernandez | 0:211360300ec1 | 608 | { |
Zafranhernandez | 1:58b4f9dda460 | 609 | green=1; //turn on LED |
Zafranhernandez | 0:211360300ec1 | 610 | |
Zafranhernandez | 0:211360300ec1 | 611 | if (frequency > 0) { // a frequency of 0 indicates no note played so only play a note if frequency is not 0 |
Zafranhernandez | 0:211360300ec1 | 612 | |
Zafranhernandez | 0:211360300ec1 | 613 | float dt = 1.0f/(frequency*n) - (1.34e-6 + 1e-6); // calculate time step - take into account DAC time and wait() offset |
Zafranhernandez | 0:211360300ec1 | 614 | |
Zafranhernandez | 0:211360300ec1 | 615 | noteTimer.start(); // start timer |
Zafranhernandez | 0:211360300ec1 | 616 | |
Zafranhernandez | 0:211360300ec1 | 617 | while(noteTimer.read() < duration) { // keep looping while timer less than duration |
Zafranhernandez | 0:211360300ec1 | 618 | |
Zafranhernandez | 0:211360300ec1 | 619 | for (int i = 0; i < n ; i++) { // loop through samples and output analog waveform |
Zafranhernandez | 0:211360300ec1 | 620 | buzzer = y[i]; |
Zafranhernandez | 0:211360300ec1 | 621 | wait(dt); // leave appropriate delay for frequency |
Zafranhernandez | 0:211360300ec1 | 622 | } |
Zafranhernandez | 0:211360300ec1 | 623 | } |
Zafranhernandez | 0:211360300ec1 | 624 | |
Zafranhernandez | 0:211360300ec1 | 625 | noteTimer.stop(); // stop the timer |
Zafranhernandez | 0:211360300ec1 | 626 | noteTimer.reset(); // reset to 0 |
Zafranhernandez | 0:211360300ec1 | 627 | |
Zafranhernandez | 0:211360300ec1 | 628 | } else { // if no note played, have a simple delay |
Zafranhernandez | 0:211360300ec1 | 629 | wait(duration); |
Zafranhernandez | 0:211360300ec1 | 630 | } |
Zafranhernandez | 0:211360300ec1 | 631 | |
Zafranhernandez | 1:58b4f9dda460 | 632 | green = 0; // turn off LEDs |
Zafranhernandez | 1:58b4f9dda460 | 633 | } |
Zafranhernandez | 1:58b4f9dda460 | 634 | |
Zafranhernandez | 1:58b4f9dda460 | 635 | void gameplaysound(float duration) |
Zafranhernandez | 1:58b4f9dda460 | 636 | { |
Zafranhernandez | 1:58b4f9dda460 | 637 | float noteArray[] = { |
Zafranhernandez | 1:58b4f9dda460 | 638 | // provide sound during the time game is played |
Zafranhernandez | 1:58b4f9dda460 | 639 | NOTE_G3, |
Zafranhernandez | 1:58b4f9dda460 | 640 | }; |
Zafranhernandez | 1:58b4f9dda460 | 641 | |
Zafranhernandez | 1:58b4f9dda460 | 642 | int notes = sizeof(noteArray)/sizeof(float); |
Zafranhernandez | 1:58b4f9dda460 | 643 | for(int i=0; i < notes; i++) { |
Zafranhernandez | 1:58b4f9dda460 | 644 | tone(noteArray[i],duration); |
Zafranhernandez | 1:58b4f9dda460 | 645 | |
Zafranhernandez | 1:58b4f9dda460 | 646 | } |
Zafranhernandez | 0:211360300ec1 | 647 | } |
Zafranhernandez | 0:211360300ec1 | 648 | |
Zafranhernandez | 0:211360300ec1 | 649 | void crashsound() |
Zafranhernandez | 0:211360300ec1 | 650 | { |
Zafranhernandez | 0:211360300ec1 | 651 | float noteArray[] = { |
Zafranhernandez | 0:211360300ec1 | 652 | // provide sound during the time game is played |
Zafranhernandez | 0:211360300ec1 | 653 | NOTE_G5, NOTE_F6,0,NOTE_F6,NOTE_F6,NOTE_E6,0,NOTE_D6,NOTE_C6,NOTE_G5,0,NOTE_E5,NOTE_C5 |
Zafranhernandez | 0:211360300ec1 | 654 | }; |
Zafranhernandez | 0:211360300ec1 | 655 | float noteDuration[] = { |
Zafranhernandez | 0:211360300ec1 | 656 | 4,4,4,4,4,4,4,4,4,4,4,4,4 |
Zafranhernandez | 0:211360300ec1 | 657 | }; |
Zafranhernandez | 0:211360300ec1 | 658 | int notes = sizeof(noteArray)/sizeof(float); |
Zafranhernandez | 0:211360300ec1 | 659 | for(int i=0; i < notes; i++) { |
Zafranhernandez | 0:211360300ec1 | 660 | tone(noteArray[i],60.0f/(BPM*noteDuration[i])); |
Zafranhernandez | 0:211360300ec1 | 661 | |
Zafranhernandez | 0:211360300ec1 | 662 | } |
Zafranhernandez | 0:211360300ec1 | 663 | } |
Zafranhernandez | 0:211360300ec1 | 664 | |
Zafranhernandez | 0:211360300ec1 | 665 | void pausesound() |
Zafranhernandez | 0:211360300ec1 | 666 | { |
Zafranhernandez | 0:211360300ec1 | 667 | float noteArray[] = { |
Zafranhernandez | 0:211360300ec1 | 668 | // provide sound during the time game is played |
Zafranhernandez | 0:211360300ec1 | 669 | NOTE_E6,NOTE_C6,NOTE_E6,NOTE_C6, |
Zafranhernandez | 0:211360300ec1 | 670 | }; |
Zafranhernandez | 0:211360300ec1 | 671 | float noteDuration[] = { |
Zafranhernandez | 0:211360300ec1 | 672 | 8,8,8,8 |
Zafranhernandez | 0:211360300ec1 | 673 | }; |
Zafranhernandez | 0:211360300ec1 | 674 | int notes = sizeof(noteArray)/sizeof(float); |
Zafranhernandez | 0:211360300ec1 | 675 | for(int i=0; i < notes; i++) { |
Zafranhernandez | 0:211360300ec1 | 676 | tone(noteArray[i],60.0f/(BPM*noteDuration[i])); |
Zafranhernandez | 0:211360300ec1 | 677 | |
Zafranhernandez | 0:211360300ec1 | 678 | } |
Zafranhernandez | 0:211360300ec1 | 679 | } |
Zafranhernandez | 0:211360300ec1 | 680 | |
Zafranhernandez | 1:58b4f9dda460 | 681 | void finishsound() |
Zafranhernandez | 1:58b4f9dda460 | 682 | { |
Zafranhernandez | 1:58b4f9dda460 | 683 | float noteArray[] = { |
Zafranhernandez | 1:58b4f9dda460 | 684 | // provide sound during the time game is played |
Zafranhernandez | 1:58b4f9dda460 | 685 | NOTE_E6,NOTE_C6,NOTE_E6,NOTE_C6, |
Zafranhernandez | 1:58b4f9dda460 | 686 | }; |
Zafranhernandez | 1:58b4f9dda460 | 687 | float noteDuration[] = { |
Zafranhernandez | 1:58b4f9dda460 | 688 | 8,8,8,8 |
Zafranhernandez | 1:58b4f9dda460 | 689 | }; |
Zafranhernandez | 1:58b4f9dda460 | 690 | int notes = sizeof(noteArray)/sizeof(float); |
Zafranhernandez | 1:58b4f9dda460 | 691 | for(int i=0; i < notes; i++) { |
Zafranhernandez | 1:58b4f9dda460 | 692 | tone(noteArray[i],60.0f/(BPM*noteDuration[i])); |
Zafranhernandez | 1:58b4f9dda460 | 693 | |
Zafranhernandez | 1:58b4f9dda460 | 694 | } |
Zafranhernandez | 1:58b4f9dda460 | 695 | } |
Zafranhernandez | 1:58b4f9dda460 | 696 | |
Zafranhernandez | 1:58b4f9dda460 | 697 | void live(int liveleft) //draw how many life left on the screen |
Zafranhernandez | 1:58b4f9dda460 | 698 | { |
Zafranhernandez | 1:58b4f9dda460 | 699 | lcd.drawHeart(59,40,liveleft,1); |
Zafranhernandez | 1:58b4f9dda460 | 700 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 701 | } |
Zafranhernandez | 1:58b4f9dda460 | 702 | |
Zafranhernandez | 1:58b4f9dda460 | 703 | void roadline(int moving) //draw the road line +border line on the screen |
Zafranhernandez | 3:c2227b3e2f0c | 704 | { |
Zafranhernandez | 3:c2227b3e2f0c | 705 | //road line |
Zafranhernandez | 1:58b4f9dda460 | 706 | lcd.drawLine(11,46,11,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 707 | lcd.drawLine(20,46,20,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 708 | lcd.drawLine(29,46,29,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 709 | lcd.drawLine(38,45,38,2,1); |
Zafranhernandez | 1:58b4f9dda460 | 710 | lcd.drawLine(47,46,47,2,2); |
Zafranhernandez | 3:c2227b3e2f0c | 711 | //border line |
Zafranhernandez | 1:58b4f9dda460 | 712 | lcd.drawLine(0,47,0,0,1); |
Zafranhernandez | 1:58b4f9dda460 | 713 | lcd.drawLine(83,47,83,0,1); |
Zafranhernandez | 1:58b4f9dda460 | 714 | lcd.drawLine(83,0,0,0,1); |
Zafranhernandez | 1:58b4f9dda460 | 715 | lcd.drawLine(83,47,0,47,1); |
Zafranhernandez | 1:58b4f9dda460 | 716 | |
Zafranhernandez | 1:58b4f9dda460 | 717 | if(moving%2!=0) { |
Zafranhernandez | 1:58b4f9dda460 | 718 | lcd.drawLine(2,46,2,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 719 | lcd.drawLine(56,46,56,2,2); |
Zafranhernandez | 1:58b4f9dda460 | 720 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 721 | } else { |
Zafranhernandez | 1:58b4f9dda460 | 722 | lcd.drawLine(2,45,2,1,2); |
Zafranhernandez | 1:58b4f9dda460 | 723 | lcd.drawLine(56,45,56,1,2); |
Zafranhernandez | 1:58b4f9dda460 | 724 | lcd.refresh(); |
Zafranhernandez | 1:58b4f9dda460 | 725 | } |
Zafranhernandez | 1:58b4f9dda460 | 726 | } |
Zafranhernandez | 3:c2227b3e2f0c | 727 | |
Zafranhernandez | 1:58b4f9dda460 | 728 | void score(int m,int my) //display the score text on the screen |
Zafranhernandez | 0:211360300ec1 | 729 | { |
Zafranhernandez | 0:211360300ec1 | 730 | //show score title |
Zafranhernandez | 0:211360300ec1 | 731 | lcd.setPixel(m,my); |
Zafranhernandez | 0:211360300ec1 | 732 | lcd.setPixel(m,my+1); |
Zafranhernandez | 0:211360300ec1 | 733 | lcd.setPixel(m,my+2); |
Zafranhernandez | 0:211360300ec1 | 734 | lcd.setPixel(m,my+4); |
Zafranhernandez | 0:211360300ec1 | 735 | lcd.setPixel(m+1,my); |
Zafranhernandez | 0:211360300ec1 | 736 | lcd.setPixel(m+1,my+2); |
Zafranhernandez | 0:211360300ec1 | 737 | lcd.setPixel(m+1,my+4); |
Zafranhernandez | 0:211360300ec1 | 738 | lcd.setPixel(m+2,my); |
Zafranhernandez | 0:211360300ec1 | 739 | lcd.setPixel(m+2,my+2); |
Zafranhernandez | 0:211360300ec1 | 740 | lcd.setPixel(m+2,my+3); |
Zafranhernandez | 0:211360300ec1 | 741 | lcd.setPixel(m+2,my+4); |
Zafranhernandez | 0:211360300ec1 | 742 | lcd.setPixel(m+4,my); |
Zafranhernandez | 0:211360300ec1 | 743 | lcd.setPixel(m+4,my+1); |
Zafranhernandez | 0:211360300ec1 | 744 | lcd.setPixel(m+4,my+2); |
Zafranhernandez | 0:211360300ec1 | 745 | lcd.setPixel(m+4,my+3); |
Zafranhernandez | 0:211360300ec1 | 746 | lcd.setPixel(m+4,my+4); |
Zafranhernandez | 0:211360300ec1 | 747 | lcd.setPixel(m+5,my); |
Zafranhernandez | 0:211360300ec1 | 748 | lcd.setPixel(m+5,my+4); |
Zafranhernandez | 0:211360300ec1 | 749 | lcd.setPixel(m+6,my); |
Zafranhernandez | 0:211360300ec1 | 750 | lcd.setPixel(m+6,my+4); |
Zafranhernandez | 0:211360300ec1 | 751 | lcd.setPixel(m+8,my); |
Zafranhernandez | 0:211360300ec1 | 752 | lcd.setPixel(m+8,my+1); |
Zafranhernandez | 0:211360300ec1 | 753 | lcd.setPixel(m+8,my+2); |
Zafranhernandez | 0:211360300ec1 | 754 | lcd.setPixel(m+8,my+3); |
Zafranhernandez | 0:211360300ec1 | 755 | lcd.setPixel(m+8,my+4); |
Zafranhernandez | 0:211360300ec1 | 756 | lcd.setPixel(m+9,my); |
Zafranhernandez | 0:211360300ec1 | 757 | lcd.setPixel(m+9,my+4); |
Zafranhernandez | 0:211360300ec1 | 758 | lcd.setPixel(m+10,my); |
Zafranhernandez | 0:211360300ec1 | 759 | lcd.setPixel(m+10,my+1); |
Zafranhernandez | 0:211360300ec1 | 760 | lcd.setPixel(m+10,my+2); |
Zafranhernandez | 0:211360300ec1 | 761 | lcd.setPixel(m+10,my+3); |
Zafranhernandez | 0:211360300ec1 | 762 | lcd.setPixel(m+10,my+4); |
Zafranhernandez | 0:211360300ec1 | 763 | lcd.setPixel(m+12,my); |
Zafranhernandez | 0:211360300ec1 | 764 | lcd.setPixel(m+12,my+1); |
Zafranhernandez | 0:211360300ec1 | 765 | lcd.setPixel(m+12,my+2); |
Zafranhernandez | 0:211360300ec1 | 766 | lcd.setPixel(m+12,my+3); |
Zafranhernandez | 0:211360300ec1 | 767 | lcd.setPixel(m+12,my+4); |
Zafranhernandez | 0:211360300ec1 | 768 | lcd.setPixel(m+13,my); |
Zafranhernandez | 0:211360300ec1 | 769 | lcd.setPixel(m+13,my+2); |
Zafranhernandez | 0:211360300ec1 | 770 | lcd.setPixel(m+14,my); |
Zafranhernandez | 0:211360300ec1 | 771 | lcd.setPixel(m+14,my+1); |
Zafranhernandez | 0:211360300ec1 | 772 | lcd.setPixel(m+14,my+3); |
Zafranhernandez | 0:211360300ec1 | 773 | lcd.setPixel(m+14,my+4); |
Zafranhernandez | 0:211360300ec1 | 774 | lcd.setPixel(m+16,my); |
Zafranhernandez | 0:211360300ec1 | 775 | lcd.setPixel(m+16,my+1); |
Zafranhernandez | 0:211360300ec1 | 776 | lcd.setPixel(m+16,my+2); |
Zafranhernandez | 0:211360300ec1 | 777 | lcd.setPixel(m+16,my+3); |
Zafranhernandez | 0:211360300ec1 | 778 | lcd.setPixel(m+16,my+4); |
Zafranhernandez | 0:211360300ec1 | 779 | lcd.setPixel(m+17,my); |
Zafranhernandez | 0:211360300ec1 | 780 | lcd.setPixel(m+17,my+2); |
Zafranhernandez | 0:211360300ec1 | 781 | lcd.setPixel(m+17,my+4); |
Zafranhernandez | 0:211360300ec1 | 782 | lcd.setPixel(m+18,my); |
Zafranhernandez | 0:211360300ec1 | 783 | lcd.setPixel(m+18,my+4); |
Zafranhernandez | 0:211360300ec1 | 784 | } |
Zafranhernandez | 0:211360300ec1 | 785 | |
Zafranhernandez | 1:58b4f9dda460 | 786 | void level(int x1,int y1) //display the level text on the screen |
Zafranhernandez | 0:211360300ec1 | 787 | { |
Zafranhernandez | 0:211360300ec1 | 788 | int x0=x1; |
Zafranhernandez | 0:211360300ec1 | 789 | int y0=y1; |
Zafranhernandez | 0:211360300ec1 | 790 | lcd.drawLine(x1,y1+4,x0,y0,1); |
Zafranhernandez | 0:211360300ec1 | 791 | lcd.drawLine(x1+2,y1+4,x0,y0+4,1); |
Zafranhernandez | 0:211360300ec1 | 792 | lcd.drawLine(x1+4,y1+4,x0+4,y0,1); |
Zafranhernandez | 0:211360300ec1 | 793 | lcd.drawLine(x1+6,y1,x0+4,y0,1); |
Zafranhernandez | 0:211360300ec1 | 794 | lcd.drawLine(x1+6,y1+4,x0+4,y0+4,1); |
Zafranhernandez | 0:211360300ec1 | 795 | lcd.setPixel(x1+5,y1+2); |
Zafranhernandez | 0:211360300ec1 | 796 | lcd.drawLine(x1+8,y1+3,x0+8,y0,1); |
Zafranhernandez | 0:211360300ec1 | 797 | lcd.drawLine(x1+10,y1+3,x0+10,y0,1); |
Zafranhernandez | 0:211360300ec1 | 798 | lcd.setPixel(x1+9,y1+4); |
Zafranhernandez | 0:211360300ec1 | 799 | lcd.drawLine(x1+12,y1+4,x0+12,y0,1); |
Zafranhernandez | 0:211360300ec1 | 800 | lcd.drawLine(x1+14,y1,x0+12,y0,1); |
Zafranhernandez | 0:211360300ec1 | 801 | lcd.drawLine(x1+14,y1+4,x0+12,y0+4,1); |
Zafranhernandez | 0:211360300ec1 | 802 | lcd.setPixel(x1+13,y1+2); |
Zafranhernandez | 0:211360300ec1 | 803 | lcd.drawLine(x1+16,y1+4,x0+16,y0,1); |
Zafranhernandez | 0:211360300ec1 | 804 | lcd.drawLine(x1+18,y1+4,x0+16,y0+4,1); |
Zafranhernandez | 1:58b4f9dda460 | 805 | } |
Zafranhernandez | 1:58b4f9dda460 | 806 | |
Zafranhernandez | 1:58b4f9dda460 | 807 | void button_isr() //use for interrupt |
Zafranhernandez | 1:58b4f9dda460 | 808 | { |
Zafranhernandez | 1:58b4f9dda460 | 809 | g_button_flag=1; |
Zafranhernandez | 0:211360300ec1 | 810 | } |