Multi-Function Clock

Dependencies:   Clock DHT22 DigitDisplay mbed my8x8RGB

Committer:
mmoodevil
Date:
Tue Dec 08 20:56:58 2015 +0000
Revision:
1:f9ce8c057b73
Parent:
0:1ef228e02562
Final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mmoodevil 0:1ef228e02562 1 #include "mbed.h"
mmoodevil 0:1ef228e02562 2 #include "Clock.h"
mmoodevil 0:1ef228e02562 3 #include "DHT22.h"
mmoodevil 0:1ef228e02562 4 #include "my8x8RGB.h"
mmoodevil 0:1ef228e02562 5
mmoodevil 0:1ef228e02562 6 Ticker UpdateScreen,TCK_player;
mmoodevil 0:1ef228e02562 7 Timeout w8;
mmoodevil 0:1ef228e02562 8 Timer timer1;
mmoodevil 0:1ef228e02562 9 InterruptIn BTN_Up(PA_14),BTN_Down(PA_15),BTN_Shoot(PA_13);
mmoodevil 0:1ef228e02562 10
mmoodevil 0:1ef228e02562 11 class bullet
mmoodevil 0:1ef228e02562 12 {
mmoodevil 0:1ef228e02562 13 public:
mmoodevil 0:1ef228e02562 14 int y,x;
mmoodevil 0:1ef228e02562 15 uint8_t enable;
mmoodevil 0:1ef228e02562 16 void display() {
mmoodevil 0:1ef228e02562 17
mmoodevil 0:1ef228e02562 18 if(enable==1) {
mmoodevil 0:1ef228e02562 19 rgb_point(y,6-x,0,0,100);
mmoodevil 0:1ef228e02562 20 }
mmoodevil 0:1ef228e02562 21 }
mmoodevil 0:1ef228e02562 22 void RST() {
mmoodevil 0:1ef228e02562 23 rgb_point(y,7-x,0,0,0);
mmoodevil 0:1ef228e02562 24 y=0;
mmoodevil 0:1ef228e02562 25 x=0;
mmoodevil 0:1ef228e02562 26 enable=0;
mmoodevil 0:1ef228e02562 27 }
mmoodevil 0:1ef228e02562 28
mmoodevil 0:1ef228e02562 29 };
mmoodevil 0:1ef228e02562 30
mmoodevil 0:1ef228e02562 31 class enemy
mmoodevil 0:1ef228e02562 32 {
mmoodevil 0:1ef228e02562 33 public:
mmoodevil 0:1ef228e02562 34 int y,x;
mmoodevil 0:1ef228e02562 35 uint8_t level,enable;
mmoodevil 0:1ef228e02562 36 int t_delay;
mmoodevil 0:1ef228e02562 37 void display() {
mmoodevil 0:1ef228e02562 38 if(enable==1) {
mmoodevil 0:1ef228e02562 39 if(level==2 && x>=0)rgb_point(y,x,100,100,0);
mmoodevil 0:1ef228e02562 40 if(level==1 && x>=0)rgb_point(y,x,100,0,0);
mmoodevil 0:1ef228e02562 41
mmoodevil 0:1ef228e02562 42 }
mmoodevil 0:1ef228e02562 43 }
mmoodevil 0:1ef228e02562 44
mmoodevil 0:1ef228e02562 45 void RST() {
mmoodevil 0:1ef228e02562 46 rgb_point(y,x,0,0,0);
mmoodevil 0:1ef228e02562 47 y=0;
mmoodevil 0:1ef228e02562 48 x=0;
mmoodevil 0:1ef228e02562 49 enable=0;
mmoodevil 0:1ef228e02562 50 level=0;
mmoodevil 0:1ef228e02562 51 }
mmoodevil 0:1ef228e02562 52
mmoodevil 0:1ef228e02562 53 };
mmoodevil 0:1ef228e02562 54
mmoodevil 0:1ef228e02562 55 /**************OEY******************/
mmoodevil 0:1ef228e02562 56 //define game variable
mmoodevil 0:1ef228e02562 57 #define enemy_size1 10
mmoodevil 0:1ef228e02562 58 #define enemy_size2 15
mmoodevil 0:1ef228e02562 59 #define enemy_size3 20
mmoodevil 0:1ef228e02562 60 #define bullet_speed 50
mmoodevil 0:1ef228e02562 61 #define btn_delay 0.02
mmoodevil 1:f9ce8c057b73 62 #define mooBTN 0.1
mmoodevil 0:1ef228e02562 63 uint8_t player_location=1; // in Colum
mmoodevil 0:1ef228e02562 64 bullet mybullet[10];
mmoodevil 0:1ef228e02562 65 enemy wave1[enemy_size1];
mmoodevil 0:1ef228e02562 66 enemy wave2[enemy_size2];
mmoodevil 0:1ef228e02562 67 enemy wave3[enemy_size3];
mmoodevil 0:1ef228e02562 68 enemy wave4[enemy_size2];
mmoodevil 0:1ef228e02562 69 enemy wave5[enemy_size3];
mmoodevil 0:1ef228e02562 70 uint8_t currentbullet=0;
mmoodevil 0:1ef228e02562 71 uint8_t gameLevel=1;
mmoodevil 0:1ef228e02562 72 int t_ms_easy[4]= {800,1000,1200,1400};
mmoodevil 0:1ef228e02562 73 int t_ms_normal[4]= {500,600,700,800};
mmoodevil 0:1ef228e02562 74 int t_ms_hard[4]= {500,400,400,500};
mmoodevil 0:1ef228e02562 75 int CN[2]= {2,1};
mmoodevil 0:1ef228e02562 76 /*************FUNCTION*****************/
mmoodevil 0:1ef228e02562 77 void createWall();
mmoodevil 0:1ef228e02562 78 void createWall2(uint8_t r,uint8_t g,uint8_t b);
mmoodevil 0:1ef228e02562 79 void gameOver();
mmoodevil 0:1ef228e02562 80
mmoodevil 0:1ef228e02562 81 void PMD();
mmoodevil 0:1ef228e02562 82 void PMU();
mmoodevil 0:1ef228e02562 83 void playerMoveDown();
mmoodevil 0:1ef228e02562 84 void playerMoveUp();
mmoodevil 0:1ef228e02562 85 void SHT();
mmoodevil 0:1ef228e02562 86 void shooting();
mmoodevil 0:1ef228e02562 87 void bulletUpdate();
mmoodevil 0:1ef228e02562 88
mmoodevil 0:1ef228e02562 89 void genarate_enemy(enemy stage[],int enemy_size,int t_ms[]);
mmoodevil 0:1ef228e02562 90 void genarate_enemy_rand(enemy stage[],int enemy_size,int t_ms[]);
mmoodevil 0:1ef228e02562 91 void newSetting();
mmoodevil 0:1ef228e02562 92 void enemyUpdate(enemy temp[],int enemy_size);
mmoodevil 0:1ef228e02562 93 void TomaTosetting();
mmoodevil 0:1ef228e02562 94 void TomaToloop();
mmoodevil 0:1ef228e02562 95
mmoodevil 0:1ef228e02562 96 /**************MOO****************/
mmoodevil 0:1ef228e02562 97 Clock Clk(I2C_SDA,I2C_SCL); // I2C CLOCK DS1307
mmoodevil 0:1ef228e02562 98 DigitDisplay Dis(PC_8, PC_6); // Display 7segment TM1636
mmoodevil 0:1ef228e02562 99 InterruptIn K1(PC_10); // Inc Min (Alarm)
mmoodevil 0:1ef228e02562 100 InterruptIn K2(PA_11); // Inc Hours (Alarm)
mmoodevil 0:1ef228e02562 101 InterruptIn K3(PB_12); // Set Alarm
mmoodevil 0:1ef228e02562 102 InterruptIn KS(PB_2); // Change mode
mmoodevil 0:1ef228e02562 103 DigitalOut Beep(PC_5); // Buzzer
mmoodevil 0:1ef228e02562 104 int M=0,H=0,N=0,I=0; // Cache Alarm
mmoodevil 1:f9ce8c057b73 105 int SetH = 99 , SetM = 0; // Cache Alarm
mmoodevil 0:1ef228e02562 106 int mode=3; // Init Mode = 0 (Default)
mmoodevil 0:1ef228e02562 107 int flag = 0; // Init Flag for Alarm
mmoodevil 0:1ef228e02562 108 int temperature; //Init for Memmory Temp
mmoodevil 0:1ef228e02562 109 int Ft=0,St=0; // Cache Temp
mmoodevil 0:1ef228e02562 110 DHT22 dht(PB_1); // OneWire for Temp get
mmoodevil 0:1ef228e02562 111 /**************MOO****************/
mmoodevil 0:1ef228e02562 112
mmoodevil 0:1ef228e02562 113 int alarmset(int sH,int sM) // Function Set Alarm
mmoodevil 0:1ef228e02562 114 {
mmoodevil 0:1ef228e02562 115 int I,J,K;
mmoodevil 0:1ef228e02562 116 Clk.getAlarm(&I,&J,&K);
mmoodevil 0:1ef228e02562 117 if(sH == K && sM == J )
mmoodevil 0:1ef228e02562 118 return 1;
mmoodevil 0:1ef228e02562 119 else
mmoodevil 0:1ef228e02562 120 return 0;
mmoodevil 0:1ef228e02562 121 }
mmoodevil 0:1ef228e02562 122
mmoodevil 1:f9ce8c057b73 123 void sentoo() // Set time
mmoodevil 0:1ef228e02562 124 {
mmoodevil 1:f9ce8c057b73 125 //wait(0.3);
mmoodevil 0:1ef228e02562 126 SetM = (N*10) + M ;
mmoodevil 0:1ef228e02562 127 SetH = (I*10) + H ;
mmoodevil 0:1ef228e02562 128 //alarmset(SetH,int SetM)
mmoodevil 0:1ef228e02562 129 printf("%d:%d",SetH,SetM);
mmoodevil 0:1ef228e02562 130 }
mmoodevil 0:1ef228e02562 131
mmoodevil 1:f9ce8c057b73 132 void minUoo(){
mmoodevil 0:1ef228e02562 133 M++;
mmoodevil 1:f9ce8c057b73 134 // wait(0.3);
mmoodevil 0:1ef228e02562 135 if(M>9 && N<5){
mmoodevil 0:1ef228e02562 136 M = 0;
mmoodevil 0:1ef228e02562 137 N++;
mmoodevil 0:1ef228e02562 138 }
mmoodevil 0:1ef228e02562 139 if(M>9 && N==5)
mmoodevil 0:1ef228e02562 140 {
mmoodevil 0:1ef228e02562 141 M = 0;
mmoodevil 0:1ef228e02562 142 N = 0;
mmoodevil 0:1ef228e02562 143 }
mmoodevil 0:1ef228e02562 144 }
mmoodevil 0:1ef228e02562 145
mmoodevil 1:f9ce8c057b73 146 void hoursUoo(){
mmoodevil 0:1ef228e02562 147 H++;
mmoodevil 1:f9ce8c057b73 148 // wait(0.3);
mmoodevil 0:1ef228e02562 149 if(H>9 && I<2){
mmoodevil 0:1ef228e02562 150 H = 0;
mmoodevil 0:1ef228e02562 151 I++;
mmoodevil 0:1ef228e02562 152 }
mmoodevil 0:1ef228e02562 153 if(H>3 && I==2)
mmoodevil 0:1ef228e02562 154 {
mmoodevil 0:1ef228e02562 155 H = 0;
mmoodevil 0:1ef228e02562 156 I = 0;
mmoodevil 0:1ef228e02562 157 }
mmoodevil 0:1ef228e02562 158 }
mmoodevil 0:1ef228e02562 159
mmoodevil 1:f9ce8c057b73 160 void modepoo(){
mmoodevil 1:f9ce8c057b73 161 // wait(0.5);
mmoodevil 0:1ef228e02562 162 screen_off();
mmoodevil 0:1ef228e02562 163 mode++;
mmoodevil 1:f9ce8c057b73 164 printf("%d\n",mode);
mmoodevil 1:f9ce8c057b73 165 if(mode==3){
mmoodevil 1:f9ce8c057b73 166 newSetting();
mmoodevil 1:f9ce8c057b73 167 gameLevel=1;
mmoodevil 1:f9ce8c057b73 168 genarate_enemy(wave1,enemy_size1,t_ms_easy);
mmoodevil 1:f9ce8c057b73 169
mmoodevil 1:f9ce8c057b73 170 }
mmoodevil 0:1ef228e02562 171 if(mode == 4)
mmoodevil 0:1ef228e02562 172 { mode = 0 ;}
mmoodevil 1:f9ce8c057b73 173 // wait(0.5);
mmoodevil 0:1ef228e02562 174
mmoodevil 0:1ef228e02562 175 }
mmoodevil 0:1ef228e02562 176
mmoodevil 1:f9ce8c057b73 177 void sent(){
mmoodevil 1:f9ce8c057b73 178 w8.attach(&sentoo,mooBTN);
mmoodevil 1:f9ce8c057b73 179 }
mmoodevil 1:f9ce8c057b73 180 void minU(){
mmoodevil 1:f9ce8c057b73 181 w8.attach(&minUoo,mooBTN);
mmoodevil 1:f9ce8c057b73 182 }
mmoodevil 1:f9ce8c057b73 183 void hoursU(){
mmoodevil 1:f9ce8c057b73 184 w8.attach(&hoursUoo,mooBTN);
mmoodevil 1:f9ce8c057b73 185 }
mmoodevil 1:f9ce8c057b73 186 void modep(){
mmoodevil 1:f9ce8c057b73 187 w8.attach(&modepoo,mooBTN);
mmoodevil 1:f9ce8c057b73 188 }
mmoodevil 1:f9ce8c057b73 189
mmoodevil 1:f9ce8c057b73 190 void aalm(){
mmoodevil 1:f9ce8c057b73 191 Beep=1;
mmoodevil 1:f9ce8c057b73 192 }
mmoodevil 1:f9ce8c057b73 193 void aalm_off(){
mmoodevil 1:f9ce8c057b73 194 Beep=0;
mmoodevil 1:f9ce8c057b73 195 }
mmoodevil 1:f9ce8c057b73 196
mmoodevil 0:1ef228e02562 197 int main(){
mmoodevil 1:f9ce8c057b73 198 //Clk.settime2bcd(0,19,01,0,0,0,0);
mmoodevil 0:1ef228e02562 199 KS.rise(&modep);
mmoodevil 0:1ef228e02562 200 K1.rise(&minU);
mmoodevil 0:1ef228e02562 201 K2.rise(&hoursU);
mmoodevil 0:1ef228e02562 202 K3.rise(&sent);
mmoodevil 0:1ef228e02562 203 TomaTosetting();
mmoodevil 0:1ef228e02562 204 while(1){
mmoodevil 0:1ef228e02562 205 while(mode == 0){
mmoodevil 0:1ef228e02562 206
mmoodevil 0:1ef228e02562 207 Clk.displays();
mmoodevil 0:1ef228e02562 208 wait(1);
mmoodevil 0:1ef228e02562 209 flag = alarmset(SetH,SetM);
mmoodevil 1:f9ce8c057b73 210
mmoodevil 1:f9ce8c057b73 211 if(flag==1){
mmoodevil 1:f9ce8c057b73 212 UpdateScreen.attach(&aalm,0.1);
mmoodevil 1:f9ce8c057b73 213 TCK_player.attach(&aalm_off,0.2);
mmoodevil 1:f9ce8c057b73 214 newSetting();
mmoodevil 1:f9ce8c057b73 215 gameLevel=1;
mmoodevil 1:f9ce8c057b73 216 genarate_enemy(wave1,enemy_size1,t_ms_easy);
mmoodevil 1:f9ce8c057b73 217 }
mmoodevil 1:f9ce8c057b73 218
mmoodevil 0:1ef228e02562 219 while(flag == 1){
mmoodevil 1:f9ce8c057b73 220 TomaToloop();
mmoodevil 0:1ef228e02562 221 }
mmoodevil 0:1ef228e02562 222 }
mmoodevil 0:1ef228e02562 223
mmoodevil 0:1ef228e02562 224 while(mode == 1){
mmoodevil 0:1ef228e02562 225 Dis.write(3,M);
mmoodevil 0:1ef228e02562 226 Dis.write(2,N);
mmoodevil 0:1ef228e02562 227 Dis.write(1,H);
mmoodevil 0:1ef228e02562 228 Dis.write(0,I);
mmoodevil 0:1ef228e02562 229 }
mmoodevil 0:1ef228e02562 230 while(mode == 2){
mmoodevil 0:1ef228e02562 231 dht.sample();
mmoodevil 1:f9ce8c057b73 232 wait(0.5);
mmoodevil 0:1ef228e02562 233 temperature = dht.getTemperature();
mmoodevil 0:1ef228e02562 234 temperature = temperature/10;
mmoodevil 0:1ef228e02562 235 Dis.clear();
mmoodevil 0:1ef228e02562 236 Ft = temperature/10;
mmoodevil 0:1ef228e02562 237 St = temperature%10;
mmoodevil 0:1ef228e02562 238 Dis.write(3,12);
mmoodevil 0:1ef228e02562 239 Dis.write(2,St);
mmoodevil 0:1ef228e02562 240 Dis.write(1,Ft);
mmoodevil 0:1ef228e02562 241
mmoodevil 0:1ef228e02562 242 //printf("%d \n",temperature);
mmoodevil 0:1ef228e02562 243 }
mmoodevil 0:1ef228e02562 244
mmoodevil 0:1ef228e02562 245 while(mode == 3){
mmoodevil 0:1ef228e02562 246 TomaToloop();}
mmoodevil 0:1ef228e02562 247 }
mmoodevil 0:1ef228e02562 248 }
mmoodevil 0:1ef228e02562 249
mmoodevil 0:1ef228e02562 250 /************OEY FUNCTION*****************/
mmoodevil 0:1ef228e02562 251 void createWall()
mmoodevil 0:1ef228e02562 252 {
mmoodevil 0:1ef228e02562 253 for(int i=0; i<8; i++) {
mmoodevil 0:1ef228e02562 254 rgb_point(0,i,50,50,50);
mmoodevil 0:1ef228e02562 255 rgb_point(7,i,50,50,50);
mmoodevil 0:1ef228e02562 256 }
mmoodevil 0:1ef228e02562 257
mmoodevil 0:1ef228e02562 258 }
mmoodevil 0:1ef228e02562 259
mmoodevil 0:1ef228e02562 260 void createWall2(uint8_t r,uint8_t g,uint8_t b)
mmoodevil 0:1ef228e02562 261 {
mmoodevil 0:1ef228e02562 262 for(int i=0; i<8; i++) {
mmoodevil 0:1ef228e02562 263 rgb_point(0,i,r,g,b);
mmoodevil 0:1ef228e02562 264 rgb_point(7,i,r,g,b);
mmoodevil 0:1ef228e02562 265 }
mmoodevil 0:1ef228e02562 266
mmoodevil 0:1ef228e02562 267 }
mmoodevil 0:1ef228e02562 268
mmoodevil 0:1ef228e02562 269 void PMD()
mmoodevil 0:1ef228e02562 270 {
mmoodevil 0:1ef228e02562 271 rgb_point(player_location,7,0,0,0);
mmoodevil 0:1ef228e02562 272 player_location++;
mmoodevil 0:1ef228e02562 273 if(player_location>=7) {
mmoodevil 0:1ef228e02562 274 player_location=6;
mmoodevil 0:1ef228e02562 275 }
mmoodevil 0:1ef228e02562 276 rgb_point(player_location,7,0,50,0);
mmoodevil 0:1ef228e02562 277 }
mmoodevil 0:1ef228e02562 278 void playerMoveDown()
mmoodevil 0:1ef228e02562 279 {
mmoodevil 0:1ef228e02562 280
mmoodevil 0:1ef228e02562 281 w8.attach(&PMD,btn_delay);
mmoodevil 0:1ef228e02562 282 }
mmoodevil 0:1ef228e02562 283
mmoodevil 0:1ef228e02562 284 void PMU()
mmoodevil 0:1ef228e02562 285 {
mmoodevil 0:1ef228e02562 286 rgb_point(player_location,7,0,0,0);
mmoodevil 0:1ef228e02562 287 player_location--;
mmoodevil 0:1ef228e02562 288 if(player_location<=0) {
mmoodevil 0:1ef228e02562 289 player_location=1;
mmoodevil 0:1ef228e02562 290 }
mmoodevil 0:1ef228e02562 291 rgb_point(player_location,7,0,50,0);
mmoodevil 0:1ef228e02562 292
mmoodevil 0:1ef228e02562 293 }
mmoodevil 0:1ef228e02562 294 void playerMoveUp()
mmoodevil 0:1ef228e02562 295 {
mmoodevil 0:1ef228e02562 296
mmoodevil 0:1ef228e02562 297 w8.attach(&PMU,btn_delay);
mmoodevil 0:1ef228e02562 298 }
mmoodevil 0:1ef228e02562 299
mmoodevil 0:1ef228e02562 300 void SHT()
mmoodevil 0:1ef228e02562 301 {
mmoodevil 0:1ef228e02562 302 mybullet[currentbullet].y=player_location;
mmoodevil 0:1ef228e02562 303 mybullet[currentbullet].enable=1;
mmoodevil 0:1ef228e02562 304 currentbullet++;
mmoodevil 0:1ef228e02562 305 if(currentbullet>=10)currentbullet=0;
mmoodevil 0:1ef228e02562 306 }
mmoodevil 0:1ef228e02562 307
mmoodevil 0:1ef228e02562 308 void shooting()
mmoodevil 0:1ef228e02562 309 {
mmoodevil 0:1ef228e02562 310 w8.attach(&SHT,btn_delay);
mmoodevil 0:1ef228e02562 311 }
mmoodevil 0:1ef228e02562 312
mmoodevil 0:1ef228e02562 313 void bulletUpdate()
mmoodevil 0:1ef228e02562 314 {
mmoodevil 0:1ef228e02562 315
mmoodevil 0:1ef228e02562 316 for(int i=0; i<10; i++) {
mmoodevil 0:1ef228e02562 317 if(mybullet[i].enable==1) {
mmoodevil 0:1ef228e02562 318 mybullet[i].display();
mmoodevil 0:1ef228e02562 319 if(timer1.read_ms()%bullet_speed==0) {
mmoodevil 0:1ef228e02562 320 rgb_point(mybullet[i].y,6-mybullet[i].x,0,0,0);
mmoodevil 0:1ef228e02562 321 mybullet[i].x++;
mmoodevil 0:1ef228e02562 322 if(mybullet[i].x>=7)mybullet[i].RST();
mmoodevil 0:1ef228e02562 323 }
mmoodevil 0:1ef228e02562 324 }
mmoodevil 0:1ef228e02562 325
mmoodevil 0:1ef228e02562 326 }
mmoodevil 0:1ef228e02562 327 }
mmoodevil 0:1ef228e02562 328
mmoodevil 0:1ef228e02562 329
mmoodevil 0:1ef228e02562 330 void genarate_enemy(enemy stage[],int enemy_size,int t_ms[])
mmoodevil 0:1ef228e02562 331 {
mmoodevil 0:1ef228e02562 332 for(int i=0; i<enemy_size; i++) {
mmoodevil 0:1ef228e02562 333 stage[i].x=0;
mmoodevil 0:1ef228e02562 334 stage[i].y=(rand()%6) +1;
mmoodevil 0:1ef228e02562 335 for(int j=0; j< enemy_size && i!=j; j++) {
mmoodevil 0:1ef228e02562 336 if(stage[i].y==stage[j].y && stage[i].x==stage[j].x)stage[i].x++;
mmoodevil 0:1ef228e02562 337
mmoodevil 0:1ef228e02562 338 }
mmoodevil 0:1ef228e02562 339 stage[i].level=1;
mmoodevil 0:1ef228e02562 340 stage[i].enable=1;
mmoodevil 0:1ef228e02562 341 stage[i].t_delay=t_ms[rand()%4 +1];
mmoodevil 0:1ef228e02562 342 if(stage[i].y==0 || stage[i].y==7) {
mmoodevil 0:1ef228e02562 343 stage[i].enable=0;
mmoodevil 0:1ef228e02562 344 stage[i].RST();
mmoodevil 0:1ef228e02562 345 }
mmoodevil 0:1ef228e02562 346
mmoodevil 0:1ef228e02562 347 }
mmoodevil 0:1ef228e02562 348 }
mmoodevil 0:1ef228e02562 349
mmoodevil 0:1ef228e02562 350
mmoodevil 0:1ef228e02562 351
mmoodevil 0:1ef228e02562 352 void genarate_enemy_rand(enemy stage[],int enemy_size,int t_ms[])
mmoodevil 0:1ef228e02562 353 {
mmoodevil 0:1ef228e02562 354 for(int i=0; i<enemy_size; i++) {
mmoodevil 0:1ef228e02562 355 stage[i].x=0;
mmoodevil 0:1ef228e02562 356 stage[i].y=rand()%6 +1;
mmoodevil 0:1ef228e02562 357 for(int j=0; j< enemy_size && i!=j; j++) {
mmoodevil 0:1ef228e02562 358 if(stage[i].y==stage[j].y)stage[i].x++;
mmoodevil 0:1ef228e02562 359 stage[i].enable=1;
mmoodevil 0:1ef228e02562 360 }
mmoodevil 0:1ef228e02562 361 stage[i].level=rand()%2 +1;
mmoodevil 0:1ef228e02562 362 stage[i].enable=1;
mmoodevil 0:1ef228e02562 363 stage[i].t_delay=t_ms[rand()%4 +1];
mmoodevil 0:1ef228e02562 364 if(stage[i].y==0 || stage[i].y==7) {
mmoodevil 0:1ef228e02562 365 stage[i].enable=0;
mmoodevil 0:1ef228e02562 366 stage[i].RST();
mmoodevil 0:1ef228e02562 367 }
mmoodevil 0:1ef228e02562 368
mmoodevil 0:1ef228e02562 369 }
mmoodevil 0:1ef228e02562 370 }
mmoodevil 0:1ef228e02562 371
mmoodevil 0:1ef228e02562 372 void newSetting(){
mmoodevil 0:1ef228e02562 373 screen_off();
mmoodevil 0:1ef228e02562 374 createWall();
mmoodevil 0:1ef228e02562 375 rgb_point(player_location,7,0,50,0);
mmoodevil 0:1ef228e02562 376 }
mmoodevil 0:1ef228e02562 377
mmoodevil 0:1ef228e02562 378 void enemyUpdate(enemy temp[],int enemy_size)
mmoodevil 0:1ef228e02562 379 {
mmoodevil 0:1ef228e02562 380 uint8_t status=0;
mmoodevil 0:1ef228e02562 381 for(int i=0; i<enemy_size; i++) {
mmoodevil 0:1ef228e02562 382 if(temp[i].enable==1) {
mmoodevil 0:1ef228e02562 383 temp[i].display();
mmoodevil 0:1ef228e02562 384 if(timer1.read_ms()%temp[i].t_delay==0) {
mmoodevil 0:1ef228e02562 385 rgb_point(temp[i].y,temp[i].x,0,0,0);
mmoodevil 0:1ef228e02562 386 temp[i].x++;
mmoodevil 0:1ef228e02562 387 if(temp[i].x>7) { //Game Over
mmoodevil 0:1ef228e02562 388 newSetting();
mmoodevil 0:1ef228e02562 389 createWall2(255,10,255);
mmoodevil 0:1ef228e02562 390
mmoodevil 0:1ef228e02562 391 temp[i].RST();
mmoodevil 0:1ef228e02562 392 // screen_color(100,10,10);
mmoodevil 0:1ef228e02562 393 gameLevel=1;
mmoodevil 0:1ef228e02562 394 genarate_enemy(wave1,enemy_size1,t_ms_easy);
mmoodevil 0:1ef228e02562 395 }
mmoodevil 0:1ef228e02562 396 }
mmoodevil 0:1ef228e02562 397 for(int j =0; j<10; j++) {
mmoodevil 0:1ef228e02562 398 if(temp[i].x==(6-mybullet[j].x) && temp[i].y==mybullet[j].y) {
mmoodevil 0:1ef228e02562 399 mybullet[j].RST();
mmoodevil 0:1ef228e02562 400 if(temp[i].level==2)temp[i].level=1;
mmoodevil 0:1ef228e02562 401 else
mmoodevil 0:1ef228e02562 402 temp[i].RST();
mmoodevil 0:1ef228e02562 403 }
mmoodevil 0:1ef228e02562 404 }
mmoodevil 0:1ef228e02562 405 } else status++;
mmoodevil 0:1ef228e02562 406 }
mmoodevil 0:1ef228e02562 407 if(status>=enemy_size) {
mmoodevil 0:1ef228e02562 408 wait_ms(500);
mmoodevil 0:1ef228e02562 409 gameLevel++;
mmoodevil 0:1ef228e02562 410 newSetting();
mmoodevil 1:f9ce8c057b73 411 if(gameLevel==2){
mmoodevil 1:f9ce8c057b73 412 genarate_enemy(wave2,enemy_size2,t_ms_normal);
mmoodevil 1:f9ce8c057b73 413 }
mmoodevil 0:1ef228e02562 414 if(gameLevel==3)genarate_enemy(wave3,enemy_size2,t_ms_hard);
mmoodevil 1:f9ce8c057b73 415 if(gameLevel==4){
mmoodevil 1:f9ce8c057b73 416 genarate_enemy_rand(wave4,enemy_size1,t_ms_easy);
mmoodevil 1:f9ce8c057b73 417 flag=0;
mmoodevil 1:f9ce8c057b73 418 UpdateScreen.detach();
mmoodevil 1:f9ce8c057b73 419 TCK_player.detach();
mmoodevil 1:f9ce8c057b73 420 SetH=99;
mmoodevil 1:f9ce8c057b73 421 SetM=99;
mmoodevil 1:f9ce8c057b73 422 screen_off();
mmoodevil 1:f9ce8c057b73 423 createWall();
mmoodevil 1:f9ce8c057b73 424 }
mmoodevil 0:1ef228e02562 425 if(gameLevel==5)genarate_enemy_rand(wave5,enemy_size2,t_ms_normal);
mmoodevil 0:1ef228e02562 426 if(gameLevel==6){
mmoodevil 0:1ef228e02562 427 genarate_enemy_rand(wave5,enemy_size3,t_ms_normal);
mmoodevil 0:1ef228e02562 428 createWall2(0,30,255);
mmoodevil 0:1ef228e02562 429 }
mmoodevil 0:1ef228e02562 430 }
mmoodevil 0:1ef228e02562 431
mmoodevil 0:1ef228e02562 432 }
mmoodevil 0:1ef228e02562 433
mmoodevil 0:1ef228e02562 434 void TomaTosetting(){
mmoodevil 0:1ef228e02562 435 timer1.start();
mmoodevil 0:1ef228e02562 436 char wb[3]= {128,128,128};
mmoodevil 0:1ef228e02562 437 INITRGB(wb);
mmoodevil 0:1ef228e02562 438 /***************Genarate Enemy*********************/
mmoodevil 0:1ef228e02562 439 genarate_enemy(wave1,enemy_size1,t_ms_easy);
mmoodevil 0:1ef228e02562 440
mmoodevil 0:1ef228e02562 441 /***************Setting Button*******************/
mmoodevil 0:1ef228e02562 442 BTN_Down.rise(&playerMoveDown);
mmoodevil 0:1ef228e02562 443 BTN_Down.mode(PullUp);
mmoodevil 0:1ef228e02562 444 BTN_Up.rise(&playerMoveUp);
mmoodevil 0:1ef228e02562 445 BTN_Up.mode(PullUp);
mmoodevil 0:1ef228e02562 446 BTN_Shoot.rise(&shooting);
mmoodevil 0:1ef228e02562 447 BTN_Shoot.mode(PullUp);
mmoodevil 0:1ef228e02562 448
mmoodevil 0:1ef228e02562 449 /************************************/
mmoodevil 0:1ef228e02562 450 //gameSetting
mmoodevil 0:1ef228e02562 451 newSetting();
mmoodevil 0:1ef228e02562 452 /***********************************/
mmoodevil 0:1ef228e02562 453
mmoodevil 0:1ef228e02562 454 }
mmoodevil 0:1ef228e02562 455 void TomaToloop(){
mmoodevil 0:1ef228e02562 456
mmoodevil 0:1ef228e02562 457 displayRGB();
mmoodevil 0:1ef228e02562 458 bulletUpdate();
mmoodevil 0:1ef228e02562 459 displayRGB();
mmoodevil 0:1ef228e02562 460 //displayRGB();
mmoodevil 0:1ef228e02562 461 if(gameLevel==1)enemyUpdate(wave1,enemy_size1);
mmoodevil 0:1ef228e02562 462 if(gameLevel==2)enemyUpdate(wave2,enemy_size2);
mmoodevil 0:1ef228e02562 463 if(gameLevel==3)enemyUpdate(wave3,enemy_size3);
mmoodevil 0:1ef228e02562 464 if(gameLevel==4)enemyUpdate(wave4,enemy_size1);
mmoodevil 0:1ef228e02562 465 if(gameLevel==5)enemyUpdate(wave5,enemy_size2);
mmoodevil 0:1ef228e02562 466 if(gameLevel==6)enemyUpdate(wave5,enemy_size3);//6
mmoodevil 0:1ef228e02562 467 displayRGB();
mmoodevil 0:1ef228e02562 468
mmoodevil 0:1ef228e02562 469 }
mmoodevil 0:1ef228e02562 470
mmoodevil 0:1ef228e02562 471