You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.7 KiB
C++

#include <iostream>
#include <cstdlib>
#include <time.h>
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;
}