ELEC2645 (2018/19) / Mbed 2 deprecated el17dg

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Tue Mar 12 21:46:10 2019 +0000
Revision:
11:cf2ba52e8b7e
Parent:
10:f02413ae09fe
Child:
12:bfe3a3deaac3
Have made medium stars (the same principle as in small star) - This is the code before making the enemy ship with the same method and the background planet.

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 11:cf2ba52e8b7e 12 #include "planet.h"
Noximilien 9:5ad5501c702e 13 #include "blast.h"
Noximilien 3:10918b0f7a7d 14
Noximilien 9:5ad5501c702e 15 #define MAX_BLASTS (5)
Noximilien 11:cf2ba52e8b7e 16 #define MAX_SMALL_STARS (5)
Noximilien 11:cf2ba52e8b7e 17 #define MAX_MEDIUM_STARS (20)
Noximilien 5:2b9181bc5c89 18
Noximilien 5:2b9181bc5c89 19 int x_ship_pos = 0;
Noximilien 5:2b9181bc5c89 20 int y_ship_pos = 24;
Noximilien 11:cf2ba52e8b7e 21 int small_star_delay = 0;
Noximilien 7:42376925945c 22
Noximilien 8:c18c240665aa 23 const int ship_speed = 2;
Noximilien 11:cf2ba52e8b7e 24 const int small_star_delay_max = 3;
Noximilien 6:100b46be4bea 25
Noximilien 8:c18c240665aa 26 Enemy enemy;
Noximilien 9:5ad5501c702e 27
Noximilien 9:5ad5501c702e 28 Blast blasts[MAX_BLASTS];
Noximilien 11:cf2ba52e8b7e 29 Stars small_stars[MAX_SMALL_STARS];
Noximilien 11:cf2ba52e8b7e 30 Stars medium_stars[MAX_MEDIUM_STARS];
Noximilien 11:cf2ba52e8b7e 31
Noximilien 5:2b9181bc5c89 32
Noximilien 4:02c63aaa2df9 33 bool Game::updateAndDraw() {
Noximilien 6:100b46be4bea 34
Noximilien 6:100b46be4bea 35 shipMovment();
Noximilien 8:c18c240665aa 36 enemy.enemyMovement();
Noximilien 7:42376925945c 37
Noximilien 6:100b46be4bea 38 if (gamepad.check_event(gamepad.B_PRESSED)){
Noximilien 9:5ad5501c702e 39 fireNewBlast();
Noximilien 6:100b46be4bea 40 }
Noximilien 11:cf2ba52e8b7e 41 if (small_star_delay == small_star_delay_max){
Noximilien 11:cf2ba52e8b7e 42 //This is dealy between small stars generation.
Noximilien 11:cf2ba52e8b7e 43 newSmallStarFlies();
Noximilien 11:cf2ba52e8b7e 44 newMediumStarFlies();
Noximilien 11:cf2ba52e8b7e 45 small_star_delay = 0;
Noximilien 10:f02413ae09fe 46 }
Noximilien 10:f02413ae09fe 47 else {
Noximilien 11:cf2ba52e8b7e 48 small_star_delay += 1;
Noximilien 10:f02413ae09fe 49 }
Noximilien 7:42376925945c 50
Noximilien 9:5ad5501c702e 51 updateAndDrawBlasts();
Noximilien 11:cf2ba52e8b7e 52 updateAndDrawSmallStars();
Noximilien 11:cf2ba52e8b7e 53 updateAndDrawMediumStars();
Noximilien 5:2b9181bc5c89 54
Noximilien 9:5ad5501c702e 55 lcd.drawSpriteOnTop(x_ship_pos, y_ship_pos, spaceship1_width, spaceship1_height, (int *)spaceShip1);
Noximilien 5:2b9181bc5c89 56 /*char buffer[4];
Noximilien 5:2b9181bc5c89 57 sprintf(buffer,"%i\n",(int)(x_dir.read()*84));
Noximilien 5:2b9181bc5c89 58 printf(buffer);*/
Noximilien 3:10918b0f7a7d 59
Noximilien 4:02c63aaa2df9 60 bool want_to_pause = false;
Noximilien 4:02c63aaa2df9 61 if (gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 7:42376925945c 62
Noximilien 4:02c63aaa2df9 63 want_to_pause = true;
Noximilien 4:02c63aaa2df9 64 }
Noximilien 4:02c63aaa2df9 65 return want_to_pause;
Noximilien 4:02c63aaa2df9 66 }
Noximilien 5:2b9181bc5c89 67
Noximilien 5:2b9181bc5c89 68
Noximilien 5:2b9181bc5c89 69 void Game::shipMovment(){ // The position of the ship
Noximilien 5:2b9181bc5c89 70
Noximilien 5:2b9181bc5c89 71 if(x_ship_pos <= 48 && x_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 72 if(x_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 73 x_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 74 }
Noximilien 5:2b9181bc5c89 75 else if(x_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 76 x_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 77 }
Noximilien 5:2b9181bc5c89 78 }
Noximilien 5:2b9181bc5c89 79
Noximilien 5:2b9181bc5c89 80 else if (x_ship_pos <= 48){ x_ship_pos = 0;} //Limits for x direction border IMPROVE IF POSSIBLE.
Noximilien 5:2b9181bc5c89 81 else { x_ship_pos = 48;}
Noximilien 5:2b9181bc5c89 82
Noximilien 5:2b9181bc5c89 83
Noximilien 5:2b9181bc5c89 84 if (y_ship_pos <= (47 - spaceship1_height) && y_ship_pos >= 0){
Noximilien 5:2b9181bc5c89 85 if(y_dir.read() > 0.6f){
Noximilien 8:c18c240665aa 86 y_ship_pos -= ship_speed;
Noximilien 5:2b9181bc5c89 87 }
Noximilien 5:2b9181bc5c89 88 else if(y_dir.read() < 0.4f){
Noximilien 8:c18c240665aa 89 y_ship_pos += ship_speed;
Noximilien 5:2b9181bc5c89 90 }
Noximilien 5:2b9181bc5c89 91 }
Noximilien 5:2b9181bc5c89 92 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 93 else if (y_ship_pos < 0){ y_ship_pos = 0;}
Noximilien 5:2b9181bc5c89 94
Noximilien 5:2b9181bc5c89 95 }
Noximilien 5:2b9181bc5c89 96
Noximilien 9:5ad5501c702e 97 void Game::fireNewBlast() {
Noximilien 9:5ad5501c702e 98 // Search the array of blasts if inactive we can use it.
Noximilien 9:5ad5501c702e 99 int found_inactive_blast = -1;
Noximilien 9:5ad5501c702e 100 for (int i = 0; i < MAX_BLASTS; ++i) {
Noximilien 9:5ad5501c702e 101 if (!blasts[i].isActive()) {
Noximilien 9:5ad5501c702e 102 found_inactive_blast = i;
Noximilien 9:5ad5501c702e 103 break;
Noximilien 9:5ad5501c702e 104 }
Noximilien 6:100b46be4bea 105 }
Noximilien 9:5ad5501c702e 106
Noximilien 9:5ad5501c702e 107 if (found_inactive_blast != -1) {
Noximilien 9:5ad5501c702e 108 blasts[found_inactive_blast].activate(x_ship_pos + spaceship1_width, y_ship_pos + (spaceship1_height/2));
Noximilien 6:100b46be4bea 109 }
Noximilien 5:2b9181bc5c89 110 }
Noximilien 9:5ad5501c702e 111
Noximilien 9:5ad5501c702e 112 void Game::updateAndDrawBlasts(){
Noximilien 9:5ad5501c702e 113 for (int i = 0; i < MAX_BLASTS; ++i) {
Noximilien 9:5ad5501c702e 114 if (blasts[i].isActive()) {
Noximilien 9:5ad5501c702e 115 blasts[i].updateAndDraw();
Noximilien 9:5ad5501c702e 116 }
Noximilien 9:5ad5501c702e 117 }
Noximilien 9:5ad5501c702e 118 }
Noximilien 9:5ad5501c702e 119
Noximilien 11:cf2ba52e8b7e 120 void Game::newSmallStarFlies() {
Noximilien 10:f02413ae09fe 121 // Search the array of stars if inactive we can use it. - the same as with blasts
Noximilien 11:cf2ba52e8b7e 122 int found_inactive_small_star = -1;
Noximilien 11:cf2ba52e8b7e 123 for (int i = 0; i < MAX_SMALL_STARS; ++i) {
Noximilien 11:cf2ba52e8b7e 124 if (!small_stars[i].isSmallStarActive()) {
Noximilien 11:cf2ba52e8b7e 125 found_inactive_small_star = i;
Noximilien 10:f02413ae09fe 126 break;
Noximilien 10:f02413ae09fe 127 }
Noximilien 10:f02413ae09fe 128 }
Noximilien 10:f02413ae09fe 129
Noximilien 11:cf2ba52e8b7e 130 if (found_inactive_small_star != -1) {
Noximilien 11:cf2ba52e8b7e 131 small_stars[found_inactive_small_star].smallStarActivat(screen_width, rand() % screen_height);
Noximilien 10:f02413ae09fe 132 }
Noximilien 10:f02413ae09fe 133 }
Noximilien 10:f02413ae09fe 134
Noximilien 11:cf2ba52e8b7e 135 void Game::updateAndDrawSmallStars(){
Noximilien 11:cf2ba52e8b7e 136 for (int i = 0; i < MAX_SMALL_STARS; ++i) {
Noximilien 11:cf2ba52e8b7e 137 if (small_stars[i].isSmallStarActive()) {
Noximilien 11:cf2ba52e8b7e 138 small_stars[i].updateAndDrawSmallStar();
Noximilien 10:f02413ae09fe 139 }
Noximilien 10:f02413ae09fe 140 }
Noximilien 10:f02413ae09fe 141 }
Noximilien 10:f02413ae09fe 142
Noximilien 11:cf2ba52e8b7e 143
Noximilien 11:cf2ba52e8b7e 144 void Game::newMediumStarFlies() {
Noximilien 11:cf2ba52e8b7e 145 // Search the array of stars if inactive we can use it. - the same as with blasts
Noximilien 11:cf2ba52e8b7e 146 int found_inactive_medium_star = -1;
Noximilien 11:cf2ba52e8b7e 147 for (int i = 0; i < MAX_MEDIUM_STARS; ++i) {
Noximilien 11:cf2ba52e8b7e 148 if (!medium_stars[i].isMediumStarActive()) {
Noximilien 11:cf2ba52e8b7e 149 found_inactive_medium_star = i;
Noximilien 11:cf2ba52e8b7e 150 break;
Noximilien 11:cf2ba52e8b7e 151 }
Noximilien 11:cf2ba52e8b7e 152 }
Noximilien 11:cf2ba52e8b7e 153
Noximilien 11:cf2ba52e8b7e 154 if (found_inactive_medium_star != -1) {
Noximilien 11:cf2ba52e8b7e 155 medium_stars[found_inactive_medium_star].mediumStarActivat(screen_width, rand() % screen_height); /////////////////////////////////////////// CHANGE
Noximilien 11:cf2ba52e8b7e 156 }
Noximilien 11:cf2ba52e8b7e 157 }
Noximilien 11:cf2ba52e8b7e 158
Noximilien 11:cf2ba52e8b7e 159 void Game::updateAndDrawMediumStars(){
Noximilien 11:cf2ba52e8b7e 160 for (int i = 0; i < MAX_MEDIUM_STARS; ++i) {
Noximilien 11:cf2ba52e8b7e 161 if (medium_stars[i].isMediumStarActive()) {
Noximilien 11:cf2ba52e8b7e 162 medium_stars[i].updateAndDrawMediumStar();
Noximilien 11:cf2ba52e8b7e 163 }
Noximilien 11:cf2ba52e8b7e 164 }
Noximilien 11:cf2ba52e8b7e 165 }