Написать игру "Быки и коровы" - C (СИ)
Формулировка задачи:
Помогите с этой задачей. Естественно все должно быть на чистом Си
Написать игру «Быки и коровы». Программа "загадывает" четырёхзначное число и играющий должен угадать его. После ввода пользователем числа программа сообщает, сколько цифр числа угадано (быки) и сколько цифр угадано и стоит на нужном месте (коровы). После отгадывания числа на экран необходимо вывести количество сделанных пользователем попыток. В программе необходимо использовать рекурсию.
Решение задачи: «Написать игру "Быки и коровы"»
textual
Листинг программы
#include <iostream> #include <vector> #include "Header_Function.h" //#include "Header.h" using namespace std; int main() { //locales_1251(); clock_t start = clock(); constexpr int index_top = 4; while (1) { vector<int> v, digits(4); srand(time(NULL)); v.push_back(rand() % 9 + 1); for (unsigned index = 1; index < index_top; index++) {//загальний цикл unsigned short random = rand() % 9 + 1; for (short index_bottom = 0; index_bottom < v.size(); index_bottom++) { if (random == v.at(index_bottom)) { random = rand() % 9 + 1; index_bottom = 0; continue; } } v.push_back(random); } /*for (int temp : v) cout << temp;*/ cout << '\n'; int n; while (true) { try { cin >> n; if (n / 1000 < 1 || n / 1000 > 9) throw 2; digits[0] = n / 1000; digits[1] = n / 100 % 10; digits[2] = n / 10 % 10; digits[3] = n % 10; for (short index_up = 0; index_up < index_top; index_up++) for (short index_bottom = index_up + 1; index_bottom < index_top; index_bottom++) if (digits.at(index_up) == digits.at(index_bottom)) throw 1; //Перевірка биків і корів unsigned short cow = 0, ox = 0; //бики for (short index_up = 0; index_up < index_top; index_up++) { if (v.at(index_up) == digits.at(index_up)) { ox++; continue; } //корови for (short index_bottom = 0; index_bottom < index_top; index_bottom++) if (v.at(index_up) == digits.at(index_bottom)) cow++; } if (ox == 4) { cout << "Win!\n"; break; } cout << "Ox: " << ox << "\nCow: " << cow << '\n'; } catch (int c) { if (c == 1) cout << "the same numbers\n"; else if (c == 2) cout << "error: no four-digit number\n"; } } cout << "Game continue?\ty or n"; char symb; start: cin >> symb; if (symb == 'y') continue; else if (symb == 'n') break; else { cout << "Wrong symbol, please enter corect symbol\n"; goto start; } } clock_end(start); system("pause"); return 0; }
Объяснение кода листинга программы
- В начале программы включаются необходимые заголовочные файлы и отключается стандартная библиотека ввода/вывода.
- Затем следует главная функция программы, которая содержит основной игровой цикл.
- В начале цикла создается вектор из 4 случайных чисел от 1 до 9, представляющих коды чисел на игровом поле.
- Далее, с помощью вложенных циклов, проверяется, есть ли одинаковые числа в коде. Если такие числа есть, игра начинается заново.
- Затем пользователю предлагается ввести число от 1000 до 9999.
- Если введенное число не соответствует формату четырехзначного числа, выбрасывается исключение и пользователю выводится сообщение об ошибке.
- Введенное число разбивается на отдельные цифры и сохраняется в векторе.
- Затем происходит проверка наличия одинаковых цифр в коде. Если такие цифры есть, выбрасывается исключение и пользователю выводится сообщение о том, что введены одинаковые числа.
- После этого происходит проверка наличия четырех одинаковых цифр в коде. Если такие цифры есть, выводится сообщение о победе и игра завершается.
- В противном случае выводится количество коров и быков, обнаруженных в коде.
- После этого пользователю предлагается продолжить игру, введя 'y' или 'n'.
- Если пользователь вводит 'y', игра продолжается с начала.
- Если пользователь вводит 'n', игра завершается.
- Если пользователь вводит неверный символ, выводится сообщение об ошибке и пользователю предлагается ввести правильный символ.
- В конце программы выводится общее время работы программы.
- Игра
Быки и коровы
- это классическая игра, в которой пользователю предлагается угадать четырехзначный код, вводя цифры по одной за раз. Цель игры - найти код, содержащий определенное количество коров и быков.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д