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);
size_t nbPlayers = 2;
Player* players = (Player*)malloc(sizeof(Player)*2);
/*players[0] = newPlayer("Bépo", PlayerViolet);
players[1] = newPlayer("Azeryty", PlayerYellow);*/
//players[2] = newPlayer("Adcsg", PlayerRed);
Player players[] = {
newPlayer("Bépo", PlayerViolet),
newPlayer("Azeryty", PlayerYellow),
//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");
exit(-1);
}
}*/
generalState = GS_Game;
gameView(&generalState, window, renderer, players, nbPlayers);
endGameMenu(&generalState, window, renderer, &fontHandler, players, nbPlayers);

@ -21,7 +21,7 @@
typedef struct {
char pseudo[PSEUDO_LENMAX]; //< The player's pseudo
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)
} Player;

@ -38,7 +38,7 @@ Game newGame(const size_t nbPlayers, const Player player[])
.phase = PLACEMENT,
.board = newBoard(nbPlayers),
.nbPlayers = nbPlayers,
.lastRank = 0
.lastRank = nbPlayers+1
};
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) {
game->arrPlayers[playerId].eliminationTurn = game->nb_rounds;
++game->lastRank;
game->arrPlayers[playerId].rank = game->lastRank;
fprintf(stderr, "Rank : %d\n", game->lastRank);
game->arrPlayers[playerId].rank = --game->lastRank;
fprintf(stderr, "Rank : %d, %d\n", game->lastRank, game->arrPlayers[playerId].rank);
}
void endGame(Game* game) {
@ -90,7 +89,7 @@ void changePhaseOrPlayerTurn(Game* game)
const size_t lastPlayerId = game->currentPlayerID;
if (areAllPlayerPiecesStucked(lastPlayerId, game->board.arrPieces, game->board.nbPieces)) {
eliminatePlayer(game, lastPlayerId);
if (game->nbPlayers-1 == game->lastRank) {
if (game->lastRank == 2) {
endGame(game);
return;
}
@ -108,15 +107,15 @@ void changePhaseOrPlayerTurn(Game* game)
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);
if (game->nbPlayers-1 == game->lastRank) {
if (game->lastRank == 2) {
endGame(game);
return;
}
}
} while (game->arrPlayers[game->currentPlayerID].rank != 0);
} while (game->arrPlayers[game->currentPlayerID].eliminationTurn != 0);
fflush(stderr);
@ -124,6 +123,7 @@ void changePhaseOrPlayerTurn(Game* game)
if (anyOfPlayersPiecesCanMove(game->currentPlayerID, &game->board))
{
game->phase = MOVE_PIECE;
game->nb_rounds++;
}
break;
}
@ -286,13 +286,8 @@ void updatePieceIsolated(Game* game, const Island* island)
{
Piece* piecePotentialyIsolated = getPieceFromIsland(game->board.arrPieces, game->board.nbPieces, *island);
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;
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;
strcpy(player.pseudo, pseudo);
player.color = color;
player.rank = 0;
player.rank = 1;
player.eliminationTurn = 0;
return player;

@ -137,9 +137,12 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
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);
array_Coord_Free(&interactiveCases);
freeGameInputProcessor(&inputProcessor);
SDL_Quit();
}

@ -163,7 +163,7 @@ PositionSpecifier getTitleRect100(SDL_Rect* labelSize) {
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 = {
.textLabels = array_TextLabel_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_PositionSpecifier_AddElement(&labels.positionSpecifiers, getTitleRect100(&array_TextLabel_Last(&labels.textLabels)->textZone));
return labels;
}
@ -200,6 +202,12 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r
};
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)
{
{
@ -231,7 +239,12 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r
.h=inputElement.data.windowSize.h
};
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);
fprintf(stderr, "Resize\n"); fflush(stderr);
}

Loading…
Cancel
Save