#include <stdio.h> #include <time.h> #include <stdlib.h> // Forward declaration for rand_range function, so that main won't get confused int rand_range(int min, int max); int guess_game(int answer, int max_guesses, int min, int max); // The first command line argument is the max # of guesses, // the second and third are the min and max of range respectively int main(int argc, char *argv[]) { // Checking if the proper number of command line args have been passed if(argc != 4) { fprintf(stderr, "Usage: %s <max-guesses> <min> <max>\n", argv[0]); exit(1); } // Parsing command line args as ints int max_guesses = atoi(argv[1]); int min = atoi(argv[2]); int max = atoi(argv[3]); // Choose number and seed random number generator srand(time(NULL)); char c[10]; c[0] = '\0'; while(c[0] != 'n') { int answer = rand_range(min, max); int winlose = guess_game(answer, max_guesses, min, max); if(winlose == 1) { printf("You win.\n"); } else { printf("You lose. The answer is %d\n", answer); } printf("Would you like to play again? "); scanf("%s", c); printf("\n"); } printf("Goodbye\n"); return 0; } // Produces a random number in a specified range // Source: https://www.geeksforgeeks.org/generating-random-number-range-c/ int rand_range(int min, int max) { return (rand() % (max - min + 1)) + min; } int guess_game(int answer, int max_guesses, int min, int max) { int nguesses = 0, guess; // Game loop while(nguesses < max_guesses) { nguesses++; printf("Enter an integer between %d and %d: ", min, max); scanf("%d", &guess); // Check if they guessed correctly if(guess == answer) { // They guessed correctly and win return 1; } else if(guess < answer) { printf("Higher.\n"); } else { printf("Lower.\n"); } } // They are out of guesses and they lose return -1; }