-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPracticalWork12.cpp
264 lines (226 loc) · 8.38 KB
/
PracticalWork12.cpp
1
2
3
4
5
6
7
8
9
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
// Структура для вопросов
struct Question {
string text;
string options[4];
int correctAnswer;
};
int getRandomNumber(int min, int max);
void showGreeting();
void showMenu();
void showRules();
void changePlayerName(string& playerName);
void changeNumberOfQuestions(int& numQuestions);
void changeInterfaceColor();
void showSettings();
void showQuestion(const Question& question);
bool checkAnswer(const Question& question, char answer);
void playGame();
int main() {
setlocale(LC_ALL, "RU");
srand(time(0)); // Инициализация генератора случайных чисел
showGreeting();
while (true) {
showMenu();
int choice;
cin >> choice;
switch (choice) {
case 1:
playGame();
break;
case 2:
showSettings();
break;
case 3:
showRules();
break;
case 4:
cout << "\n\t\tДо свидания!\n";
return 0;
default:
cout << "\t\tНекорректный ввод.\n";
}
}
return 0;
}
// Функция для генерации случайного числа
int getRandomNumber(int min, int max) {
return rand() % (max - min + 1) + min;
}
// Функция для вывода приветствия
void showGreeting() {
cout << "\n\t\tДобро пожаловать в викторину!\n\n";
}
// Функция для вывода меню
void showMenu() {
cout << "\n\t\tМеню:\n\n";
cout << "\t\t1. Начать игру\n";
cout << "\t\t2. Настройки\n";
cout << "\t\t3. Правила\n";
cout << "\t\t4. Выйти\n\n";
cout << "\t\tВыберите пункт: ";
}
// Функция для вывода правил
void showRules() {
cout << "\n\t\tПравила игры:\n\n";
cout << "\t\t- Вы получаете очки за правильный ответ на вопрос.\n";
cout << "\t\t- Вы проходите дальше за правильный ответ.\n";
cout << "\t\t- Вы теряете жизнь при неправильном ответе.\n\n";
cout << "\t\tНажмите Enter, чтобы вернуться в главное меню...";
cin.ignore();
cin.get();
}
// Функция для изменения имени игрока
void changePlayerName(string& playerName) {
cout << "\n\t\tВведите новое имя игрока: ";
getline(cin, playerName);
cout << "\n\t\tИмя игрока изменено на: " << playerName << endl;
}
// Функция для изменения количества вопросов
void changeNumberOfQuestions(int& numQuestions) {
cout << "\n\t\tВведите количество вопросов (8, 10 или 12): ";
cin >> numQuestions;
while (numQuestions != 8 && numQuestions != 10 && numQuestions != 12) {
cout << "\t\tНекорректный ввод. Введите 8, 10 или 12: ";
cin >> numQuestions;
}
cout << "\n\t\tКоличество вопросов изменено на: " << numQuestions << endl;
}
// Функция для изменения цвета интерфейса (не реализовано)
void changeInterfaceColor() {
cout << "\n\t\tИзменение цвета интерфейса - в разработке...\n";
}
// Функция для вывода настроек
void showSettings() {
string playerName = "Игрок";
int numQuestions = 10;
cout << "\n\t\tНастройки:\n\n";
cout << "\t\t1. Имя игрока: " << playerName << endl;
cout << "\t\t2. Количество вопросов: " << numQuestions << endl;
cout << "\t\t3. Цвет интерфейса\n\n";
cout << "\t\tВыберите пункт (или 0, чтобы вернуться в главное меню): ";
int choice;
cin >> choice;
switch (choice) {
case 1:
changePlayerName(playerName);
break;
case 2:
changeNumberOfQuestions(numQuestions);
break;
case 3:
changeInterfaceColor();
break;
case 0:
break;
default:
cout << "\t\tНекорректный ввод.\n";
}
}
// Функция для вывода вопроса
void showQuestion(const Question& question) {
cout << "\n\t\t" << question.text << endl;
for (int i = 0; i < 4; ++i) {
cout << "\t\t" << char('A' + i) << ". " << question.options[i] << endl;
}
}
// Функция для проверки ответа
bool checkAnswer(const Question& question, char answer) {
return answer == char('A' + question.correctAnswer);
}
// Функция для игры
void playGame() {
string playerName = "Игрок";
int numQuestions = 10;
int lives = 3;
int score = 0;
// Вопросы
vector<Question> questions = {
{
"Системный язык программирования?",
{"Python", "C#", "Ruby", "C++"},
3
},
{
"Язык программирования, используемый для веб-разработки?",
{"C++", "Java", "JavaScript", "Python"},
2
},
{
"Язык программирования, используемый для разработки мобильных приложений?",
{"C#", "Swift", "Kotlin", "Python"},
1
},
{
"Какой язык программирования не является объектно-ориентированным?",
{"C++", "Java", "Python", "C"},
3
},
{
"Какой язык программирования используется для разработки игр?",
{"JavaScript", "Python", "C++", "Java"},
2
},
{
"Какой язык программирования используется для разработки баз данных?",
{"C#", "SQL", "Python", "Java"},
1
},
{
"Какой язык программирования используется для разработки искусственного интеллекта?",
{"Python", "C++", "Java", "C#"},
0
},
{
"Какой язык программирования используется для разработки веб-серверов?",
{"PHP", "Python", "Java", "C#"},
0
},
{
"Какой язык программирования используется для разработки мобильных приложений для Android?",
{"Kotlin", "Swift", "Java", "C#"},
2
},
{
"Какой язык программирования используется для разработки приложений для iOS?",
{"Swift", "Kotlin", "Java", "C#"},
0
}
};
// Генерация случайного порядка вопросов
for (int i = questions.size() - 1; i > 0; --i) {
int j = getRandomNumber(0, i);
swap(questions[i], questions[j]);
}
// Запуск игры
cout << "\n\t\tИгра началась!\n\n";
for (int i = 0; i < numQuestions; ++i) {
cout << "\t\t[+] Игрок: " << playerName << " | Жизни: " << lives << " | Очки: " << score << endl;
showQuestion(questions[i]);
cout << "\t\t[+] Выбрать ответ: ";
char answer;
cin >> answer;
if (checkAnswer(questions[i], answer)) {
cout << "\t\tПравильно! +1 очко.\n";
score++;
}
else {
cout << "\t\tНеправильно! -1 жизнь.\n";
lives--;
}
if (lives == 0) {
cout << "\n\t\tВы проиграли! 😔\n";
break;
}
}
if (lives > 0) {
cout << "\n\t\tВы победили! 🥳\n";
cout << "\t\tОставшиеся жизни: " << lives << endl;
cout << "\t\tНабранные очки: " << score << endl;
}
}