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 player_width;
unsigned alien_speed;
bool loadConfig();
};

View File

@ -13,9 +13,11 @@ class Game {
private:
PixelManager pm;
Config conf;
unsigned baseX;
unsigned baseY;
position basePos;
aliensGrid grid;
bool direction = true;
vector<missile> missiles;
vector<torpedo> torpedos;
unsigned playerX;
@ -31,6 +33,7 @@ private:
void moveTorpedos();
bool checkMissilesAndPlayer();
bool checkTorpedosAndInvaders();
bool invadersTouchFloor();
public:
// in case someone wants to mess with the code, here's a minimal API, costs nothing to us
Game();

View File

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

View File

@ -46,3 +46,7 @@ unsigned PixelManager::showDeathMenu() {
unsigned PixelManager::getScreenHeight() {
return 0;
}
unsigned PixelManager::getScreenWidth() {
return 0;
}