ELEC2645 (2018/19) / Mbed 2 deprecated el17dg

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Mon Mar 11 14:48:49 2019 +0000
Revision:
8:c18c240665aa
Parent:
7:42376925945c
Child:
9:5ad5501c702e
Have made a foe ship to appear at random y-position and slowly moving towards the player (speed is adjustable). ; ; Need to make the ship to fire and create the background.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Noximilien 3:10918b0f7a7d 1
Noximilien 3:10918b0f7a7d 2
Noximilien 3:10918b0f7a7d 3 #include "mbed.h"
Noximilien 3:10918b0f7a7d 4 #include "N5110.h"
Noximilien 3:10918b0f7a7d 5 #include "Gamepad.h"
Noximilien 3:10918b0f7a7d 6
Noximilien 3:10918b0f7a7d 7 #include "models.h"
Noximilien 4:02c63aaa2df9 8 #include "main.h"
Noximilien 4:02c63aaa2df9 9 #include "game.h"
Noximilien 8:c18c240665aa 10 #include "enemy.h"
Noximilien 3:10918b0f7a7d 11
Noximilien 5:2b9181bc5c89 12 //int x_ship_origin = 0;
Noximilien 5:2b9181bc5c89 13 //int y_ship_origin = 24;
Noximilien 5:2b9181bc5c89 14
Noximilien 5:2b9181bc5c89 15 int x_ship_pos = 0;
Noximilien 5:2b9181bc5c89 16 int y_ship_pos = 24;
Noximilien 7:42376925945c 17
Noximilien 6:100b46be4bea 18 int fire_shot_time_counter = 0;
Noximilien 6:100b46be4bea 19 int shot_step_counter = 0;
Noximilien 6:100b46be4bea 20 int fire_shot_traveled = 0;
Noximilien 7:42376925945c 21 int start_blast_x_position = 0;
Noximilien 7:42376925945c 22 int start_blast_y_position = 0;
Noximilien 6:100b46be4bea 23
Noximilien 8:c18c240665aa 24 const int ship_speed = 2;
Noximilien 8:c18c240665aa 25 const int blaster_speed = 2;
Noximilien 6:100b46be4bea 26 bool is_fire_shot = false;
Noximilien 6:100b46be4bea 27
Noximilien 8:c18c240665aa 28 Enemy enemy;
Noximilien 5:2b9181bc5c89 29
Noximilien 4:02c63aaa2df9 30 bool Game::updateAndDraw() {
Noximilien 6:100b46be4bea 31
Noximilien 6:100b46be4bea 32 shipMovment();
Noximilien 8:c18c240665aa 33 enemy.enemyMovement();
Noximilien 7:42376925945c 34
Noximilien 6:100b46be4bea 35 if (gamepad.check_event(gamepad.B_PRESSED)){
Noximilien 6:100b46be4bea 36 is_fire_shot = true;
Noximilien 7:42376925945c 37 start_blast_x_position = x_ship_pos + spaceship1_width;
Noximilien 7:42376925945c 38 start_blast_y_position = y_ship_pos + (spaceship1_height/2); /////////////////////////////////////////////
Noximilien 6:100b46be4bea 39 }
Noximilien 7:42376925945c 40
Noximilien 8:c18c240665aa 41 if (is_fire_shot){ shipFire(); }
Noximilien 5:2b9181bc5c89 42
Noximilien 8:c18c240665aa 43 lcd.drawSprite(x_ship_pos, y_ship_pos, spaceship1_width, spaceship1_height, (int *)spaceShip1);
Noximilien 6:100b46be4bea 44 printf("%i\n", fire_shot_traveled);
Noximilien 5:2b9181bc5c89 45 /*char buffer[4];
Noximilien 5:2b9181bc5c89 46 sprintf(buffer,"%i\n",(int)(x_dir.read()*84));
Noximilien 5:2b9181bc5c89 47 printf(buffer);*/
Noximilien 3:10918b0f7a7d 48
Noximilien 4:02c63aaa2df9 49 bool want_to_pause = false;
Noximilien 4:02c63aaa2df9 50 if (gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 7:42376925945c 51
Noximilien 4:02c63aaa2df9 52 want_to_pause = true;
Noximilien 4:02c63aaa2df9 53 }
Noximilien 4:02c63aaa2df9 54 return want_to_pause;
Noximilien 4:02c63aaa2df9 55 }
Noximilien 5:2b9181bc5c89 56
Noximilien 5:2b9181bc5c89 57
Noximilien 5:2b9181bc5c89 58 void Game::shipMovment(){ // The position of the ship
Noximilien 5:2b9181bc5c89 59
Noximilien 5:2b9181bc5c89 60 if(x_ship_pos <= 48 && x_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 61 if(x_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 62 x_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 63 }
Noximilien 5:2b9181bc5c89 64 else if(x_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 65 x_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 66 }
Noximilien 5:2b9181bc5c89 67 }
Noximilien 5:2b9181bc5c89 68
Noximilien 5:2b9181bc5c89 69 else if (x_ship_pos <= 48){ x_ship_pos = 0;} //Limits for x direction border IMPROVE IF POSSIBLE.
Noximilien 5:2b9181bc5c89 70 else { x_ship_pos = 48;}
Noximilien 5:2b9181bc5c89 71
Noximilien 5:2b9181bc5c89 72
Noximilien 5:2b9181bc5c89 73 if (y_ship_pos <= (47 - spaceship1_height) && y_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 74 if(y_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 75 y_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 76 }
Noximilien 5:2b9181bc5c89 77 else if(y_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 78 y_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 79 }
Noximilien 5:2b9181bc5c89 80 }
Noximilien 5:2b9181bc5c89 81 else if (y_ship_pos >= (47 - spaceship1_height)){ y_ship_pos = 47 - spaceship1_height;} //Limits for y direction border IMPROVE IF POSSIBLE.
Noximilien 5:2b9181bc5c89 82 else if (y_ship_pos < 0){ y_ship_pos = 0;}
Noximilien 5:2b9181bc5c89 83
Noximilien 5:2b9181bc5c89 84 }
Noximilien 5:2b9181bc5c89 85
Noximilien 5:2b9181bc5c89 86
Noximilien 7:42376925945c 87
Noximilien 7:42376925945c 88
Noximilien 7:42376925945c 89 void Game::shipFire(){ //IMPROVE OR SIMPLIFY - Make it into a spearate class so that I could do multiple shots at the same time.
Noximilien 7:42376925945c 90
Noximilien 6:100b46be4bea 91 if (fire_shot_time_counter == 0){
Noximilien 8:c18c240665aa 92 lcd.drawSprite(start_blast_x_position, (start_blast_y_position), 1, 3, (int *)simpleLaserShot);
Noximilien 6:100b46be4bea 93
Noximilien 6:100b46be4bea 94 }
Noximilien 7:42376925945c 95 else if (fire_shot_time_counter == 1){ ///////////////////////////////////////////////////////////////////////////////////////////////////
Noximilien 8:c18c240665aa 96 lcd.drawSprite(fire_shot_traveled, (start_blast_y_position), 1, 3, (int *)simpleLaserShotDissapear);
Noximilien 7:42376925945c 97
Noximilien 8:c18c240665aa 98 shot_step_counter += blaster_speed;
Noximilien 7:42376925945c 99 fire_shot_traveled = start_blast_x_position + shot_step_counter;
Noximilien 5:2b9181bc5c89 100
Noximilien 8:c18c240665aa 101 lcd.drawSprite(fire_shot_traveled, (start_blast_y_position), 1, 3, (int *)simpleLaserShot);
Noximilien 7:42376925945c 102
Noximilien 6:100b46be4bea 103 fire_shot_time_counter = 0;
Noximilien 6:100b46be4bea 104 }
Noximilien 6:100b46be4bea 105 fire_shot_time_counter += 1;
Noximilien 5:2b9181bc5c89 106
Noximilien 6:100b46be4bea 107 if ( fire_shot_traveled > 84){
Noximilien 7:42376925945c 108
Noximilien 6:100b46be4bea 109 fire_shot_time_counter = 0;
Noximilien 6:100b46be4bea 110 shot_step_counter = 0;
Noximilien 6:100b46be4bea 111 fire_shot_traveled = 0;
Noximilien 6:100b46be4bea 112
Noximilien 7:42376925945c 113 is_fire_shot = !is_fire_shot;
Noximilien 7:42376925945c 114 }
Noximilien 5:2b9181bc5c89 115 }