Fixed right/wrong ratio calculation (ratio was calculated with an integer division); "max" will be printed instead of a number when 0 wrong guesses have been made; decimal places of time removed (time is only measured in seconds)

This commit is contained in:
2017-08-24 01:38:07 +02:00
parent 6ad0f0d0b8
commit 7970094e73

View File

@@ -315,8 +315,7 @@ int checkWin(game_state *gs) {
void printGameStats(game_state *gs) {
//clear();
int i, z;
double diff;
diff = difftime(gs->endTime, gs->startTime);
if (!gs->trollEnabled) {
for (z = 0; z <= gs->wordRows; z++) { //<= takes the last row too
for (i = 0; i < gs->maxx; i++) {
@@ -335,16 +334,18 @@ void printGameStats(game_state *gs) {
mvprintw(gs->centery + 1, gs->centerx - (gs->wordLength / 2), gs->guessWord);
} else {
char message[100];
float result = 0;
sprintf(message, "Game won! Total guesses: %i", gs->guesses);
mvprintw(gs->centery, gs->centerx - (strlen(message) / 2), message);
sprintf(message, "Wrong guesses: %i, right/wrong ratio: ", gs->moves);
if (gs->moves != 0) {
result = (float)((gs->guesses - gs->moves) / gs->moves);
sprintf(message + strlen(message), "%.2f", ((double)gs->guesses - (double)gs->moves) / (double)gs->moves);
} else {
result = (float)((gs->guesses - gs->moves) / 1);
sprintf(message + strlen(message), "max");
}
sprintf(message, "Wrong guesses: %i, right/wrong ratio: %.2f, time: %.2fsec", gs->moves, result, diff);
sprintf(message + strlen(message), ", time: %llusec", (unsigned long long)(gs->endTime - gs->startTime));
mvprintw(gs->centery + 1, gs->centerx - (strlen(message) / 2), message);
mvprintw(gs->centery + 2, gs->centerx - (gs->wordLength / 2), gs->guessWord);