Ca compile. J'ai peur maman
This commit is contained in:
parent
14fef65b95
commit
bb61fbaac3
@ -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();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -45,4 +45,8 @@ unsigned PixelManager::showDeathMenu() {
|
|||||||
|
|
||||||
unsigned PixelManager::getScreenHeight() {
|
unsigned PixelManager::getScreenHeight() {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned PixelManager::getScreenWidth() {
|
||||||
|
return 0;
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user