zsgiyurfzei
This commit is contained in:
parent
fac5bc245a
commit
69ba7221d6
@ -5,6 +5,7 @@
|
|||||||
#include "drawEngine.h"
|
#include "drawEngine.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "pos.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -15,13 +16,17 @@ private:
|
|||||||
unsigned baseX;
|
unsigned baseX;
|
||||||
unsigned baseY;
|
unsigned baseY;
|
||||||
aliensGrid grid;
|
aliensGrid grid;
|
||||||
vector<nsGraphics::Vec2D> missiles;
|
vector<pos> missiles;
|
||||||
vector<nsGraphics::Vec2D> torpilles;
|
vector<pos> torpedos;
|
||||||
|
pos player;
|
||||||
|
|
||||||
unsigned manageCollisions();
|
|
||||||
void managePlayer();
|
void managePlayer();
|
||||||
bool manageInvaders();
|
bool manageInvaders();
|
||||||
void display();
|
void display();
|
||||||
|
unsigned manageAllCollisions();
|
||||||
|
void remCollidingProjectiles();
|
||||||
|
void moveMissiles();
|
||||||
|
void moveTorpedos();
|
||||||
public:
|
public:
|
||||||
// in case someone wants to mess with the code, here's a minimal API, costs nothing to us
|
// in case someone wants to mess with the code, here's a minimal API, costs nothing to us
|
||||||
Game();
|
Game();
|
||||||
|
11
headers/pos.h
Normal file
11
headers/pos.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef SPACE_POS_H
|
||||||
|
#define SPACE_POS_H
|
||||||
|
|
||||||
|
#include<mingl/mingl.h>
|
||||||
|
|
||||||
|
class pos : public nsGraphics::Vec2D {
|
||||||
|
public:
|
||||||
|
bool isColliding(pos& p, unsigned rx, unsigned ry);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //SPACE_POS_H
|
@ -2,12 +2,15 @@
|
|||||||
#define SPACE_STRUCTS
|
#define SPACE_STRUCTS
|
||||||
|
|
||||||
#include<vector>
|
#include<vector>
|
||||||
|
#include<mingl/mingl.h>
|
||||||
|
|
||||||
#define PLAYER_WINS 1
|
#define PLAYER_WINS 1
|
||||||
#define INVADERS_WINS 2
|
#define INVADERS_WINS 2
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
#define PLAYER_HEIGHT 100
|
||||||
|
|
||||||
typedef unsigned Alien;
|
typedef unsigned Alien;
|
||||||
typedef vector<Alien> aliensLine;
|
typedef vector<Alien> aliensLine;
|
||||||
typedef vector<aliensLine> aliensGrid;
|
typedef vector<aliensLine> aliensGrid;
|
||||||
|
@ -7,6 +7,9 @@ Game::Game() {
|
|||||||
void Game::managedGames() {
|
void Game::managedGames() {
|
||||||
initialMenuHandler(); // returns when user clicked plays
|
initialMenuHandler(); // returns when user clicked plays
|
||||||
|
|
||||||
|
// ILLEGAL THINGS
|
||||||
|
// conf.grid = ;
|
||||||
|
|
||||||
while(true){
|
while(true){
|
||||||
playGame();
|
playGame();
|
||||||
deathMenuHandler(); // returns when user clicked replay
|
deathMenuHandler(); // returns when user clicked replay
|
||||||
@ -38,14 +41,16 @@ void Game::deathMenuHandler(){
|
|||||||
unsigned Game::playGame(){ // returns when game is finished
|
unsigned Game::playGame(){ // returns when game is finished
|
||||||
// INIT
|
// INIT
|
||||||
grid = conf.grid; // will copy the vector
|
grid = conf.grid; // will copy the vector
|
||||||
|
player.setX()
|
||||||
|
player.setY()
|
||||||
|
|
||||||
// GAMELOOP
|
// GAMELOOP
|
||||||
while(true){
|
while(true){
|
||||||
display();
|
|
||||||
unsigned res = manageCollisions(); // also advances missiles + torpedos
|
|
||||||
if(res!=0)return res;
|
|
||||||
managePlayer();
|
managePlayer();
|
||||||
if(manageInvaders())return INVADERS_WINS;
|
if(manageInvaders())return INVADERS_WINS;
|
||||||
|
unsigned res = manageAllCollisions(); // also advances missiles + torpedos
|
||||||
|
if(res!=0)return res;
|
||||||
|
display();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,59 @@ bool Game::manageInvaders(){
|
|||||||
*
|
*
|
||||||
* @return 1 if the invaders are all dead, 2 if the player is dead, else 0
|
* @return 1 if the invaders are all dead, 2 if the player is dead, else 0
|
||||||
*/
|
*/
|
||||||
unsigned Game::manageCollisions(){
|
|
||||||
|
|
||||||
|
void Game::remCollidingProjectiles(){
|
||||||
|
|
||||||
|
auto i = missiles.begin();
|
||||||
|
auto j = torpedos.begin();
|
||||||
|
|
||||||
|
while(i!=missiles.end()){
|
||||||
|
bool flag = true;
|
||||||
|
while(j!=torpedos.end()){
|
||||||
|
if(*i==*j){
|
||||||
|
missiles.erase(i);
|
||||||
|
torpedos.erase(j);
|
||||||
|
flag = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++j;
|
||||||
|
}
|
||||||
|
if(flag)++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::moveMissiles() {
|
||||||
|
auto i = missiles.begin();
|
||||||
|
while (i != missiles.end()) {
|
||||||
|
if (i->getY() == 0)missiles.erase(i);
|
||||||
|
else if (PLAYER_HEIGHT(me, *i))return INVADERS_WINS;
|
||||||
|
else {
|
||||||
|
++(i->line);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::moveTorpedos() {
|
||||||
|
auto i = torpedos.begin();
|
||||||
|
while (i != torpedos.end()) {
|
||||||
|
i->setY(i->getY()-1);
|
||||||
|
if (i->getY() == NB_LIGNES)torpedo.erase(i);
|
||||||
|
else if (contains(game.invader, *i))return PLAYER_WINS;
|
||||||
|
else ++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Game::manageAllCollisions() {
|
||||||
|
moveMissiles();
|
||||||
|
if(checkMissilesAndPlayer())return INVADERS_WINS;
|
||||||
|
|
||||||
|
remCollidingProjectiles();
|
||||||
|
|
||||||
|
moveTorpedos();
|
||||||
|
|
||||||
|
remCollidingProjectiles();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
6
src/pos.cpp
Normal file
6
src/pos.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "pos.h"
|
||||||
|
#include <mingl/mingl.h>
|
||||||
|
|
||||||
|
bool pos::isColliding(pos& p, unsigned rx, unsigned ry) {
|
||||||
|
return nsGraphics::Vec2D::isColliding(p, p+nsGraphics::Vec2D(rx, ry));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user