#include #include #include int check_number(std::string number, int* checked_number) { std::size_t pos; *checked_number = std::stoi(number, &pos); // how to properly type check? or is that not necessary? return 0; } int guess(int to_guess) { std::cout << "Take a guess!" << std::endl; std::string guess; std::cin >> guess; int guess_number; int check = check_number(guess, &guess_number); if (check < 0) return check; if (!(guess_number == to_guess)) { if (guess_number < to_guess) std::cout << "Your number is too small." << std::endl; else std::cout << "Your number is too big." << std::endl; return 0; } return 1; } int play(int max) { srand(time(NULL)); int random_number = rand() % (max + 1); int win = 0; int tries = 0; while (win == 0) { tries++; win = guess(random_number); } if (win < 0) return win; return tries; } int main(int argc, char *argv[]) { int max = 10; if (argc > 1) { int check = check_number(argv[1], &max); if (check < 0) return check; std::cout << "Using max of " << max << std::endl; } else std::cout << "Using default max of 10" << std::endl; std::cout << "Do you want to play? (y/n)" << std::endl; std::string answer; std::cin >> answer; if (answer[0] == 'y') { int check = play(max); if (check < 0) { std::cout << "Something went wrong. :/" << std::endl; return check; } else std::cout << "Win after " << check << " tries." << std::endl; } else std::cout << "Good night." << std::endl; return 0; }