Ca compile. J'ai peur maman

This commit is contained in:
Thomas 2021-12-26 16:37:02 +01:00
parent 14fef65b95
commit bb61fbaac3
No known key found for this signature in database
GPG Key ID: E538821A6CDFDAD7
5 changed files with 48 additions and 6 deletions

View File

@ -19,6 +19,8 @@ public:
unsigned torpedo_length; // auto defined from width unsigned torpedo_length; // auto defined from width
unsigned player_width; unsigned player_width;
unsigned alien_speed;
bool loadConfig(); bool loadConfig();
}; };

View File

@ -13,9 +13,11 @@ class Game {
private: private:
PixelManager pm; PixelManager pm;
Config conf; Config conf;
unsigned baseX;
unsigned baseY; position basePos;
aliensGrid grid; aliensGrid grid;
bool direction = true;
vector<missile> missiles; vector<missile> missiles;
vector<torpedo> torpedos; vector<torpedo> torpedos;
unsigned playerX; unsigned playerX;
@ -31,6 +33,7 @@ private:
void moveTorpedos(); void moveTorpedos();
bool checkMissilesAndPlayer(); bool checkMissilesAndPlayer();
bool checkTorpedosAndInvaders(); bool checkTorpedosAndInvaders();
bool invadersTouchFloor();
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();

View File

@ -33,6 +33,16 @@ void Game::deathMenuHandler(){
// potential options... // potential options...
} }
} }
bool Game::invadersTouchFloor(){
for(aliensLine& line : grid){
if(basePos.getY()+line.size()*conf.alien_size>=pm.getScreenHeight()){
return true;
}
}
return false;
}
/** /**
* Plays the game, and returns once the game is finished * Plays the game, and returns once the game is finished
* *
@ -46,7 +56,7 @@ unsigned Game::playGame(){ // returns when game is finished
// GAMELOOP // GAMELOOP
while(true){ while(true){
managePlayer(); managePlayer();
if(manageInvaders())return INVADERS_WINS; if(manageInvaders() && invadersTouchFloor())return INVADERS_WINS;
unsigned res = manageAllCollisions(); // also advances missiles + torpedos unsigned res = manageAllCollisions(); // also advances missiles + torpedos
if(res!=0)return res; if(res!=0)return res;
display(); display();
@ -60,8 +70,8 @@ void Game::display() {
for (unsigned i = 0; i < this->grid.size(); ++i){ for (unsigned i = 0; i < this->grid.size(); ++i){
for (unsigned j = 0; j < this->grid[0].size(); ++j){ for (unsigned j = 0; j < this->grid[0].size(); ++j){
pm.dessinerInvader1(nsGraphics::Vec2D( pm.dessinerInvader1(nsGraphics::Vec2D(
baseX+j*conf.alien_size+j*conf.distance, basePos.getX()+j*conf.alien_size+j*conf.distance,
baseY+i*conf.alien_size+i*conf.distance basePos.getY()+i*conf.alien_size+i*conf.distance
)); ));
} }
} }

View File

@ -11,9 +11,32 @@ void Game::managePlayer(){
/** Makes the invaders play once, and check lower bounds /** Makes the invaders play once, and check lower bounds
* *
* @return true if the invaders crossed the first line of the grid, else false * @return true if the invaders went down from one line (and we should check boundaries), else false
*/ */
bool Game::manageInvaders(){ bool Game::manageInvaders(){
if(direction){ // go to the right
int end = basePos.getX(); // start position
end+= grid.size()*conf.alien_size; // add the aliens
end+= (grid.size()-1)*conf.distance; // add the distance between aliens
// you got the end !
if(end+conf.alien_speed<pm.getScreenWidth()){
basePos.setX(basePos.getX()+conf.alien_speed);
}else{
basePos.setY(basePos.getY()-conf.alien_size);
direction = !direction;
return true;
}
}else{
if(basePos.getX()-conf.alien_size>=0){
basePos.setX(basePos.getX()-conf.alien_speed);
}else{
basePos.setY(basePos.getY()-conf.alien_size);
direction = !direction;
return true;
}
}
return false; return false;
} }

View File

@ -45,4 +45,8 @@ unsigned PixelManager::showDeathMenu() {
unsigned PixelManager::getScreenHeight() { unsigned PixelManager::getScreenHeight() {
return 0; return 0;
}
unsigned PixelManager::getScreenWidth() {
return 0;
} }