CA COMPIIIIILE

This commit is contained in:
Thomas 2021-12-16 13:49:49 +01:00
parent a39266b044
commit fac5bc245a
No known key found for this signature in database
GPG Key ID: E538821A6CDFDAD7
10 changed files with 70 additions and 33 deletions

View File

@ -9,7 +9,7 @@ file(GLOB_RECURSE HEADERS headers/*)
add_executable(Space ${LIB_HEADERS} ${HEADERS} ${SRC}) add_executable(Space ${LIB_HEADERS} ${HEADERS} ${SRC})
# target_link_directories(Space PUBLIC libs) target_link_directories(Space PUBLIC .)
target_include_directories(Space PUBLIC headers) target_include_directories(Space PUBLIC headers)
target_include_directories(Space PUBLIC lib_headers) target_include_directories(Space PUBLIC lib_headers)

View File

@ -2,14 +2,18 @@
#define GUARD_CONFIG #define GUARD_CONFIG
#include<vector> #include<vector>
#include "utils.h"
using namespace std; using namespace std;
struct Config{ class Config{
public:
aliensGrid grid; aliensGrid grid;
unsigned alien_size; unsigned alien_size;
unsigned distance; unsigned distance;
bool loadConfig();
}; };
#endif #endif

View File

@ -10,9 +10,13 @@
class DrawEngine{ class DrawEngine{
public: public:
MinGL window; MinGL window;
DrawEngine();
void dessinerInvader1(const nsGraphics::Vec2D& baseVector); void dessinerInvader1(const nsGraphics::Vec2D& baseVector);
void dessinerInvader2(const nsGraphics::Vec2D& baseVector); void dessinerInvader2(const nsGraphics::Vec2D& baseVector);
void dessinerInvader3(const nsGraphics::Vec2D& baseVector); void dessinerInvader3(const nsGraphics::Vec2D& baseVector);
unsigned showInitialMenu();
unsigned showDeathMenu();
}; };

View File

@ -4,13 +4,10 @@
#include "mingl/mingl.h" #include "mingl/mingl.h"
#include "drawEngine.h" #include "drawEngine.h"
#include "config.h" #include "config.h"
#include "utils.h"
using namespace std; using namespace std;
typedef unsigned Alien;
typedef vector<Alien> aliensLine;
typedef vector<aliensLine> aliensGrid;
class Game { class Game {
private: private:
DrawEngine drawer; DrawEngine drawer;
@ -21,22 +18,17 @@ private:
vector<nsGraphics::Vec2D> missiles; vector<nsGraphics::Vec2D> missiles;
vector<nsGraphics::Vec2D> torpilles; vector<nsGraphics::Vec2D> torpilles;
void loadConfig();
unsigned manageCollisions(); unsigned manageCollisions();
void managePlayer(); void managePlayer();
bool manageInvaders(); bool manageInvaders();
void display(); void display();
void summon();
void deleteEntity();
void invaderMovement();
void torpilleMovement();
void collision();
void userInteraction();
public: public:
// in case someone wants to mess with the code, here's a minimal API, costs nothing to us
Game(); Game();
void managedGame(); void managedGames();
void playGame(); unsigned playGame();
void initialMenuHandler();
void deathMenuHandler();
}; };

15
headers/utils.h Normal file
View File

@ -0,0 +1,15 @@
#ifndef SPACE_STRUCTS
#define SPACE_STRUCTS
#include<vector>
#define PLAYER_WINS 1
#define INVADERS_WINS 2
using namespace std;
typedef unsigned Alien;
typedef vector<Alien> aliensLine;
typedef vector<aliensLine> aliensGrid;
#endif

5
src/config.cpp Normal file
View File

@ -0,0 +1,5 @@
#include "config.h"
bool Config::loadConfig() {
return true;
}

View File

@ -1,6 +1,8 @@
#include "drawEngine.h" #include "drawEngine.h"
void DrawEngine::DrawEngine(){ #define WININIT window("space invader du turfu ma gueule", nsGraphics::Vec2D(1280, 720), nsGraphics::Vec2D(128, 128), nsGraphics::KBlack)
DrawEngine::DrawEngine() : WININIT {
window.initGlut(); window.initGlut();
window.initGraphic(); window.initGraphic();
} }
@ -32,3 +34,11 @@ void DrawEngine::dessinerInvader3(const nsGraphics::Vec2D& baseVector){
window << nsShape::Rectangle(nsGraphics::Vec2D(35, 65)+baseVector, nsGraphics::Vec2D(75, 72)+baseVector, nsGraphics::KBlack); window << nsShape::Rectangle(nsGraphics::Vec2D(35, 65)+baseVector, nsGraphics::Vec2D(75, 72)+baseVector, nsGraphics::KBlack);
} }
unsigned DrawEngine::showInitialMenu(){
return 0;
}
unsigned DrawEngine::showDeathMenu() {
return 0;
}

View File

@ -1,26 +1,33 @@
#include "game.h" #include "game.h"
Game::Game() : Game::Game() {
window("space invader du turfu ma gueule", nsGraphics::Vec2D(1280, 720), nsGraphics::Vec2D(128, 128), nsGraphics::KBlack) { conf.loadConfig();
loadConfig();
} }
void Game::managedGame() { void Game::managedGames() {
initialMenuHandler(); // returns when user clicked plays initialMenuHandler(); // returns when user clicked plays
while(true){ while(true){
playGame(); playGame();
deathScrenHandler(); // returns when user clicked replay deathMenuHandler(); // returns when user clicked replay
} }
} }
void Game::showInitialMenu(){ void Game::initialMenuHandler(){
switch(pixelManager.showInitialMenu()){ switch(drawer.showInitialMenu()){
case 0:{ // play case 0:{ // play
return; return;
} }
// potential options... // potential options...
}
}
void Game::deathMenuHandler(){
switch(drawer.showDeathMenu()){
case 0:{ // play
return;
}
// potential options...
} }
} }
/** /**
@ -30,15 +37,15 @@ void Game::showInitialMenu(){
*/ */
unsigned Game::playGame(){ // returns when game is finished unsigned Game::playGame(){ // returns when game is finished
// INIT // INIT
aliens = conf.grid; // will copy the vector grid = conf.grid; // will copy the vector
// GAMELOOP // GAMELOOP
while(true){ while(true){
display(); display();
unsigned res = manageCollisions(game); // also advances missiles + torpedos unsigned res = manageCollisions(); // also advances missiles + torpedos
if(res!=0)return res; if(res!=0)return res;
managePlayer(game); managePlayer();
if(manageInvalider(game))return INVADER_WINS; if(manageInvaders())return INVADERS_WINS;
} }
} }

View File

@ -16,8 +16,8 @@ bool Game::manageInvaders(){
/** makes projectile smove, and manage collisions between everything /** makes projectile smove, and manage collisions between everything
* *
* @return true if the invaders crossed the first line of the grid, else false * @return 1 if the invaders are all dead, 2 if the player is dead, else 0
*/ */
unsigned Game::manageCollisions(){ unsigned Game::manageCollisions(){
return 0;
} }

View File

@ -4,6 +4,6 @@ using namespace std;
int main(){ int main(){
Game g; Game g;
g.managedGame(); g.managedGames();
return 0; return 0;
} }