-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutility.cpp
More file actions
181 lines (125 loc) · 5.69 KB
/
Copy pathutility.cpp
File metadata and controls
181 lines (125 loc) · 5.69 KB
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
#include "utility.h"
/*заполняет строковый массив из файла*/
void fin(int count, string arrname[], string filename)
{
char BUF[51]; // задаем буфер для строк из файла
ifstream fout(filename); // открываем файл
/*заполнет массив размерностью count*/
for (int i = 0; i < count; i++)
{
fout.getline(BUF, 50); // считываем i-ую из файла в буфер
arrname[i] = BUF; // присваиваем i-ой ячейке массива значение буфера
}
fout.close(); // закрываем файл
}
/*заполняет массив структур типа gaming из файла*/
void fin(int count, gaming arrname[], string filename)
{ // задаём буфер для строк из файла
ifstream fout(filename); // открываем первый файл // открываем второй файл
/*заполнет поле captal_cnc структурного массива размерностью count*/
for (int counter = 0; counter < count; counter++)
{
int i = 0, j = 0;
char BUF[51] = "\0", BUF_question[51] = "\0", BUF_answer[51] = "\0";
fout.getline(BUF, 50); // считываем i-ую строку из файла в буфер
while (BUF[j] != '\t')// присваиваем полю capital_cnc i-ой ячейке массива значение буфера
{
BUF_answer[j] = BUF[j];
j++;
}
j++;
while (BUF[j])
{
BUF_question[i] = BUF[j];
j++; i++;
}
arrname[counter].question = BUF_question;
arrname[counter].answer = BUF_answer;
}
fout.close(); // закрываем файл // закрываем второй файл
}
/*функция поощеряет пользователя мотивирующими фразами*/
void printpraise()
{
int count = str_counter("praise.txt"); // подсчитываем количество строк в файле "praise.txt" и присваиваем переменной count
int random = 0; // переменная для генерации случайного числа
srand(time(0));
string *praise = new string[count]; // выделяем память для строкового массива praise
fin(count, praise, "praise.txt"); // заполняем массив praise[count] фразами из файла "praise.txt"
random = rand() % count; // присваиваем переменной random случайное число
cout << praise[random]; // выводим случайную фразу
delete[] praise; // освобождаем память выделенную под массив sympathy
}
/*функция выводит на экран успокаювающие фразы*/
void printsympathy()
{
int count = str_counter("sympathy.txt"); // подсчитываем количество строк в файле "sympath.txt" и присваиваем переменной count
int random = 0; // переменная для генерации случайного числа
srand(time(0));
string *sympathy = new string[count]; // выделяем память для строкового массива sympathy
fin(count, sympathy, "sympathy.txt"); // заполняем массив sympathy[count] фразами из файла "sympathy.txt"
random = rand() % count; // присваиваем переменной random случайное число
cout << sympathy[random]; // выводим случайную фразу
delete[] sympathy; // освобождаем память выделенную под массив sympathy
}
/*выводит количество HP у пользователя*/
void printlives(int lives)
{
/*в зависимости от HP у пользователя на экран выводится такое же количество сердец*/
switch(lives)
{
case 3: cout << "Your HP: <3 <3 <3"; break;
case 2: cout << "Your HP: <3 <3"; break;
case 1: cout << "Your HP: <3"; break;
default: cout << "";
}
}
/*подсчитывает количество строк в файле*/
int str_counter(char* filename)
{
int counter = 0; // переменная для подсчета количество строк
char buf[50]; // задаем буфер для строк из файла
char *end = ""; // переменная для определения конца файла
ifstream fout(filename); // открываем файл для чтения
/*считаем количество строк пока не дойдем до конца файла*/
while (strcmp(buf, end) != 0)
{
fout.getline(buf, 50);
counter++;
}
counter += -1; // вычитаем лишнюю строку
return counter; // возвращаем значение переменной counter(количество строк в файле)
fout.close(); // закрываем файл
}
/*извещение о неправильном вводе и очищение потока*/
void incorrect_input()
{
cin.clear(); //очищаем поток cin
cin.ignore(cin.rdbuf()->in_avail()); //игнорируем символы содержащиеся в буфере чтения
system("cls"); //команда для очиски экрана
cout << "Input was incorrect, try again" << endl;
system("pause"); //команда для задержки экрана
system("cls"); //команда для очиски экрана
}
/*желание игрока сыграть в игру ещё раз*/
void desire_playing(void game())
{
char playing; // решение пользователя продолжить игру или нет
system("cls"); // команда для очистки экрана
/*пока пользователь не дает отказ от продолжения игры, то игра продолжается*/
do
{
game(); // вызываем функцию, которая отвечает за работоспособность игры "Counties and Capital Cities"
cout << "Do you want to play again? (y or n)" << endl;
cin >> playing; // пользователь вводит своё решение
/*проверяем корректность ввода*/
switch (playing)
{
case 'n': break; // если пользователь ввёл 'n', то ввод корректен и программа продолжает работу
case 'y': break; // если пользователь ввёл 'y', то ввод корректен и программа продолжает работу
default: {incorrect_input(); } // извещает пользователя о некоректном вводе
}
system("cls"); // команда для очистки экрана
}
while (playing == 'y');
}