2022-08-12 14:59:08 +01:00
|
|
|
#include <iostream>
|
2022-08-26 13:58:55 +01:00
|
|
|
#include <random>
|
|
|
|
#include <chrono>
|
2022-08-13 00:34:25 +01:00
|
|
|
|
2022-08-26 11:55:54 +01:00
|
|
|
using string = std::string;
|
|
|
|
void ignoreTillLineEnd();
|
|
|
|
string promptfs(string);
|
2022-08-26 12:10:43 +01:00
|
|
|
int promptfi(string);
|
2022-08-15 12:48:53 +01:00
|
|
|
|
2022-08-12 14:59:08 +01:00
|
|
|
int main()
|
|
|
|
{
|
2022-08-26 13:58:55 +01:00
|
|
|
std::mt19937 rand {std::random_device{}()};
|
|
|
|
std::uniform_int_distribution clamp {1, 10};
|
|
|
|
string name {promptfs("Enter your name:")};
|
|
|
|
std::cout << "Hello " << name << ", welcome to guess the number.\n";
|
|
|
|
bool once {};
|
|
|
|
int num {clamp(rand)}, ent {};
|
|
|
|
do {
|
|
|
|
if (once) std::cout << "You Guessed Wrong!\n";
|
|
|
|
ent = promptfi("Enter your guess:");
|
|
|
|
once = true;
|
2022-08-26 12:10:43 +01:00
|
|
|
}
|
2022-08-26 13:58:55 +01:00
|
|
|
while (num != ent);
|
|
|
|
std::cout << "Well done " << name << ", you guessed correctly!\n";
|
2022-08-26 11:55:54 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ignoreTillLineEnd() {
|
|
|
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
|
|
|
}
|
|
|
|
|
|
|
|
string promptfs(string msg) {
|
2022-08-26 13:58:55 +01:00
|
|
|
bool once {};
|
2022-08-26 11:55:54 +01:00
|
|
|
string toret {};
|
|
|
|
do {
|
|
|
|
if (once) {
|
|
|
|
std::cin.clear();
|
2022-08-26 12:10:43 +01:00
|
|
|
ignoreTillLineEnd();
|
|
|
|
std::cout << "Input Failure!\n";
|
|
|
|
}
|
|
|
|
std::cout << msg << "\n";
|
|
|
|
std::cin >> toret;
|
|
|
|
once = true;
|
|
|
|
}
|
|
|
|
while (std::cin.fail());
|
|
|
|
ignoreTillLineEnd();
|
|
|
|
return toret;
|
|
|
|
}
|
|
|
|
|
|
|
|
int promptfi(string msg) {
|
2022-08-26 13:58:55 +01:00
|
|
|
bool once {};
|
2022-08-26 12:10:43 +01:00
|
|
|
int toret {};
|
|
|
|
do {
|
|
|
|
if (once) {
|
|
|
|
std::cin.clear();
|
|
|
|
ignoreTillLineEnd();
|
2022-08-26 11:55:54 +01:00
|
|
|
std::cout << "Input Failure!\n";
|
|
|
|
}
|
|
|
|
std::cout << msg << "\n";
|
|
|
|
std::cin >> toret;
|
|
|
|
once = true;
|
|
|
|
}
|
|
|
|
while (std::cin.fail());
|
2022-08-26 12:10:43 +01:00
|
|
|
ignoreTillLineEnd();
|
2022-08-26 11:55:54 +01:00
|
|
|
return toret;
|
2022-08-12 14:59:08 +01:00
|
|
|
}
|