Initial publish

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Tue Mar 05 15:01:53 2019 +0000
Revision:
6:100b46be4bea
Parent:
5:2b9181bc5c89
Child:
7:42376925945c
I have made the ship firing animation. To do the multiple shots at the same time I need to make "shipFire" int a separate library.

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 3:10918b0f7a7d 10
Noximilien 5:2b9181bc5c89 11 //int x_ship_origin = 0;
Noximilien 5:2b9181bc5c89 12 //int y_ship_origin = 24;
Noximilien 5:2b9181bc5c89 13
Noximilien 5:2b9181bc5c89 14 int x_ship_pos = 0;
Noximilien 5:2b9181bc5c89 15 int y_ship_pos = 24;
Noximilien 6:100b46be4bea 16 int fire_shot_time_counter = 0;
Noximilien 6:100b46be4bea 17 int shot_step_counter = 0;
Noximilien 6:100b46be4bea 18 int fire_shot_traveled = 0;
Noximilien 6:100b46be4bea 19
Noximilien 5:2b9181bc5c89 20 const int ship_step_incremetion = 2;
Noximilien 6:100b46be4bea 21 bool is_fire_shot = false;
Noximilien 6:100b46be4bea 22
Noximilien 5:2b9181bc5c89 23
Noximilien 4:02c63aaa2df9 24 bool Game::updateAndDraw() {
Noximilien 6:100b46be4bea 25
Noximilien 6:100b46be4bea 26 shipMovment();
Noximilien 6:100b46be4bea 27 if (gamepad.check_event(gamepad.B_PRESSED)){
Noximilien 6:100b46be4bea 28 is_fire_shot = true;
Noximilien 6:100b46be4bea 29 }
Noximilien 6:100b46be4bea 30 if (is_fire_shot){
Noximilien 6:100b46be4bea 31 shipFire();
Noximilien 6:100b46be4bea 32 }
Noximilien 5:2b9181bc5c89 33
Noximilien 5:2b9181bc5c89 34
Noximilien 5:2b9181bc5c89 35 lcd.drawSprite(x_ship_pos, y_ship_pos, spaceship1_width, spaceship1_height, spaceShip1);
Noximilien 6:100b46be4bea 36 printf("%i\n", fire_shot_traveled);
Noximilien 5:2b9181bc5c89 37 /*char buffer[4];
Noximilien 5:2b9181bc5c89 38 sprintf(buffer,"%i\n",(int)(x_dir.read()*84));
Noximilien 5:2b9181bc5c89 39 printf(buffer);*/
Noximilien 3:10918b0f7a7d 40
Noximilien 4:02c63aaa2df9 41 bool want_to_pause = false;
Noximilien 4:02c63aaa2df9 42 if (gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 4:02c63aaa2df9 43 want_to_pause = true;
Noximilien 4:02c63aaa2df9 44 }
Noximilien 4:02c63aaa2df9 45 return want_to_pause;
Noximilien 4:02c63aaa2df9 46 }
Noximilien 5:2b9181bc5c89 47
Noximilien 5:2b9181bc5c89 48
Noximilien 5:2b9181bc5c89 49 void Game::shipMovment(){ // The position of the ship
Noximilien 5:2b9181bc5c89 50
Noximilien 5:2b9181bc5c89 51 if(x_ship_pos <= 48 && x_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 52 if(x_dir.read() > 0.6f){
Noximilien 5:2b9181bc5c89 53 x_ship_pos -= ship_step_incremetion;
Noximilien 5:2b9181bc5c89 54 }
Noximilien 5:2b9181bc5c89 55 else if(x_dir.read() < 0.4f){
Noximilien 5:2b9181bc5c89 56 x_ship_pos += ship_step_incremetion;
Noximilien 5:2b9181bc5c89 57 }
Noximilien 5:2b9181bc5c89 58 }
Noximilien 5:2b9181bc5c89 59
Noximilien 5:2b9181bc5c89 60 else if (x_ship_pos <= 48){ x_ship_pos = 0;} //Limits for x direction border IMPROVE IF POSSIBLE.
Noximilien 5:2b9181bc5c89 61 else { x_ship_pos = 48;}
Noximilien 5:2b9181bc5c89 62
Noximilien 5:2b9181bc5c89 63
Noximilien 5:2b9181bc5c89 64 if (y_ship_pos <= (47 - spaceship1_height) && y_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 65 if(y_dir.read() > 0.6f){
Noximilien 5:2b9181bc5c89 66 y_ship_pos -= ship_step_incremetion;
Noximilien 5:2b9181bc5c89 67 }
Noximilien 5:2b9181bc5c89 68 else if(y_dir.read() < 0.4f){
Noximilien 5:2b9181bc5c89 69 y_ship_pos += ship_step_incremetion;
Noximilien 5:2b9181bc5c89 70 }
Noximilien 5:2b9181bc5c89 71 }
Noximilien 5:2b9181bc5c89 72 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 73 else if (y_ship_pos < 0){ y_ship_pos = 0;}
Noximilien 5:2b9181bc5c89 74
Noximilien 5:2b9181bc5c89 75 }
Noximilien 5:2b9181bc5c89 76
Noximilien 5:2b9181bc5c89 77
Noximilien 6:100b46be4bea 78 void Game::shipFire(){ //IMPROVE OR SIMPLIFY
Noximilien 6:100b46be4bea 79 if (fire_shot_time_counter == 0){
Noximilien 6:100b46be4bea 80 lcd.drawSprite((x_ship_pos + spaceship1_width), (y_ship_pos + spaceship1_height/2), 1, 6, simpleLaserShot);
Noximilien 6:100b46be4bea 81
Noximilien 6:100b46be4bea 82 }
Noximilien 6:100b46be4bea 83 else if (fire_shot_time_counter == 2){
Noximilien 6:100b46be4bea 84 shot_step_counter += 3;
Noximilien 6:100b46be4bea 85 fire_shot_traveled = (x_ship_pos + spaceship1_width) + shot_step_counter;
Noximilien 5:2b9181bc5c89 86
Noximilien 6:100b46be4bea 87 lcd.drawSprite((x_ship_pos + spaceship1_width), (y_ship_pos + spaceship1_height/2), 1, 3, simpleLaserShotDissapear);
Noximilien 6:100b46be4bea 88 lcd.drawSprite(fire_shot_traveled, (y_ship_pos + spaceship1_height/2), 1, 3, simpleLaserShot);
Noximilien 6:100b46be4bea 89 fire_shot_time_counter = 0;
Noximilien 6:100b46be4bea 90 }
Noximilien 6:100b46be4bea 91 fire_shot_time_counter += 1;
Noximilien 5:2b9181bc5c89 92
Noximilien 6:100b46be4bea 93 if ( fire_shot_traveled > 84){
Noximilien 6:100b46be4bea 94 fire_shot_time_counter = 0;
Noximilien 6:100b46be4bea 95 shot_step_counter = 0;
Noximilien 6:100b46be4bea 96 fire_shot_traveled = 0;
Noximilien 6:100b46be4bea 97 is_fire_shot = !is_fire_shot;
Noximilien 6:100b46be4bea 98 return;
Noximilien 6:100b46be4bea 99 }
Noximilien 6:100b46be4bea 100
Noximilien 5:2b9181bc5c89 101 }
Noximilien 5:2b9181bc5c89 102
Noximilien 5:2b9181bc5c89 103