Albert Tan-Mulligan
/
ELEC2645_Project_el18ajst
Diff: main.cpp
- Revision:
- 12:c557b6c9b17a
- Parent:
- 11:e60b40963095
- Child:
- 13:217c6102ffc0
--- a/main.cpp Sun May 24 21:21:26 2020 +0000 +++ b/main.cpp Mon May 25 17:22:06 2020 +0000 @@ -31,7 +31,6 @@ Character p1; vector<Bullets> shots; vector<Enemy> enemies; -Direction holder; int melody[46] = {277, 330, 311, 277, 330, 311, 330, 311, 370, 330, 415, 330, 277, 330, 311, 277, 330, 311, 330, 311, 370, 330, 311, 247, 277, 330, 311, 277, 330, 311, 330, 311, 370, 330, 415, 440, 330, 415, 440, 494, 554, 415, 440, 494, 622, 659}; // #c = 277, d# =311, f# = 370, g# = 415 int durations[46] = {4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}; //Variables @@ -44,6 +43,7 @@ volatile int Current_State = 0; volatile int timer = 0; volatile int score = 0; +volatile int holder; //PROTOTYPES void menu(); void GameRun(); @@ -52,23 +52,23 @@ void PlayerDead(); void animation(); void reset(); +void collisions(); +void draws(); +void updates(Direction dir); //FUNCTIONS int main() - { - //pc.printf("Main Open"); + {//pc.printf("Main Open"); //SETUPS pad.init(); lcd.init(); lcd.setContrast(0.4+(pad.read_pot1()/2.0)); lcd.clear(); - lcd.refresh(); - //testing CoolTerm //pc.printf("CoolTerm is Connected\n"); //pc.printf("CurrentState = %d\n", Current_State); - while(1){ if(Current_State == 0){ menu(); + reset(); } else if (Current_State == 1){ GameRun(); @@ -89,7 +89,7 @@ lcd.printString(" Press A to ",0,3); lcd.printString("Start",27,4); lcd.refresh(); - while (1) { + while (1) { //pc.printf("While Loop + %d", g_pad.Button_A_flag); if (pad.A_pressed()) { //pc.printf("Button_A"); @@ -110,66 +110,21 @@ pad.play_melody(46, melody,durations,180.0,true); while(1){ timer++; - if(timer%100==0){ - AddEnemy(); - } - //movement code + if(timer%100==0){ AddEnemy(); } dir = pad.get_direction(); - mag = pad.get_mag(); - if(dir == N){ - holder = dir; - } - else if(dir == S){ - holder = dir; - } - else if(dir == E){ - holder = dir; - } - else if(dir == W){ - holder = dir; - } + if(dir == N){ holder = 0; } + else if(dir == S){ holder = 2; } + else if(dir == E){ holder = 1; } + else if(dir == W){ holder = 3; } if (pad.A_pressed()) { - shots.push_back(Bullets(p1.get_x()+2, p1.get_y()+2, holder)); - } - p1.update(dir, mag); - for(int i = 0; i<shots.size(); i++){ - shots.at(i).update(); - } - for(int i = 1; i<shots.size(); i++){ - if(shots.at(i).get_x()>84|shots.at(i).get_x()<1|shots.at(i).get_y()>48|shots.at(i).get_y()<1){ - shots.erase(shots.begin()+i); - } - } - for(int i = 0; i<enemies.size(); i++){ - enemies.at(i).update(p1.get_x()+1, p1.get_y()+1); - if(enemies.at(i).get_x()>= p1.get_x()-1 & enemies.at(i).get_x()<= p1.get_x()+3&enemies.at(i).get_y()>= p1.get_y()-1 & enemies.at(i).get_y()<= p1.get_y()+3){ - Current_State = fsm[Current_State].next_state[1]; - return; - } - for(int j = 0; j<shots.size(); j++){ - if(shots.at(j).get_x() >= enemies.at(i).get_x() & shots.at(j).get_x()<= enemies.at(i).get_x()+3 & shots.at(j).get_y() >= enemies.at(i).get_y() & shots.at(j).get_y()<= enemies.at(i).get_y()+3){ - shots.at(j).dead(); - enemies.at(i).reset(timer); - score++; - } - } - } - - lcd.clear(); - for(int i = 0; i<enemies.size(); i++){ - enemies.at(i).draw(lcd); - } - for(int i = 0; i<shots.size(); i++){ - shots.at(i).draw(lcd); - } - p1.draw(lcd); - lcd.refresh(); + shots.push_back(Bullets(p1.get_x()+2, p1.get_y()+2, holder)); } + updates(dir); + draws(); + collisions(); wait(1.0f/10.0f); if (pad.start_pressed()) { - Current_State = fsm[Current_State].next_state[0]; - return; - - } + Current_State = fsm[Current_State].next_state[0];} + if(Current_State!= 1){ return; } } } void Pause(){ @@ -242,4 +197,42 @@ } p1.reset(); return; - } \ No newline at end of file + } +void collisions(){ + for(int i = 1; i<shots.size(); i++){ + if(shots.at(i).get_x()>84|shots.at(i).get_x()<1|shots.at(i).get_y()>48|shots.at(i).get_y()<1){ + shots.erase(shots.begin()+i); + } + } + for(int i = 0; i<enemies.size(); i++){ + enemies.at(i).update(p1.get_x()+1, p1.get_y()+1); + if(enemies.at(i).get_x()>= p1.get_x()-1 & enemies.at(i).get_x()<= p1.get_x()+3&enemies.at(i).get_y()>= p1.get_y()-1 & enemies.at(i).get_y()<= p1.get_y()+3){ + Current_State = fsm[Current_State].next_state[1]; + return; + } + for(int j = 0; j<shots.size(); j++){ + if(shots.at(j).get_x() >= enemies.at(i).get_x() & shots.at(j).get_x()<= enemies.at(i).get_x()+3 & shots.at(j).get_y() >= enemies.at(i).get_y() & shots.at(j).get_y()<= enemies.at(i).get_y()+3){ + shots.at(j).dead(); + enemies.at(i).reset(timer); + score++; + } + } + } + } +void draws(){ + lcd.clear(); + for(int i = 0; i<enemies.size(); i++){ + enemies.at(i).draw(lcd); + } + for(int i = 0; i<shots.size(); i++){ + shots.at(i).draw(lcd); + } + p1.draw(lcd); + lcd.refresh(); + } +void updates(Direction dir){ + p1.update(dir); + for(int i = 0; i<shots.size(); i++){ + shots.at(i).update(); + } +} \ No newline at end of file