FP ДЗ 08 01
FP ДЗ 08 01
FP ДЗ 08 01
ЗАДАНИЕ 1
Написать программу, которая выводит на экран линию
заданным символом, вертикальную или горизонтальную, при-
чем линия может выводиться быстро, нормально и медленно.
Общение с пользователем организовать через меню.
Если у Вас возникли сложности с выполнением дан-
Подсказка 1 ного задания, нажмите кнопку «Подсказка». С полным Решение 1
решением задания вы сможете ознакомиться, нажав
на кнопку «Решение»
ЗАДАНИЕ 2
Написать игру «Кубики». Пользователь и компьютер по
очереди бросают 2 кубика. Победитель — тот, у кого по резуль-
татам трех бросков сумма больше. Предусмотреть красивый
интерфейс игры.
Если у Вас возникли сложности с выполнением дан-
Подсказка 2 ного задания, нажмите кнопку «Подсказка». С полным Решение 2
решением задания вы сможете ознакомиться, нажав
на кнопку «Решение»
ЗАДАНИЕ 3
Написать игру «GUESS MY NUMBER». Пользователь
угадывает число, которое «загадал» компьютер. Возможны
2 уровня сложности: на первом уровне число от 1 до 10, на
втором от 10 до 100. В начале игры пользователь выбирает
уровень.
1
Неделя 8
ЗАДАНИЕ 4
Модифицировать игру «GUESS MY NUMBER» следующим
образом:
■■ пользователь не выбирает уровень, т. к. переход ко второму
уровню возможен только после завершения первого без
проигрыша (если игрок желает продолжать);
■■ первый уровень длится три раунда (на каждом раунде
загадывается новое число), а второй — два раунда. Новые
жизни начисляются игроку перед новым раундом.
■■ если пользователь проиграл раунд, то компьютеру на-
числяются очки за раунд в размере начальные жизни
2
Неделя 8
3
Подсказка к заданию 1 Вернуться
ПОДСКАЗКА К ЗАДАНИЮ 1
1. Вывод линии представляет собой последовательность
(повторение операции) выводов символа, который задал
пользователь, определенной длины, поэтому необходимо
использовать цикл.
2. Если известно количество повторений (длина линии в
символах), какой тип цикла следует использовать?
3. Для формирования вертикальной линии каждый символ
линии должен выводиться с новой строки.
4. Для задания скорости отображения линии можно ис-
пользовать задержку между операциями вывода.
5. Если задержка необходима перед операцией вывода сле-
дует ли данную команду помещать в цикл?
4
Подсказка к заданию 2 Вернуться
ПОДСКАЗКА К ЗАДАНИЮ 2
5
Подсказка к заданию 3 Вернуться
ПОДСКАЗКА К ЗАДАНИЮ 3
6
Решение задания 1 Вернуться
РЕШЕНИЕ ЗАДАНИЯ 1
Описание решения
Вначале необходимо спросить у пользователя символ, на
основе которого он желает формировать линию.
Далее переходим к созданию меню, которое будет отобра-
жаться пользователю в два этапа: вначале для выбора скорости
рисования, затем для выбора типа линии.
Соблюдение такой последовательности этапов отображения
и выбора пунктов меню (пользовательских настроек линии)
позволит установить задержку между выводами символов,
которую далее необходимо использовать уже при рисовании
линии (в зависимости от типа, указанного пользователем на
втором этапе работы с меню).
Для реализации каждого этапа меню пользователю необ-
ходимо вывести номера пунктов меню и их описание, чтобы
он ввел нужный ему код пункта меню.
Если пользователь выбрал первый пункт меню (медленно),
то устанавливаем большую длительность задержки, например,
1000 (1 секунда).
Если пользователь выбрал второй пункт меню (нормально),
то устанавливаем среднюю длительность задержки, например,
500 (0,5 секунды).
Если пользователь выбрал третий пункт меню (быстро),
то устанавливаем нулевую длительность задержки, т е. линия
отобразится мгновенно.
Если пользователь ввел непредусмотренный номер пункта
меню, то выводим сообщение об ошибке и устанавливаем нулевую
длительность задержки (задержка по умолчанию отсутствует).
7
Решение задания 1 Вернуться
8
Решение задания 1 Вернуться
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout << "Home task #8.1.1\n\n";
char userSymbol;
int lineType, speedID, delay;
return 0;
}
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout << "Home task #8.1.1\n\n";
char userSymbol;
int lineType, speedID, delay;
9
Решение задания 1 Вернуться
return 0;
}
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout << "Home task #8.1.1\n\n";
char userSymbol;
10
Решение задания 1 Вернуться
switch (speedID)
{
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
break;
}
default:
}
return 0;
}
11
Решение задания 1 Вернуться
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout << "Home task #8.1.1\n\n";
char userSymbol;
int lineType, speedID, delay;
12
Решение задания 1 Вернуться
switch (speedID)
{
case 1:
{
delay = 1000;
break;
}
case 2:
{
delay = 500;
break;
}
case 3:
{
delay = 0;
break;
}
default:
cout << "Wrong speed ID!"<<"\n";
cout << "The line will be drawn quickly!";
cout << "\n";
delay = 0;
}
return 0;
}
13
Решение задания 1 Вернуться
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
cout << "Home task #8.1.1\n\n";
char userSymbol;
int lineType, speedID, delay;
switch (speedID)
{
case 1:
{
delay = 1000;
break;
}
case 2:
{
delay = 500;
break;
}
14
Решение задания 1 Вернуться
case 3:
{
delay = 0;
break;
}
default:
cout << "Wrong speed ID!"<<"\n";
cout << "The line will be drawn quickly!";
cout << "\n";
delay = 0;
}
cout << "Select line type:\n";
cout << "1- vertical line \n";
cout << "2- horisontal line \n";
cin >> lineType;
switch (lineType)
{
case 1:
{
break;
}
case 2:
{
break;
}
default:
}
return 0;
}
15
Решение задания 1 Вернуться
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout << "Home task #8.1.1\n\n";
char userSymbol;
int lineType, speedID, delay;
16
Решение задания 1 Вернуться
switch (speedID)
{
case 1:
{
delay = 1000;
break;
}
case 2:
{
delay = 500;
break;
}
case 3:
{
delay = 0;
break;
}
default:
cout << "Wrong speed ID!"<<"\n";
cout << "The line will be drawn quickly!";
cout << "\n";
delay = 0;
}
17
Решение задания 1 Вернуться
switch (lineType)
{
case 1:
{
for (int i = 0; i < 10; i++)
{
Sleep(delay);
cout << userSymbol << "\n";
}
break;
}
case 2:
{
for (int i = 0; i < 10; i++)
{
Sleep(delay);
cout << userSymbol;
}
break;
}
default:
cout << "Wrong line type!"<<"\n";
cout << "The horisontal line will be drawn!";
cout << "\n";
return 0;
}
18
Решение задания 1 Вернуться
Рисунок 1
19
Решение задания 1 Вернуться
Рисунок 2
■■ Тест 3 — пользователь выбрал третий пункт первого меню
(быстро) и ввел произвольный символ вместо пункта
второго меню
Рисунок 3
20
Решение задания 1 Вернуться
Рисунок 4
21
Решение задания 2 Вернуться
РЕШЕНИЕ ЗАДАНИЯ 2
Описание решения
Вначале реализуем цикл для повторения вывода меню игры.
Это будет цикл с постусловием, так как вначале необходимо
хотя бы раз отобразить меню, а потом проверять, следует ли
его повторять. Повторение вывода меню происходит, если
пользователь ввел непредусмотренный элемент меню или
после игры. Для остановки процесса вывода меню следует
предусмотреть пункт «Выход из игры».
Меню будет содержать два пункта: 1 — начать игру; 2 —
выход.
В случае, если пользователь выбрал первый пункт меню,
определяем, кто будет ходить первым.
Для этого игрок и компьютер по очереди бросают один
кубик (генерируем последовательно два числа). У кого выпало
большее число, тот первый и ходит.
Также после каждого броска (пользователя или компьюте-
ра) нужно выводить в консоль соответствующее изображение
выпавшей стороны кубика.
В случае, если у пользователя и компьютера выпало оди-
наковое число, повторяем пробный бросок, пока не выпадут
разные стороны кубика.
Организуем цикл на три раунда.
В каждом раунде по очереди (в зависимости от того, кто
ходит первый) игрок и компьютер «бросают» два кубика (ге-
нерируем для каждого игрока по два числа в раунде).
Счет (очки) каждого игрока обновляется после каждого
раунда, увеличивается на сумму выпавших чисел.
22
Решение задания 2 Вернуться
23
Решение задания 2 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
BotPoints = 0;
return 0;
}
24
Решение задания 2 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
break;
}
case 2:
{
cout << "See you!";
break;
25
Решение задания 2 Вернуться
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 2);
return 0;
26
Решение задания 2 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
do
{
cout << "Determining the order "
"of play\n";
27
Решение задания 2 Вернуться
break;
}
case 2:
{
28
Решение задания 2 Вернуться
return 0;
}
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
29
Решение задания 2 Вернуться
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
do
{
cout << "Determining the order "
"of play\n";
cout << "Player is rolling "
"the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
cout << "Player's result is ";
cout << Dice1 << "\n";
cout << "Bot is rolling "
"the dice...\n";
Sleep(1000);
Dice2 = 1 + rand() % 5;
cout << "Bot's result is " << Dice2;
cout << "\n";
if (Dice1 == Dice2)
{
cout << "Once again.\n";
}
} while (Dice1 == Dice2);
if (Dice1 > Dice2)
{
30
Решение задания 2 Вернуться
break;
}
case 2:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 2);
return 0;
}
31
Решение задания 2 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
32
Решение задания 2 Вернуться
PlayerPoints = 0;
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
do
{
cout << "Determining the order "
"of play\n";
cout << "Player is rolling "
"the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
cout << "Player's result is ";
cout << Dice1 << "\n";
if (Dice1 == Dice2)
{
cout << "Once again.\n";
33
Решение задания 2 Вернуться
}
} while (Dice1 == Dice2);
34
Решение задания 2 Вернуться
Dice2 = 1 + rand() % 5;
BotPoints = BotPoints + Dice1 +
Dice2;
cout << "Bot " << Dice1 << "-";
cout << Dice2 << "\n";
cout << i+1<< "-round results:";
cout << "\n";
cout << "PlayerPoints - ";
cout << PlayerPoints << "\n";
cout << "BotPoints - ";
cout << BotPoints << "\n\n";
Sleep(1000);
}
}
else
{
cout << "Bot goes first. "
"Player goes second.\n\n";
for (int i = 0; i < 3; i++)
{
cout << i + 1;
cout << "-round starts:" << "\n";
Sleep(1000);
}
}
break;
}
case 2:
{
cout << "See you!";
break;
}
default:
35
Решение задания 2 Вернуться
return 0;
}
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
36
Решение задания 2 Вернуться
switch (userChoice) {
case 1:
{
do
{
cout << "Determining the order "
"of play\n";
cout << "Player is rolling "
"the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
cout << "Player's result is ";
cout << Dice1 << "\n";
37
Решение задания 2 Вернуться
38
Решение задания 2 Вернуться
Sleep(1000);
}
}
else
{
cout << "Bot goes first. "
"Player goes second.\n\n";
for (int i = 0; i < 3; i++)
{
cout << i + 1 << "-round starts:";
cout << "\n";
cout << "Bot is rolling "
"the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
Dice2 = 1 + rand() % 5;
BotPoints = BotPoints + Dice1 +
Dice2;
cout << "Bot " << Dice1 << "-";
cout << Dice2 << "\n";
do
{
cout << "Enter '1' to role"
"the dice.\n";
cin >> userChoice;
} while (userChoice != 1);
39
Решение задания 2 Вернуться
PlayerPoints = PlayerPoints +
Dice1 + Dice2;
cout << "Player " << Dice1;
cout << "-" << Dice2 << "\n";
case 2:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 2);
return 0;
}
40
Решение задания 2 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
do
{
cout << "Determining the order "
"of play\n";
cout << "Player is rolling "
"the dice...\n";
Sleep(1000);
41
Решение задания 2 Вернуться
Dice1 = 1 + rand() % 5;
cout << "Player's result is "
<< Dice1 << "\n";
if (Dice1 == Dice2)
{
cout << "Once again.\n";
}
} while (Dice1 == Dice2);
42
Решение задания 2 Вернуться
Sleep(1000);
Dice1 = 1 + rand() % 5;
Dice2 = 1 + rand() % 5;
PlayerPoints = PlayerPoints +
Dice1+ Dice2;
cout << "Player " << Dice1<<"-";
cout << Dice2 << "\n";
Sleep(1000);
}
}
else
{
cout << "Bot goes first. "
"Player goes second.\n\n";
for (int i = 0; i < 3; i++)
{
43
Решение задания 2 Вернуться
do
{
cout << "Enter '1' to role "
"the dice.\n";
cin >> userChoice;
} while (userChoice != 1);
44
Решение задания 2 Вернуться
case 2:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
45
Решение задания 2 Вернуться
}
} while (userChoice != 2);
return 0;
}
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.2 - Dice Game\n";
int userChoice;
int Dice1, Dice2;
int PlayerPoints, BotPoints;
srand(time(NULL));
PlayerPoints = 0;
46
Решение задания 2 Вернуться
BotPoints = 0;
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - roll the dice\n";
cout << "2 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
do
{
cout << "Determining the order "
"of play\n";
cout << "Player is rolling "
"the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
cout << "Player's result is ";
cout << Dice1 << "\n";
switch (Dice1) {
case 1:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
47
Решение задания 2 Вернуться
case 2:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 3:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 4:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
48
Решение задания 2 Вернуться
case 5:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 6:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
}
49
Решение задания 2 Вернуться
50
Решение задания 2 Вернуться
51
Решение задания 2 Вернуться
52
Решение задания 2 Вернуться
53
Решение задания 2 Вернуться
switch (Dice2) {
case 1:
54
Решение задания 2 Вернуться
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 2:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 3:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
55
Решение задания 2 Вернуться
case 4:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 5:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 6:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
56
Решение задания 2 Вернуться
}
cout << "Bot is rolling "
"the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
Dice2 = 1 + rand() % 5;
BotPoints = BotPoints + Dice1 +
Dice2;
cout << "Bot's result is ";
cout << Dice1 << "-" << Dice2;
cout << "\n";
switch (Dice1) {
case 1:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 2:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
57
Решение задания 2 Вернуться
break;
}
case 3:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 4:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 5:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
58
Решение задания 2 Вернуться
}
case 6:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
}
switch (Dice2) {
case 1:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 2:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
59
Решение задания 2 Вернуться
60
Решение задания 2 Вернуться
61
Решение задания 2 Вернуться
cout << i + 1;
cout << "-round starts:" << "\n";
cout << "Bot is rolling the dice...\n";
Sleep(1000);
Dice1 = 1 + rand() % 5;
Dice2 = 1 + rand() % 5;
BotPoints = BotPoints + Dice1 +
Dice2;
cout << "Bot's result is ";
cout << Dice1 << "-" << Dice2;
cout << "\n";
switch (Dice1) {
case 1:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 2:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
62
Решение задания 2 Вернуться
case 3:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 4:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 5:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 6:
{
63
Решение задания 2 Вернуться
64
Решение задания 2 Вернуться
65
Решение задания 2 Вернуться
66
Решение задания 2 Вернуться
67
Решение задания 2 Вернуться
break;
}
case 5:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 6:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
}
switch (Dice2) {
case 1:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
cout << "| * |" << "\n";
cout << "| |" << "\n";
cout << "| |" << "\n";
68
Решение задания 2 Вернуться
69
Решение задания 2 Вернуться
break;
}
case 5:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
case 6:
{
cout << "===========" << "\n";
cout << "| |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| * * |" << "\n";
cout << "| |" << "\n";
cout << "===========" << "\n";
break;
}
}
cout << i + 1;
cout << "-round results:";
cout << "\n";
cout << "BotPoints - ";
cout << BotPoints;
cout << "\n\n";
cout << "PlayerPoints - ";
cout << PlayerPoints << "\n";
70
Решение задания 2 Вернуться
Sleep(1000);
}
}
cout << "Game results:" << "\n";
cout << "PlayerPoints - ";
cout << PlayerPoints << "\n";
cout << "BotPoints - " << BotPoints;
cout << "\n\n";
if (PlayerPoints > BotPoints)
{
cout << "The player is the winner!";
cout << "\n";
}
else if (PlayerPoints < BotPoints)
{
cout << "The bot is the winner!";
cout << "\n";
}
else
{
cout << "The draw!" << "\n";
}
break;
}
case 2:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 2);
return 0;
}
71
Решение задания 2 Вернуться
Рисунок 5
Рисунок 6
72
Решение задания 2 Вернуться
Рисунок 7
73
Решение задания 2 Вернуться
Рисунок 8
74
Решение задания 2 Вернуться
Рисунок 9
75
Решение задания 2 Вернуться
Рисунок 10
76
Решение задания 2 Вернуться
Рисунок 11
77
Решение задания 2 Вернуться
Рисунок 12
■■ Тест 8 — продолжаем игру, третий раунд
Рисунок 13
78
Решение задания 2 Вернуться
Рисунок 14
79
Решение задания 3 Вернуться
РЕШЕНИЕ ЗАДАНИЯ 3
Описание решения
Вначале реализуем цикл для повторения вывода меню игры.
Это будет цикл с постусловием, так как вначале необходимо
хотя бы раз отобразить меню, а потом проверять, следует ли
его повторять. Повторение вывода меню происходит, если
пользователь ввел непредусмотренный элемент меню ил
после игры. Для остановки процесса вывода меню следует
предусмотреть пункт «Выход из игры».
Меню будет содержать три пункта: 1 — первый уровень
сложности; 2 — второй уровень сложности; 3 — выход.
В случае, если пользователь выбрал первый или второй
пункт меню, определяем начальное количество жизней игрока
по формуле:
lives = (b – a +1) / n, (1)
где а, b — границы диапазона угадывания;
n — это число 2 для первого уровня (50%) и 4 для второго (25%).
Количество жизней — это целое число, поэтому будем
использовать оператор получения целой части от деления.
Например, для первого уровня диапазон угадывания от
10 до 100:
lives = (100 – 10 +1) / 4 = 24.
Далее компьютер «загадывает число» — выполняем генера-
цию числа в нужном диапазоне соответственно уровню игры.
Игра длится, пока игрок жив (т. е. количество жизней
больше нуля) или пока игрок не угадает число.
Организуем цикл с постусловием, так как вначале не-
обходимо хотя бы раз предложить игроку угадать, а потом
80
Решение задания 3 Вернуться
81
Решение задания 3 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
82
Решение задания 3 Вернуться
int main()
{
cout << "Home task #8.1.3 - Magic Number Game\n";
int level, a, b, magicNum, userNum;
int userChoice, userLives, userPoints, guessed;
userPoints = 0;
guessed = 0;
srand(time(NULL));
return 0;
83
Решение задания 3 Вернуться
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - 1st level: magic number [1..10]\n";
cout << "2 - 2nd level: magic number [10..100]\n";
cout << "3 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
cout << "Welcome to the 1st2nd level: "
"magic number [1..10]!";
84
Решение задания 3 Вернуться
break;
}
case 2:
{
cout << "Welcome to the 2nd level: "
"magic number [10..100]!";
break;
}
case 3:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 3);
return 0;
}
#include<iostream>
#include <windows.h>
#include<time.h>
85
Решение задания 3 Вернуться
int main()
{
cout << "Home task #8.1.3 - Magic Number Game\n";
int level, a, b, magicNum, userNum;
int userChoice, userLives, userPoints, guessed;
userPoints = 0;
guessed = 0;
srand(time(NULL));
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - 1st level: magic number "
"[1..10]\n";
cout << "2 - 2nd level: magic number "
"[10..100]\n";
cout << "3 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
cout << "Welcome to the 1st level: "
"magic number [1..10]! \n";
a = 1;
b = 10;
userLives = (b - a + 1) / 2;
break;
}
case 2:
{
cout << "Welcome to the 2nd level: "
"magic number [10..100]! \n";
86
Решение задания 3 Вернуться
a = 10;
b = 100;
userLives = (b - a + 1) / 4;
break;
}
case 3:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 3);
return 0;
}
87
Решение задания 3 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.3 - Magic Number Game\n";
int level, a, b, magicNum, userNum;
int userChoice, userLives, userPoints,guessed;
userPoints = 0;
guessed = 0;
srand(time(NULL));
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - 1st level: magic number "
"[1..10]\n";
88
Решение задания 3 Вернуться
switch (userChoice) {
case 1:
{
cout << "Welcome to the 1st level: "
"magic number [1..10]!\n";
a = 1;
b = 10;
userLives = (b - a + 1) / 2;
cout << "Bot thinks a number...\n";
Sleep(1000);
magicNum = a + rand() % (b-a);
cout << "Magic number is ready! Let's "
"try to guess it!\n";
do {
cout << "Try to guess, your "
"naumber?\n";
cin >> userNum;
} while ((userLives > 0) && (guessed == 0));
break;
}
case 2:
{
cout << "Welcome to the 2nd level: "
"magic number [10..100]!\n";
a = 10;
b = 100;
userLives = (b - a + 1) / 4;
89
Решение задания 3 Вернуться
break;
}
case 3:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 3);
return 0;
}
90
Решение задания 3 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.3 - Magic Number Game\n";
int level, a, b, magicNum, userNum;
int userChoice, userLives, userPoints,guessed;
userPoints = 0;
guessed = 0;
srand(time(NULL));
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - 1st level: magic number [1..10]\n";
cout << "2 - 2nd level: magic number [10..100]\n";
cout << "3 - quit\n";
cin >> userChoice;
switch (userChoice) {
case 1:
{
cout << "Welcome to the 1st level: "
"magic number [1..10]!\n";
a = 1;
b = 10;
userLives = (b - a + 1) / 2;
cout << "Bot thinks a number...\n";
Sleep(1000);
91
Решение задания 3 Вернуться
if (userNum == magicNum)
{
cout << "You guessed magic number!\n";
guessed = 1;
}
break;
}
case 2:
{
cout << "Welcome to the 2nd level: "
"magic number [10..100]!\n";
a = 10;
b = 100;
userLives = (b - a + 1) / 4;
cout << "Bot thinks a number...\n";
Sleep(1000);
magicNum = a + rand() % (b - a);
cout << "Magic number is ready! "
"Let's try to guess it!\n";
do {
cout << "Try to guess, your naumber?\n";
cin >> userNum;
92
Решение задания 3 Вернуться
if (userNum == magicNum)
{
cout << "You guessed magic number!\n";
guessed = 1;
}
} while ((userLives > 0) && (guessed == 0));
break;
}
case 3:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 3);
return 0;
}
93
Решение задания 3 Вернуться
#include<iostream>
#include <windows.h>
#include<time.h>
int main()
{
cout << "Home task #8.1.3 - Magic Number Game\n";
int level, a, b, magicNum, userNum;
int userChoice, userLives, userPoints, guessed;
userPoints = 0;
guessed = 0;
srand(time(NULL));
do {
cout << "Welcome to the Game!\n";
cout << "Your choice:\n";
cout << "1 - 1st level: magic number [1..10]\n";
cout << "2 - 2nd level: magic number [10..100]\n";
94
Решение задания 3 Вернуться
95
Решение задания 3 Вернуться
96
Решение задания 3 Вернуться
}
case 2:
{
cout << "Welcome to the 2nd level: "
"magic number [10..100]!\n";
a = 10;
b = 100;
userLives = (b - a + 1) / 4;
cout << "Bot thinks a number...\n";
Sleep(1000);
magicNum = a + rand() % (b - a);
cout << "Magic number is ready! "
"Let's try to guess it!\n";
do {
cout << "Just now you have ";
cout << userLives << "lives.\n";
cout << "Try to guess, your number?\n";
cin >> userNum;
if (userNum == magicNum)
{
cout << "You guessed magic number!\n";
guessed =1;
}
else {
cout << "Oh! I lost 1 life!\n";
userLives--;
cout << "Just now you have ";
cout << userLives << "\n";
do {
cout << "Do you wish a little "
"hint? It costs "
"1 life!\n";
cout << "Your choice:\n";
cout << "1 - yes\n";
97
Решение задания 3 Вернуться
98
Решение задания 3 Вернуться
case 3:
{
cout << "See you!";
break;
}
default:
cout << "Wrong menu item!";
}
} while (userChoice != 3);
return 0;
Рисунок 15
99
Решение задания 3 Вернуться
Рисунок 16
Рисунок 17
100
Решение задания 3 Вернуться
Рисунок 18
Рисунок 19
101
Решение задания 3 Вернуться
Рисунок 20
Рисунок 21
102