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:
13
hangman.c
13
hangman.c
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user