tmp commit

This commit is contained in:
Thomas 2022-01-08 14:38:46 +01:00
parent a2c9d40d4d
commit b8c29cad9d
No known key found for this signature in database
GPG Key ID: E538821A6CDFDAD7
5 changed files with 39 additions and 9 deletions

5
README
View File

@ -12,4 +12,7 @@ Afin de limiter l'utilisation du mot const (pour garder une certaine lisibilité
écran : constante 1280x720
Reminder : les missiles sont tirés par les envahisseurs, et les torpilles par le joueur
Reminder : les missiles sont tirés par les envahisseurs, et les torpilles par le joueur
Quelques unes des problèmes rencontrés :
- La sépararation entre l'affichage et la logique nous force à calculer les positions 2 fois (pour le bounc checking, et le l'affichage)'

View File

@ -9,6 +9,9 @@ struct Player{
unsigned deathAnimCounter=0;
unsigned fireCooldown=0;
// TODO remove ?
bool isEliminated();
};
#endif

View File

@ -41,12 +41,16 @@ void Game::displayAll(unsigned fps) const {
}
void Game::displayHearts(playerID pID) const {
unsigned baseX;
if(pID==PLAYER1)baseX = 0;
else baseX = pm.getScreenWidth()-HEART_LENGTH;
unsigned x;
if(pID==PLAYER1)x = 0;
else x = pm.getScreenWidth()-HEART_LENGTH;
unsigned y = GOD_BENCH_SIZE+5;
for(unsigned i=0;i<players[pID].lives;++i){
pm.drawHeart(Position(x, y));
y+=HEART_LENGTH+5;
}
if(players[pID].deathAnimCounter>0){
}
}

View File

@ -2,6 +2,25 @@
#define ISPRESSED(ID, X) window.isPressed({confData.playerDefs[ID].keys.X, false})
void Game::manageOnePlayer(playerID pID){
// manage death
// we do not use isEliminated here because we can handle it better with if/else
/*
* lives = 0 && counter == 0 -> elim
* lives = 1 && counter == 0 -> play
* lives = 0 && counter == 1 -> anim
* lives = 1 && counter == 1 -> anim
*/
if(players[pID].deathAnimCounter==0){
if(players[pID].lives==0)return;
}else{
++players[pID].deathAnimCounter;
}
if (ISPRESSED(pID, left)){
if(players[pID].x < confData.playersSpeed) players[pID].x = 0;
else players[pID].x -= confData.playersSpeed;
@ -21,11 +40,7 @@ void Game::manageOnePlayer(playerID pID){
/** Makes the players play once
*/
void Game::managePlayers(){
manageOnePlayer(0);
if(playMode==PlayMode::TWO_LOCAL)manageOnePlayer(1);
else if(playMode==PlayMode::TWO_TCPIP){
// TODO TCPIP
}
for(unsigned i=0;i<players.size();++i)manageOnePlayer(i);
}
/** Makes the invaders play once, and check lower bounds

5
src/player.cpp Normal file
View File

@ -0,0 +1,5 @@
#include "player.h"
bool Player::isEliminated() {
return lives == 0 && deathAnimCounter == 0;
}