Updated Game.c to set correctly rank and elminationTurn for player. Updated GameMain to make MenuEndGame work (a little fix will be made to resize but it's functionnal)

origin/fixingSettings
marouault 3 years ago
parent a841982dc5
commit 1a29afc70a

@ -57,19 +57,21 @@ int main(int argc, char *argv[]) {
SDL_GetWindowSize(window, &windowW, &windowH); SDL_GetWindowSize(window, &windowW, &windowH);
size_t nbPlayers = 2; size_t nbPlayers = 2;
Player* players = (Player*)malloc(sizeof(Player)*2); Player players[] = {
/*players[0] = newPlayer("Bépo", PlayerViolet); newPlayer("Bépo", PlayerViolet),
players[1] = newPlayer("Azeryty", PlayerYellow);*/ newPlayer("Azeryty", PlayerYellow),
//players[2] = newPlayer("Adcsg", PlayerRed); //newPlayer("Adcsg", PlayerRed)
};
//players[2] = ;
bool crashed = gameCreationMenu(renderer, &generalState, &fontHandler, windowW, windowH, &players, &nbPlayers); //bool crashed = gameCreationMenu(renderer, &generalState, &fontHandler, windowW, windowH, &players, &nbPlayers);
if (crashed) { /*if (crashed) {
fprintf(stderr,"sorry"); fprintf(stderr,"sorry");
exit(-1); exit(-1);
} }*/
generalState = GS_Game; generalState = GS_Game;
gameView(&generalState, window, renderer, players, nbPlayers); gameView(&generalState, window, renderer, players, nbPlayers);
endGameMenu(&generalState, window, renderer, &fontHandler, players, nbPlayers); endGameMenu(&generalState, window, renderer, &fontHandler, players, nbPlayers);

@ -21,7 +21,7 @@
typedef struct { typedef struct {
char pseudo[PSEUDO_LENMAX]; //< The player's pseudo char pseudo[PSEUDO_LENMAX]; //< The player's pseudo
PlayersColors color; //< The player's Piece' color PlayersColors color; //< The player's Piece' color
int rank; //< The player's rank (0 if the player isn't out yet) int rank; //< The player's rank (1 if the player isn't out yet)
int eliminationTurn; //< When the player has been eliminated (0 if the player isn't out yet) int eliminationTurn; //< When the player has been eliminated (0 if the player isn't out yet)
} Player; } Player;

@ -38,7 +38,7 @@ Game newGame(const size_t nbPlayers, const Player player[])
.phase = PLACEMENT, .phase = PLACEMENT,
.board = newBoard(nbPlayers), .board = newBoard(nbPlayers),
.nbPlayers = nbPlayers, .nbPlayers = nbPlayers,
.lastRank = 0 .lastRank = nbPlayers+1
}; };
for (size_t player_i = 0; player_i < nbPlayers; player_i++) for (size_t player_i = 0; player_i < nbPlayers; player_i++)
@ -59,9 +59,8 @@ Game newGame(const size_t nbPlayers, const Player player[])
void eliminatePlayer(Game* game, const size_t playerId) { void eliminatePlayer(Game* game, const size_t playerId) {
game->arrPlayers[playerId].eliminationTurn = game->nb_rounds; game->arrPlayers[playerId].eliminationTurn = game->nb_rounds;
++game->lastRank; game->arrPlayers[playerId].rank = --game->lastRank;
game->arrPlayers[playerId].rank = game->lastRank; fprintf(stderr, "Rank : %d, %d\n", game->lastRank, game->arrPlayers[playerId].rank);
fprintf(stderr, "Rank : %d\n", game->lastRank);
} }
void endGame(Game* game) { void endGame(Game* game) {
@ -90,7 +89,7 @@ void changePhaseOrPlayerTurn(Game* game)
const size_t lastPlayerId = game->currentPlayerID; const size_t lastPlayerId = game->currentPlayerID;
if (areAllPlayerPiecesStucked(lastPlayerId, game->board.arrPieces, game->board.nbPieces)) { if (areAllPlayerPiecesStucked(lastPlayerId, game->board.arrPieces, game->board.nbPieces)) {
eliminatePlayer(game, lastPlayerId); eliminatePlayer(game, lastPlayerId);
if (game->nbPlayers-1 == game->lastRank) { if (game->lastRank == 2) {
endGame(game); endGame(game);
return; return;
} }
@ -108,15 +107,15 @@ void changePhaseOrPlayerTurn(Game* game)
return; return;
}*/ }*/
if (game->arrPlayers[game->currentPlayerID].rank != 0 && areAllPlayerPiecesStucked(game->currentPlayerID, game->board.arrPieces, game->board.nbPieces)) { if (game->arrPlayers[game->currentPlayerID].eliminationTurn != 0 && areAllPlayerPiecesStucked(game->currentPlayerID, game->board.arrPieces, game->board.nbPieces)) {
eliminatePlayer(game, game->currentPlayerID); eliminatePlayer(game, game->currentPlayerID);
if (game->nbPlayers-1 == game->lastRank) { if (game->lastRank == 2) {
endGame(game); endGame(game);
return; return;
} }
} }
} while (game->arrPlayers[game->currentPlayerID].rank != 0); } while (game->arrPlayers[game->currentPlayerID].eliminationTurn != 0);
fflush(stderr); fflush(stderr);
@ -124,6 +123,7 @@ void changePhaseOrPlayerTurn(Game* game)
if (anyOfPlayersPiecesCanMove(game->currentPlayerID, &game->board)) if (anyOfPlayersPiecesCanMove(game->currentPlayerID, &game->board))
{ {
game->phase = MOVE_PIECE; game->phase = MOVE_PIECE;
game->nb_rounds++;
} }
break; break;
} }
@ -286,13 +286,8 @@ void updatePieceIsolated(Game* game, const Island* island)
{ {
Piece* piecePotentialyIsolated = getPieceFromIsland(game->board.arrPieces, game->board.nbPieces, *island); Piece* piecePotentialyIsolated = getPieceFromIsland(game->board.arrPieces, game->board.nbPieces, *island);
if (piecePotentialyIsolated != NULL && isPieceIsolated(piecePotentialyIsolated, &game->board)) if (piecePotentialyIsolated != NULL && isPieceIsolated(piecePotentialyIsolated, &game->board))
{ // Check is a piece is isolated and then if the player is eliminated { // Check is a piece is isolated //and then if the player is eliminated
piecePotentialyIsolated->stuck = true; piecePotentialyIsolated->stuck = true;
if (areAllPlayerPiecesStucked(piecePotentialyIsolated->idJ, game->board.arrPieces,
game->board.nbPieces))
{
game->arrPlayers[piecePotentialyIsolated->idJ].rank = game->nb_rounds; // TODO : See what we put in rank
}
} }
} }

