Initial publish

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Tue Mar 12 20:41:22 2019 +0000
Revision:
10:f02413ae09fe
Parent:
9:5ad5501c702e
Child:
11:cf2ba52e8b7e
I have made multiple stars flow using the same method I used for blasters.

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 10:f02413ae09fe 15 #define MAX_STARS (5)
Noximilien 5:2b9181bc5c89 16
Noximilien 5:2b9181bc5c89 17 int x_ship_pos = 0;
Noximilien 5:2b9181bc5c89 18 int y_ship_pos = 24;
Noximilien 10:f02413ae09fe 19 int star_delay = 0;
Noximilien 7:42376925945c 20
Noximilien 8:c18c240665aa 21 const int ship_speed = 2;
Noximilien 10:f02413ae09fe 22 const int star_delay_max = 3;
Noximilien 6:100b46be4bea 23
Noximilien 8:c18c240665aa 24 Enemy enemy;
Noximilien 10:f02413ae09fe 25 //Stars stars;
Noximilien 9:5ad5501c702e 26
Noximilien 9:5ad5501c702e 27 Blast blasts[MAX_BLASTS];
Noximilien 10:f02413ae09fe 28 Stars stars[MAX_STARS];
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 10:f02413ae09fe 34 //stars.movingStars1();
Noximilien 10:f02413ae09fe 35 //stars.movingStars2();
Noximilien 7:42376925945c 36
Noximilien 6:100b46be4bea 37 if (gamepad.check_event(gamepad.B_PRESSED)){
Noximilien 9:5ad5501c702e 38 fireNewBlast();
Noximilien 6:100b46be4bea 39 }
Noximilien 10:f02413ae09fe 40 if (star_delay == star_delay_max){
Noximilien 10:f02413ae09fe 41 newStarFlies();
Noximilien 10:f02413ae09fe 42 star_delay = 0;
Noximilien 10:f02413ae09fe 43 }
Noximilien 10:f02413ae09fe 44 else {
Noximilien 10:f02413ae09fe 45 star_delay += 1;
Noximilien 10:f02413ae09fe 46 }
Noximilien 7:42376925945c 47
Noximilien 9:5ad5501c702e 48 updateAndDrawBlasts();
Noximilien 10:f02413ae09fe 49 updateAndDrawStars();
Noximilien 5:2b9181bc5c89 50
Noximilien 9:5ad5501c702e 51 lcd.drawSpriteOnTop(x_ship_pos, y_ship_pos, spaceship1_width, spaceship1_height, (int *)spaceShip1);
Noximilien 5:2b9181bc5c89 52 /*char buffer[4];
Noximilien 5:2b9181bc5c89 53 sprintf(buffer,"%i\n",(int)(x_dir.read()*84));
Noximilien 5:2b9181bc5c89 54 printf(buffer);*/
Noximilien 3:10918b0f7a7d 55
Noximilien 4:02c63aaa2df9 56 bool want_to_pause = false;
Noximilien 4:02c63aaa2df9 57 if (gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 7:42376925945c 58
Noximilien 4:02c63aaa2df9 59 want_to_pause = true;
Noximilien 4:02c63aaa2df9 60 }
Noximilien 4:02c63aaa2df9 61 return want_to_pause;
Noximilien 4:02c63aaa2df9 62 }
Noximilien 5:2b9181bc5c89 63
Noximilien 5:2b9181bc5c89 64
Noximilien 5:2b9181bc5c89 65 void Game::shipMovment(){ // The position of the ship
Noximilien 5:2b9181bc5c89 66
Noximilien 5:2b9181bc5c89 67 if(x_ship_pos <= 48 && x_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 68 if(x_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 69 x_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 70 }
Noximilien 5:2b9181bc5c89 71 else if(x_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 72 x_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 73 }
Noximilien 5:2b9181bc5c89 74 }
Noximilien 5:2b9181bc5c89 75
Noximilien 5:2b9181bc5c89 76 else if (x_ship_pos <= 48){ x_ship_pos = 0;} //Limits for x direction border IMPROVE IF POSSIBLE.
Noximilien 5:2b9181bc5c89 77 else { x_ship_pos = 48;}
Noximilien 5:2b9181bc5c89 78
Noximilien 5:2b9181bc5c89 79
Noximilien 5:2b9181bc5c89 80 if (y_ship_pos <= (47 - spaceship1_height) && y_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 81 if(y_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 82 y_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 83 }
Noximilien 5:2b9181bc5c89 84 else if(y_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 85 y_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 86 }
Noximilien 5:2b9181bc5c89 87 }
Noximilien 5:2b9181bc5c89 88 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 89 else if (y_ship_pos < 0){ y_ship_pos = 0;}
Noximilien 5:2b9181bc5c89 90
Noximilien 5:2b9181bc5c89 91 }
Noximilien 5:2b9181bc5c89 92
Noximilien 9:5ad5501c702e 93 void Game::fireNewBlast() {
Noximilien 9:5ad5501c702e 94 // Search the array of blasts if inactive we can use it.
Noximilien 9:5ad5501c702e 95 int found_inactive_blast = -1;
Noximilien 9:5ad5501c702e 96 for (int i = 0; i < MAX_BLASTS; ++i) {
Noximilien 9:5ad5501c702e 97 if (!blasts[i].isActive()) {
Noximilien 9:5ad5501c702e 98 found_inactive_blast = i;
Noximilien 9:5ad5501c702e 99 break;
Noximilien 9:5ad5501c702e 100 }
Noximilien 6:100b46be4bea 101 }
Noximilien 9:5ad5501c702e 102
Noximilien 9:5ad5501c702e 103 if (found_inactive_blast != -1) {
Noximilien 9:5ad5501c702e 104 blasts[found_inactive_blast].activate(x_ship_pos + spaceship1_width, y_ship_pos + (spaceship1_height/2));
Noximilien 6:100b46be4bea 105 }
Noximilien 5:2b9181bc5c89 106 }
Noximilien 9:5ad5501c702e 107
Noximilien 9:5ad5501c702e 108 void Game::updateAndDrawBlasts(){
Noximilien 9:5ad5501c702e 109 for (int i = 0; i < MAX_BLASTS; ++i) {
Noximilien 9:5ad5501c702e 110 if (blasts[i].isActive()) {
Noximilien 9:5ad5501c702e 111 blasts[i].updateAndDraw();
Noximilien 9:5ad5501c702e 112 }
Noximilien 9:5ad5501c702e 113 }
Noximilien 9:5ad5501c702e 114 }
Noximilien 9:5ad5501c702e 115
Noximilien 10:f02413ae09fe 116 void Game::newStarFlies() {
Noximilien 10:f02413ae09fe 117 // Search the array of stars if inactive we can use it. - the same as with blasts
Noximilien 10:f02413ae09fe 118 int found_inactive_star = -1;
Noximilien 10:f02413ae09fe 119 for (int i = 0; i < MAX_STARS; ++i) {
Noximilien 10:f02413ae09fe 120 if (!stars[i].isActive()) {
Noximilien 10:f02413ae09fe 121 found_inactive_star = i;
Noximilien 10:f02413ae09fe 122 break;
Noximilien 10:f02413ae09fe 123 }
Noximilien 10:f02413ae09fe 124 }
Noximilien 10:f02413ae09fe 125
Noximilien 10:f02413ae09fe 126 if (found_inactive_star != -1) {
Noximilien 10:f02413ae09fe 127 stars[found_inactive_star].activate(screen_width, rand() % screen_height); ///////////////////////////////////////////
Noximilien 10:f02413ae09fe 128 }
Noximilien 10:f02413ae09fe 129 }
Noximilien 10:f02413ae09fe 130
Noximilien 10:f02413ae09fe 131 void Game::updateAndDrawStars(){
Noximilien 10:f02413ae09fe 132 for (int i = 0; i < MAX_STARS; ++i) {
Noximilien 10:f02413ae09fe 133 if (stars[i].isActive()) {
Noximilien 10:f02413ae09fe 134 stars[i].updateAndDraw();
Noximilien 10:f02413ae09fe 135 }
Noximilien 10:f02413ae09fe 136 }
Noximilien 10:f02413ae09fe 137 }
Noximilien 10:f02413ae09fe 138