contains my game for the embedded systems project 2645
Dependencies: mbed FXOS8700CQQQ
GameEngine/RocketRacer.cpp
- Committer:
- OmarAlebiary
- Date:
- 2019-04-07
- Revision:
- 15:8a768106c297
- Parent:
- 14:8df7e6fced07
- Child:
- 16:93a8147a4358
File content as of revision 15:8a768106c297:
#include "RocketRacer.h" DigitalIn buttonL(PTB18); DigitalIn buttonR(PTB3); const int enemy[11][9] = { { 0,0,0,0,1,0,0,0,0 }, { 0,0,0,1,1,1,0,0,0 }, { 0,0,1,1,1,1,1,0,0 }, { 0,1,1,1,1,1,1,1,0 }, { 0,1,1,1,1,1,1,1,0 }, { 0,1,1,1,1,1,1,1,0 }, { 1,1,1,1,1,1,1,1,1 }, { 1,1,1,1,1,1,1,1,1 }, { 1,1,1,1,1,1,1,1,1 }, { 1,1,1,1,1,1,1,1,1 }, { 1,1,1,1,1,1,1,1,1 }, }; const int rocket[11][9] = { { 0,0,0,0,1,0,0,0,0 }, { 0,0,0,1,1,1,0,0,0 }, { 0,0,1,1,1,1,1,0,0 }, { 0,1,1,1,1,1,1,1,0 }, { 0,1,1,1,1,1,1,1,0 }, { 0,1,1,1,1,1,1,1,0 }, { 0,0,1,1,1,1,1,0,0 }, { 0,0,0,1,1,1,0,0,0 }, { 0,0,0,0,1,0,0,0,0 }, { 0,0,1,1,1,1,1,0,0 }, { 0,0,1,1,1,1,1,0,0 }, }; RocketRacer::RocketRacer() :first_enemy_position(0),second_enemy_position(0),enemy_phase(0), game_speed (0),score(0),Init_position(2),enemy_dead(true),control(true) {} void RocketRacer::Main_Game_Display(N5110 &lcd){ lcd.clear(); lcd.drawRect(0,0,50,47,FILL_TRANSPARENT); char score_buffer[14]; char score_buffer1[14]; char level_buffer[14]; char level_buffer1[14]; buttonL.mode(PullDown); buttonR.mode(PullDown); //dispaly score sprintf(score_buffer,"score"); lcd.printString(score_buffer,55,0); sprintf(score_buffer1,"%d",score); lcd.printString(score_buffer1,58,1); //dispaly level sprintf(level_buffer,"Level"); lcd.printString(level_buffer,55,3); sprintf(level_buffer1,"%d",game_speed); lcd.printString(level_buffer1,58,4); lcd.refresh(); } void RocketRacer::Joystick_position(Gamepad &pad){ Direction d=pad.get_direction(); if((d==E||buttonR==true) && Init_position!=3 && control==true){ Init_position++; control = false; // printf("its Right\n"); } else if((d==W ||buttonL==true)&& Init_position!=1 && control==true){ Init_position--; control = false; // printf("its left\n"); } else if(d==CENTRE){ control = true; // printf("its center\n"); } } void RocketRacer::Generate_New_Enemy(){ srand(time(NULL)); if (enemy_dead){ first_enemy_position = Init_position; second_enemy_position = (rand() % 3)+1; enemy_phase = 0; enemy_dead = false; } } void RocketRacer::Check_Enemy_Dead(N5110 &lcd,Gamepad &pad){ if (enemy_phase>23 && ((first_enemy_position== Init_position) || (second_enemy_position == Init_position)) ){ End_Game(pad,lcd); } if (enemy_phase>39){ enemy_dead = true; score++; } } void RocketRacer::Game_Loop(N5110 &lcd,Gamepad &pad){ lcd.clear(); Joystick_position(pad); player_position(lcd,Init_position); Generate_New_Enemy(); enemy_position(lcd,first_enemy_position, enemy_phase); enemy_phase++; enemy_position(lcd,second_enemy_position, enemy_phase); enemy_phase++; Check_Enemy_Dead(lcd,pad); Game_difficulty(pad); lcd.refresh(); } //adds difficulty to the game after proceeding with each level void RocketRacer::Game_difficulty(Gamepad &pad){ if (score>=0 && score<=5){ pad.led(1,1.0); game_speed = 1; wait(0.09); } if (score>5 && score<=10){ pad.led(2,1.0); game_speed = 2; wait(0.07); } if (score>10 && score<=20){ pad.led(3,1.0); game_speed = 3; wait(0.06); } if (score>20 && score<=25){ pad.led(4,1.0); game_speed = 4; wait(0.05); } if (score>25 && score<=30){ pad.led(5,1.0); game_speed = 4; wait(0.04); } if (score>30){ pad.led(6,1.0); game_speed = 5; wait(0.03); } } void RocketRacer::enemy_position(N5110 &lcd,int place, int phase){ if (place==1){ lcd.drawSprite(2,phase,11,9,(int *)enemy); } if (place==2){ lcd.drawSprite(18,phase,11,9,(int *)enemy); } if (place==3){ lcd.drawSprite(34,phase,11,9,(int *)enemy); } lcd.refresh(); } void RocketRacer::player_position(N5110 &lcd,char RocketPosition){ Main_Game_Display(lcd); if (RocketPosition==1){ lcd.drawSprite(2,34,11,9,(int *)rocket); } if (RocketPosition==2){ lcd.drawSprite(18,34,11,9,(int *)rocket); } if (RocketPosition==3){ lcd.drawSprite(34,34,11,9,(int *)rocket); } lcd.refresh(); } void RocketRacer::End_Game(Gamepad &pad,N5110 &lcd){ lcd.clear(); char buffer1[14]; lcd.printString("Game over!!!",5,0); lcd.printString("Better Luck ",2,1); lcd.printString("next time",2,2); lcd.printString("High score:",2,3); sprintf(buffer1,"%d",score); lcd.printString(buffer1,20,4); pad.leds_on(); pad.tone(4500,1); lcd.refresh(); wait(500); }