ELEC2645 (2018/19) / Mbed 2 deprecated el17dg

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Mon Mar 11 22:07:26 2019 +0000
Revision:
9:5ad5501c702e
Parent:
8:c18c240665aa
Child:
10:f02413ae09fe
I have found a way to make multiple fire shots at the same time. Have moved the blasts into a separate file. I have created a small function in lcd library so that 1 will overwrite 0 on top. Have modified Models folder - moved from .h to .cpp.

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 9:5ad5501c702e 11 #include "stars.h"
Noximilien 9:5ad5501c702e 12 #include "blast.h"
Noximilien 3:10918b0f7a7d 13
Noximilien 9:5ad5501c702e 14 #define MAX_BLASTS (5)
Noximilien 5:2b9181bc5c89 15
Noximilien 5:2b9181bc5c89 16 int x_ship_pos = 0;
Noximilien 5:2b9181bc5c89 17 int y_ship_pos = 24;
Noximilien 7:42376925945c 18
Noximilien 8:c18c240665aa 19 const int ship_speed = 2;
Noximilien 6:100b46be4bea 20
Noximilien 8:c18c240665aa 21 Enemy enemy;
Noximilien 9:5ad5501c702e 22 Stars stars;
Noximilien 9:5ad5501c702e 23
Noximilien 9:5ad5501c702e 24 Blast blasts[MAX_BLASTS];
Noximilien 5:2b9181bc5c89 25
Noximilien 4:02c63aaa2df9 26 bool Game::updateAndDraw() {
Noximilien 6:100b46be4bea 27
Noximilien 6:100b46be4bea 28 shipMovment();
Noximilien 8:c18c240665aa 29 enemy.enemyMovement();
Noximilien 9:5ad5501c702e 30 stars.movingStars1();
Noximilien 9:5ad5501c702e 31 stars.movingStars2();
Noximilien 7:42376925945c 32
Noximilien 6:100b46be4bea 33 if (gamepad.check_event(gamepad.B_PRESSED)){
Noximilien 9:5ad5501c702e 34 fireNewBlast();
Noximilien 6:100b46be4bea 35 }
Noximilien 7:42376925945c 36
Noximilien 9:5ad5501c702e 37 updateAndDrawBlasts();
Noximilien 5:2b9181bc5c89 38
Noximilien 9:5ad5501c702e 39 lcd.drawSpriteOnTop(x_ship_pos, y_ship_pos, spaceship1_width, spaceship1_height, (int *)spaceShip1);
Noximilien 5:2b9181bc5c89 40 /*char buffer[4];
Noximilien 5:2b9181bc5c89 41 sprintf(buffer,"%i\n",(int)(x_dir.read()*84));
Noximilien 5:2b9181bc5c89 42 printf(buffer);*/
Noximilien 3:10918b0f7a7d 43
Noximilien 4:02c63aaa2df9 44 bool want_to_pause = false;
Noximilien 4:02c63aaa2df9 45 if (gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 7:42376925945c 46
Noximilien 4:02c63aaa2df9 47 want_to_pause = true;
Noximilien 4:02c63aaa2df9 48 }
Noximilien 4:02c63aaa2df9 49 return want_to_pause;
Noximilien 4:02c63aaa2df9 50 }
Noximilien 5:2b9181bc5c89 51
Noximilien 5:2b9181bc5c89 52
Noximilien 5:2b9181bc5c89 53 void Game::shipMovment(){ // The position of the ship
Noximilien 5:2b9181bc5c89 54
Noximilien 5:2b9181bc5c89 55 if(x_ship_pos <= 48 && x_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 56 if(x_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 57 x_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 58 }
Noximilien 5:2b9181bc5c89 59 else if(x_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 60 x_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 61 }
Noximilien 5:2b9181bc5c89 62 }
Noximilien 5:2b9181bc5c89 63
Noximilien 5:2b9181bc5c89 64 else if (x_ship_pos <= 48){ x_ship_pos = 0;} //Limits for x direction border IMPROVE IF POSSIBLE.
Noximilien 5:2b9181bc5c89 65 else { x_ship_pos = 48;}
Noximilien 5:2b9181bc5c89 66
Noximilien 5:2b9181bc5c89 67
Noximilien 5:2b9181bc5c89 68 if (y_ship_pos <= (47 - spaceship1_height) && y_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 69 if(y_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 70 y_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 71 }
Noximilien 5:2b9181bc5c89 72 else if(y_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 73 y_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 74 }
Noximilien 5:2b9181bc5c89 75 }
Noximilien 5:2b9181bc5c89 76 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 77 else if (y_ship_pos < 0){ y_ship_pos = 0;}
Noximilien 5:2b9181bc5c89 78
Noximilien 5:2b9181bc5c89 79 }
Noximilien 5:2b9181bc5c89 80
Noximilien 9:5ad5501c702e 81 void Game::fireNewBlast() {
Noximilien 9:5ad5501c702e 82 // Search the array of blasts if inactive we can use it.
Noximilien 9:5ad5501c702e 83 int found_inactive_blast = -1;
Noximilien 9:5ad5501c702e 84 for (int i = 0; i < MAX_BLASTS; ++i) {
Noximilien 9:5ad5501c702e 85 if (!blasts[i].isActive()) {
Noximilien 9:5ad5501c702e 86 found_inactive_blast = i;
Noximilien 9:5ad5501c702e 87 break;
Noximilien 9:5ad5501c702e 88 }
Noximilien 6:100b46be4bea 89 }
Noximilien 9:5ad5501c702e 90
Noximilien 9:5ad5501c702e 91 if (found_inactive_blast != -1) {
Noximilien 9:5ad5501c702e 92 blasts[found_inactive_blast].activate(x_ship_pos + spaceship1_width, y_ship_pos + (spaceship1_height/2));
Noximilien 6:100b46be4bea 93 }
Noximilien 5:2b9181bc5c89 94 }
Noximilien 9:5ad5501c702e 95
Noximilien 9:5ad5501c702e 96 void Game::updateAndDrawBlasts(){
Noximilien 9:5ad5501c702e 97 for (int i = 0; i < MAX_BLASTS; ++i) {
Noximilien 9:5ad5501c702e 98 if (blasts[i].isActive()) {
Noximilien 9:5ad5501c702e 99 blasts[i].updateAndDraw();
Noximilien 9:5ad5501c702e 100 }
Noximilien 9:5ad5501c702e 101 }
Noximilien 9:5ad5501c702e 102 }
Noximilien 9:5ad5501c702e 103