- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
#include <iostream>
#include <ctime>
#include <random>
#include <windows.h>
#include <cstdint> // Для int8_t;
#include <string>
#include <string_view>
#include <array>
#include <iomanip> // setw();
using namespace std;
const array <string, 94> arr = { "олицетворение", "патология", "субтропики", "лекарь", "предосторожность", "монархист",
"социум", "клякса", "борщевик", "лемур", "старьевщик", "марсельеза", "послушание", "прикол", "шифровка", "фантом", "субмарина",
"гладиолус", "сообщество", "гениальность", "трансформация", "пальпация", "усушка", "благополучие", "капелла", "недоумение",
"траверс", "проныра", "полоскание", "побережье", "закись", "кровопиец", "сыродел", "продвижение", "совместимость", "двойственность",
"сабботаж", "рассылка", "куратор", "прорицание", "синтез", "негодяй", "паралич", "тяжелоатлет", "освободитель", "кунжут",
"мордобой", "ностальгия", "хлорофилл", "первооткрыватель", "гипотенуза", "шкатулка", "психиатр", "маэстро", "прыть",
"пустомеля", "здравоохранение", "алиментщик", "параметр", "аннотация", "пудинг", "прыжок", "пневматика", "штырь", "фасовщик",
"совместитель", "свиновод", "яйцеварка", "зверобой", "тундра", "вогнутость", "рикошет", "компромисс", "фоторепортер",
"кордебалет", "нумизмат", "гипербола", "желтизна", "брезент", "ботфорты", "гостинец", "символист", "акустика", "психика",
"удивление", "уховертка", "снежинка", "меценат", "атомоход", "контрабас", "брюква", "миловидность", "спринтер", "пунктир" };
int randNumber(int min, int max)
{
random_device rd; //Will be used to obtain a seed for the random number engine
mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
uniform_int_distribution<int> distrib(min, max);
return distrib(gen);
}
string_view randString()
{
return (string_view)arr[randNumber(0, arr.size())];
}
void printGuessedChar(string_view input, string_view randWord)
{
for (int i = 0; i < randWord.size(); ++i)
{
for (int j = 0; j < input.size(); ++j)
{
if (randWord[i] == input[j])
{
cout << randWord[i];
break;
}
}
cout << '*';
}
cout << endl;
}
int randNumber(int min, int max)
{
random_device rd; //Will be used to obtain a seed for the random number engine
mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
uniform_int_distribution<int> distrib(min, max);
return distrib(gen);
}
void theGame()
{
cout << "Добро пожаловать в игру 'Виселица'!" << endl;
string_view randWord = randString();
cout << "Компьютер сгенерировал слово" << endl;
cout << "Слово - ";
for (int i = 0; i < randWord.size(); ++i)
{
cout << '*';
};
cout << endl;
int8_t count = 0;
string input;
do
{
cout << "У вас " << 6 - count << " попыток угадать слово." << endl << "Введите букву: ";
if (cin.fail()) // если предыдущее извлечение оказалось неудачным,
{
cin.clear(); // то возвращаем cin в 'обычный' режим работы
cin.ignore(32767, '\n'); // и удаляем значения предыдущего ввода из входного буфера
}
cin >> setw(1) >> input[count];
printGuessedChar(input, randWord);
++count;
} while (count != 6);
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand((unsigned)time(nullptr));
theGame();
}
Заколебался уже с этим кодом. Не получается впихнуть пользовательский ввоз в массив...Первая попытка освоить std::string и std::string_view. Ну и в целом советы по коду приветствуются. Благодарю
//Давайте напишем популярную игру, которая называется «Виселица».В игре вам нужно угадать слово, которое загадала программа, буква за буквой.
//Игрок угадывает одну букву за раз и может ошибиться только 6 раз(после этого он проигрывает).
//Необходимый функционал вашей программы :
//создайте массив слов(например, поместите туда 40 слов) и рандомным образом выберите 1 слово для угадывания;
//программа должна выводить длину всего слова и отображать буквы, которые угадал игрок;
//после каждого неудачного угадывания, программа должна сообщить игроку, сколько у него осталось попыток неверно указать букву, прежде чем он проиграет;
//если человек указал букву, которую ранее уже угадывал, и она не дублируется в слове, то не наказывайте его, а просто предоставьте возможность угадать букву еще раз.
//Например, компьютер загадал слово INTERESTING :
//
//Добро пожаловать в игру "Виселица"!
//Слово - _ _ _ _ _ _ _ _ _ _ _
//Угадайте букву : S
//Верно - _ _ _ _ _ _ S _ _ _ _
//Угадайте следующую букву : F
//Неверно!Такой буквы нет, у вас осталось 5 попыток неверно указать букву!
//...