@ -4,7 +4,7 @@ Player newPlayer(const char pseudo[PSEUDO_LENMAX], const PlayersColors color) {
Player player; Player player;
strcpy(player.pseudo, pseudo); strcpy(player.pseudo, pseudo);
player.color = color; player.color = color;
player.rank = 0; player.rank = 1;
player.eliminationTurn = 0; player.eliminationTurn = 0;
return player; return player;

@ -137,9 +137,12 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
SDL_Delay(5); SDL_Delay(5);
} }
for (size_t i = 0; i<nbPlayers; ++i) {
players[i].rank = game.arrPlayers[i].rank;
players[i].eliminationTurn = game.arrPlayers[i].eliminationTurn;
}
freeTextureHandler(&textureHandler); freeTextureHandler(&textureHandler);
array_Coord_Free(&interactiveCases); array_Coord_Free(&interactiveCases);
freeGameInputProcessor(&inputProcessor); freeGameInputProcessor(&inputProcessor);
SDL_Quit();
} }

@ -163,7 +163,7 @@ PositionSpecifier getTitleRect100(SDL_Rect* labelSize) {
return newPositionSpecifier(&base100, POSX_CENTER, POSY_TOP, ASPECT_KEEP_W); return newPositionSpecifier(&base100, POSX_CENTER, POSY_TOP, ASPECT_KEEP_W);
} }
struct endGameMenuTextLabel createLabels(SDL_Renderer* renderer, const Player players[], const size_t nbPlayers, const SDL_Rect* rect, FontHandler* fontHandler) { struct endGameMenuTextLabel createLabels(SDL_Renderer* renderer, const Player players[], const size_t nbPlayers, FontHandler* fontHandler) {
struct endGameMenuTextLabel labels = { struct endGameMenuTextLabel labels = {
.textLabels = array_TextLabel_Create(), .textLabels = array_TextLabel_Create(),
.positionSpecifiers = array_PositionSpecifier_Create() .positionSpecifiers = array_PositionSpecifier_Create()
@ -173,6 +173,8 @@ struct endGameMenuTextLabel createLabels(SDL_Renderer* renderer, const Player pl
array_TextLabel_AddElement(&labels.textLabels, createTitleLabel(renderer, fontHandler->fonts[FONT_retro])); array_TextLabel_AddElement(&labels.textLabels, createTitleLabel(renderer, fontHandler->fonts[FONT_retro]));
array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getTitleRect100(&array_TextLabel_Last(&labels.textLabels)->textZone)); array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getTitleRect100(&array_TextLabel_Last(&labels.textLabels)->textZone));
return labels; return labels;
} }
@ -200,6 +202,12 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r
}; };
drawEndGameMenu(renderer, players, nbPlayers, &rectMenuEndGame, fontHandler); drawEndGameMenu(renderer, players, nbPlayers, &rectMenuEndGame, fontHandler);
struct endGameMenuTextLabel labels = createLabels(renderer, players, nbPlayers, fontHandler);
for (size_t i=0; i<labels.textLabels.size; ++i) {
labels.textLabels.elems[i].textZone = adaptPosToRect(&labels.positionSpecifiers.elems[i], &rectMenuEndGame);
drawTextLabel(renderer, &labels.textLabels.elems[i]);
}
while(*generalState == GS_EndOfGameMenu) while(*generalState == GS_EndOfGameMenu)
{ {
{ {
@ -232,6 +240,11 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r
}; };
drawEndGameMenu(renderer, players, nbPlayers, &rectM, fontHandler); drawEndGameMenu(renderer, players, nbPlayers, &rectM, fontHandler);
for (size_t i=0; i<labels.textLabels.size; ++i) {
labels.textLabels.elems[i].textZone = adaptPosToRect(&labels.positionSpecifiers.elems[i], &rectM);
drawTextLabel(renderer, &labels.textLabels.elems[i]);
}
//buttonMenuEndGame->rect = adaptPosToRect(&base100, &rectM, POSX_CENTER, POSY_BOTTOM, ASPECT_KEEP_W); //buttonMenuEndGame->rect = adaptPosToRect(&base100, &rectM, POSX_CENTER, POSY_BOTTOM, ASPECT_KEEP_W);
fprintf(stderr, "Resize\n"); fflush(stderr); fprintf(stderr, "Resize\n"); fflush(stderr);
} }

Loading…
Cancel
Save