Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DarKing1999
0 / 0 / 2
Регистрация: 15.12.2016
Сообщений: 13
Записей в блоге: 1
#1

С++; компилятор; Текстовая RPG - C++

06.02.2017, 20:38. Просмотров 380. Ответов 5
Метки нет (Все метки)

И так, пару месяцев назад я тут задавался вопросом как создать игру с графикой на С++ в VS2015. Ответа я к сожалению так и не получил, но и информации было крайне маловато. По этому я решил написать текстовую игру, с некоторыми функциями. Она довольна проста и бональна, но в этом я считаю есть и свои плюсы. Надеюсь, те кто только начал изучать язык или те кто неплохо в нём разбирается, обратят внимания и оценят мой труд.
C++
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
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
//<DarK><Многофункциональная игра>
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <cstdlib>
using namespace std;
void printVin(){
cout<<"=================="<<endl;
cout<<"======Победа!====="<<endl;
cout<<"=================="<<endl;
}
void printLose(){
cout<<"=================="<<endl;
cout<<"~~~Поражение...~~~"<<endl;
cout<<"=================="<<endl;
}
class Arena{
 protected:
 int attackPower;
public:
 void setAttackPower(int a){
  attackPower = a;
}
};
class Hero: public Arena{
 public:
  void attack(){
   cout<<"Атака Героя - "<<attackPower<<endl;
  }
};
 
class Enemy: public Arena{
 public:
   void attack(){
    cout<<"Атака Врага - "<<attackPower<<endl;
}
};
class BaseXaracted
{
public:
   BaseXaracted(int s, int z, int l, int i, int o, int lev, int mg, int ol, int def, int mon)
   :sila(s), zdorovie(z), lovcosti(l), intelect(i), opytnow(o), level(lev), magical(mg), opytlevel(ol), defend(def), moune(mon)
{
}
void printDate()
{
cout<<" Уровень: "<<level<<endl;
cout<<opytnow<<"/"<<opytlevel<<endl;
cout<<"Сила ="<<sila<<endl;
cout<<"Здоровье: "<<zdorovie<<"HP"<<endl;
cout<<"Ловкость = "<<lovcosti<<endl;
cout<<"Интеллект = "<<intelect<<endl;
cout<<"Магическая сила = "<<magical<<endl;
cout<<"Защита = " <<defend<<endl;
cout<<moune<<" Голдов"<<endl;
}
private:
   int sila;
   int zdorovie;
   int lovcosti;
   int intelect;
   int opytnow;
   int level;
   int magical;
   int opytlevel;
   int defend;
   int moune;
};
class Player
{
 public:
  Player(string n, string c, BaseXaracted b)
: name(n),
clas(c),
bxd(b)
{
}
void printInfo()
{
cout<<name<<endl;
cout<<"("<<clas<<")"<<endl;
cout<<"---------------------"<<endl;
bxd.printDate();
cout<<"---------------------"<<endl;
}
private:
 string name;
 string clas;
 BaseXaracted bxd;
};
 
class myClass{
 public:
  myClass(string nm) {
   setName(nm);
}
void setName(string x){
  name=x;
}
string getName(){
return name;
}
private:
  string name;
    };
int main(){
    Hero h;
    Enemy en;
    Arena*e1=&h;
    Arena*e2=&en;
int sila = 150, zdorovie = 1500, lovcosti = 200, intelect = 500, opytnow = 0, level = 1, magical = 0, opytlevel = 100, defend = 100;
int sila_e = 80, zdorovie_e = 1800, lovcosti_e = 250, intelect_e = 600, level_e = 1, magical_e = 0, defend_e = 150, moune=500, zdorovie_n
, zdorovie_en;
string x, c;
string Enemy_1, Enemy_2, Enemy_3;
int y, r, f, cl, hit, cikl;
int ht1, ht2, ht3, ht4, ht5, ht6, ht7, ht8, ht9, ht10, hl, enem1, enem2, enem3;
string hit_1, hit_2, hit_3, hit_4, hit_5, hit_6, hit_7, hit_8, hit_9, hit_10, hill;
 cout<<"Приветствую тебя! Я - гид этой игры. Постарайся сейчас ничего не трогать и не писать, я всё сейчас расскажу. Ты попал в невероятный мир - мир под названием Трип. Этот мир полон опасностей и ему нужен свой герой. Скажи, как я могу к тебе обращаться?"<<endl;
 cout<<"Имя твоего героя:";
 cin>>x;
myClass ob1(x);
myClass ob2("Гнусный орк");
 cout<<"Выбери класс твоего героя:"<<endl<<"1)Воин"<<endl<<"2)Лучник"<<endl<<"3)Маг"<<endl;
 cin>>cl;
if(cl==1)
{
c="Воин";
sila+=50;
zdorovie+=200;
intelect+=50;
lovcosti+=50;
defend+=200;
hit_1="Взаx меча";
hit_2="Раскалённый металл";
hit_3="Вылетающий клинок";
hit_4="Перекрёсток";
hit_5="";
hit_6="";
hit_7="";
hit_8="";
hit_9="";
hit_10="";
}
if(cl==2)
{
c="Лучник";
sila+=30;
zdorovie+=500;
intelect+=30;
lovcosti+=150;
defend+=150;
hit_1="Стрела";
hit_2="Ядовитая стрела";
hit_3="Очередь стрел";
hit_4="Огненная стрела";
hit_5="";
hit_6="";
hit_7="";
hit_8="";
hit_9="";
hit_10="";
}
if(cl==3)
{
c="Маг";
sila+=35;
zdorovie+=300;
intelect+=100;
magical+=200;
defend+=180;
hit_1="Электроимпульс";
hit_2="Ядовитое облако";
hit_3="Фаер-бол";
hit_4="Метеоритный дождь";
hit_5="";
hit_6="";
hit_7="";
hit_8="";
hit_9="";
hit_10="";
}
cout<<"Хорошо. Теперь, я покажу твои характеристики: "<<endl;
BaseXaracted bxd(sila, zdorovie, lovcosti, intelect, opytnow, level, magical, opytlevel, defend, moune);
Player p(x, c, bxd);
p.printInfo();
   cout<<" Теперь ты можешь действовать. Предлогаю испробовать себя. Давай посмотрим твои способности на арене."<<endl;
cout<<"Победи Гнусного оркa!"<<endl;
cout<<endl;
cout<<ob1.getName()<<":"<<zdorovie<<"HP"<<endl;
   cout<<ob2.getName()<<":"<<zdorovie_e<<"HP"<<endl;
zdorovie_n=zdorovie;
zdorovie_en=zdorovie_e;
while(zdorovie_e>0)
{
hit=0;
r = rand()%sila_e;
   cout<<"1."<<hit_1<<endl<<"2."<<hit_2<<endl<<"3."<<hit_3<<endl;
cin>>f;
if(f==1)
{
hit=2*sila;
hit-=(lovcosti_e*0.1);
hit+=(magical*0.1);
};
if(f==2)
{
hit=sila;
hit+=(intelect*0.5);
hit-=(lovcosti_e*0.1);
hit+=(magical*0.2);
};
if(f==3)
{
hit=sila*2;
hit+=(intelect*0.5);
hit+=(magical*0.5);
hit-=defend_e;
}
    zdorovie_e-=hit;
    zdorovie-=sila_e+r;
    e1->setAttackPower(hit);
    e2->setAttackPower(sila_e+r);
    h.attack();
cout<<ob2.getName()<<":"<<zdorovie_e<<"HP"<<endl;
    en.attack();
cout<<ob1.getName()<<":"<<zdorovie<<"HP"<<endl;
   cout<<endl<<endl;
  if(zdorovie<=0){
  zdorovie_e=0;
}
}
if(zdorovie<=0){
cout<<ob1.getName()<<":"<<zdorovie<<"HP"<<endl;
   cout<<endl;
opytnow+=10;
moune+=50;
printLose();
   cout<<"Мне жаль, мой юный друг. Мир тебя не забудет. Ты умер как великий "<<ob1.getName()<<"... "<<endl;
   }
 else{
cout<<ob2.getName()<<":"<<zdorovie_e<<"HP"<<endl;
cout<<endl;
opytnow+=30;
moune+=100;
printVin();
cout<<"Мои поздравления, о Великий "<<ob1.getName()<<"! Ты выполнил задание. Теперь, твоя цель - избавить своё Королевство от нежети и страдания. Удачи!"<<endl;
}
cout<<endl<<ob1.getName()<<endl;
cout<<" Уровень: "<<level<<endl;
cout<<opytnow<<"/"<<opytlevel<<endl;
cout<<moune<<" Голдов"<<endl;
cout<<endl<<endl;
zdorovie=zdorovie_n;
myClass ob3("Лесной разбойник");
zdorovie_e=zdorovie_en;
while(level<=10)
{
zdorovie_en=zdorovie_e;
zdorovie_n=zdorovie;
cout<<ob1.getName()<<":"<<zdorovie<<"HP"<<endl;
   cout<<ob3.getName()<<":"<<zdorovie_e<<"HP"<<endl;
while(zdorovie_e>0)
{
hit=0;
r = rand()%sila_e;
   cout<<"1."<<hit_1<<endl<<"2."<<hit_2<<endl<<"3."<<hit_3<<endl;
cin>>f;
if(f==1)
{
hit=2*sila;
hit-=(lovcosti_e*0.1);
hit+=(magical*0.1);
};
if(f==2)
{
hit=sila;
hit+=(intelect*0.5);
hit-=(lovcosti_e*0.1);
hit+=(magical*0.2);
};
if(f==3)
{
hit=sila*2;
hit+=(intelect*0.5);
hit+=(magical*0.5);
hit-=defend_e;
}
    zdorovie_e-=hit;
    zdorovie-=sila_e+(r*(level*1,2));
    e1->setAttackPower(hit);
    e2->setAttackPower(sila_e+r);
    h.attack();
for(int cikl =0; cikl>=10000; cikl++)
{}
cout<<ob3.getName()<<":"<<zdorovie_e<<"HP"<<endl;
    en.attack();
cout<<ob1.getName()<<":"<<zdorovie<<"HP"<<endl;
   cout<<endl<<endl;
  if(zdorovie<=0){
  zdorovie_e=0;
}
}
if(zdorovie<=0){
cout<<ob1.getName()<<":"<<zdorovie<<"HP"<<endl;
   cout<<endl;
opytnow+=10*(level*1.1);
moune+=50*(level*1.1);
printLose();
   }
 else{
cout<<ob3.getName()<<":"<<zdorovie_e<<"HP"<<endl;
cout<<endl;
opytnow+=30*(level*1.2);
moune+=100*(level*1.1);
printVin();
}
zdorovie=zdorovie_n;
zdorovie_e=zdorovie_en;
if(opytnow>opytlevel)
{
opytnow=opytlevel-opytnow;
opytnow=opytnow-opytnow-opytnow;
cout<<"Новый уровень!"<<endl;
opytlevel+=(opytlevel*1.2);
level+=1;
 sila+=(sila*1.2);
 zdorovie+=(zdorovie*1.2);
 lovcosti+=(lovcosti*1.3);
 intelect+=(intelect*1.1);
 magical+=(magical*1.6);
 defend+=(defend*1.5);
moune+=1000;
sila_e+=(sila_e*1.4);
zdorovie_e+=(zdorovie_e*1.3);
BaseXaracted bxd(sila, zdorovie, lovcosti, intelect, opytnow, level, magical, opytlevel, defend, moune);
Player p(x, c, bxd);
p.printInfo();
}
else
{
cout<<endl<<ob1.getName()<<endl;
cout<<" Уровень: "<<level<<endl;
cout<<opytnow<<"/"<<opytlevel<<endl;
cout<<moune<<" Голдов"<<endl;
cout<<endl<<endl;
}
};
cout<<"время работы программы :"<<clock()/1000000.0<<" секунд."<<endl;
cout<<"Нажмите return";
    return 0;
}
Пояснения и коментарии я напишу в том случае, если возникнут вопросы.

Сломаю систему: Зло не дремлет!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2017, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++; компилятор; Текстовая RPG (C++):

Текстовая RPG в консоли по правилам D&D - C++
Доброго времени суток! Решил попробовать себя на новой, так сказать, стезе. Буду рад любой помощи в плане организации хранения информации,...

Создание простой RPG - C++
Здравствуйте. В С++ полный 0, программирую в основном на php.Но вопрос вот в чём: вот на скрине скрин игры, и у меня вопрос: как, с помощью...

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор - C++
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7 Посоветуйте какой...

Текстовая переменная - C++
Добрый день! Имеется текстовый файл с римскими цифрами. Необходимо распознать их. Я создал словарь 20-ти вариантов римских цифр. ...

текстовая информация - C++
Ввести строку и определить, располагаются ли буквы в ней в порядке, обратном алфавитному.

текстовая обработка - C++
дано задание: &quot;Дана последовательность строк. Каждая строка состоит из слов, разделенных пробелами. Написать программу, обеспечивающую...

5
Renji
2064 / 1421 / 323
Регистрация: 05.06.2014
Сообщений: 4,084
06.02.2017, 22:04 #2
Цитата Сообщение от DarKing1999 Посмотреть сообщение
Надеюсь, те кто только начал изучать язык или те кто неплохо в нём разбирается, обратят внимания и оценят мой труд.
М... Вместо всех этих hit_1, hit_2, hit_3 должны быть массивы. Вместо if(cl==1) - switch. А вычисления hit=sila прям таки напрашиваются на оформление в форме умножения векторов (вектор статов*вектор атаки).
0
MrGluck
Модератор
Эксперт CЭксперт С++
7512 / 4644 / 700
Регистрация: 29.11.2010
Сообщений: 12,680
07.02.2017, 11:55 #3
Разделите логические блоки с помощью вертикальных отступов (переносов строк), добавьте пробелы в конструкции, отделив операторы, добавьте отступы вправо в циклы и условия

Тогда будет намного проще читать. Сейчас, к сожалению, это делать неудобно.
0
GbaLog-
Любитель чаепитий
3078 / 1417 / 342
Регистрация: 24.08.2014
Сообщений: 5,042
Записей в блоге: 1
Завершенные тесты: 2
07.02.2017, 14:25 #4
Слава clang-formatter'у!
Ну и мне чуток.
C++
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
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
//<DarK><Многофункциональная игра>
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <cstdlib>
//---------------------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------------------
void printVin()
{
    cout << "==================" << endl;
    cout << "======Победа!=====" << endl;
    cout << "==================" << endl;
}
//---------------------------------------------------------------------------------------
void printLose()
{
    cout << "==================" << endl;
    cout << "~~~Поражение...~~~" << endl;
    cout << "==================" << endl;
}
//---------------------------------------------------------------------------------------
class Arena {
protected:
    int attackPower;
 
public:
    void setAttackPower(int a)
    {
        attackPower = a;
    }
};
//---------------------------------------------------------------------------------------
class Hero : public Arena {
public:
    void attack()
    {
        cout << "Атака Героя - " << attackPower << endl;
    }
};
//---------------------------------------------------------------------------------------
class Enemy : public Arena {
public:
    void attack()
    {
        cout << "Атака Врага - " << attackPower << endl;
    }
};
//---------------------------------------------------------------------------------------
class BaseXaracted {
public:
    BaseXaracted(int s, int z, int l, int i, int o, int lev, int mg, int ol, int def, int mon)
        : sila(s)
        , zdorovie(z)
        , lovcosti(l)
        , intelect(i)
        , opytnow(o)
        , level(lev)
        , magical(mg)
        , opytlevel(ol)
        , defend(def)
        , moune(mon)
    {
    }
    void printDate()
    {
        cout << " Уровень: " << level << endl;
        cout << opytnow << "/" << opytlevel << endl;
        cout << "Сила =" << sila << endl;
        cout << "Здоровье: " << zdorovie << "HP" << endl;
        cout << "Ловкость = " << lovcosti << endl;
        cout << "Интеллект = " << intelect << endl;
        cout << "Магическая сила = " << magical << endl;
        cout << "Защита = " << defend << endl;
        cout << moune << " Голдов" << endl;
    }
 
private:
    int sila;
    int zdorovie;
    int lovcosti;
    int intelect;
    int opytnow;
    int level;
    int magical;
    int opytlevel;
    int defend;
    int moune;
};
//---------------------------------------------------------------------------------------
class Player {
public:
    Player(string n, string c, BaseXaracted b)
        : name(n)
        , clas(c)
        , bxd(b)
    {
    }
    void printInfo()
    {
        cout << name << endl;
        cout << "(" << clas << ")" << endl;
        cout << "---------------------" << endl;
        bxd.printDate();
        cout << "---------------------" << endl;
    }
 
private:
    string name;
    string clas;
    BaseXaracted bxd;
};
//---------------------------------------------------------------------------------------
class myClass {
public:
    myClass(string nm)
    {
        setName(nm);
    }
    void setName(string x)
    {
        name = x;
    }
    string getName()
    {
        return name;
    }
 
private:
    string name;
};
//---------------------------------------------------------------------------------------
int main()
{
    Hero h;
    Enemy en;
    Arena* e1 = &h;
    Arena* e2 = &en;
    int sila = 150, zdorovie = 1500, lovcosti = 200, intelect = 500, opytnow = 0, level = 1, magical = 0, opytlevel = 100, defend = 100;
    int sila_e = 80, zdorovie_e = 1800, lovcosti_e = 250, intelect_e = 600, level_e = 1, magical_e = 0, defend_e = 150, moune = 500, zdorovie_n, zdorovie_en;
    string x, c;
    string Enemy_1, Enemy_2, Enemy_3;
    int y, r, f, cl, hit, cikl;
    int ht1, ht2, ht3, ht4, ht5, ht6, ht7, ht8, ht9, ht10, hl, enem1, enem2, enem3;
    string hit_1, hit_2, hit_3, hit_4, hit_5, hit_6, hit_7, hit_8, hit_9, hit_10, hill;
    cout << "Приветствую тебя! Я - гид этой игры. Постарайся сейчас ничего не трогать и не писать, я всё сейчас расскажу. Ты попал в невероятный мир - мир под названием Трип. Этот мир полон опасностей и ему нужен свой герой. Скажи, как я могу к тебе обращаться?" << endl;
    cout << "Имя твоего героя:";
    cin >> x;
    myClass ob1(x);
    myClass ob2("Гнусный орк");
    cout << "Выбери класс твоего героя:" << endl
         << "1)Воин" << endl
         << "2)Лучник" << endl
         << "3)Маг" << endl;
    cin >> cl;
    if (cl == 1) {
        c = "Воин";
        sila += 50;
        zdorovie += 200;
        intelect += 50;
        lovcosti += 50;
        defend += 200;
        hit_1 = "Взаx меча";
        hit_2 = "Раскалённый металл";
        hit_3 = "Вылетающий клинок";
        hit_4 = "Перекрёсток";
        hit_5 = "";
        hit_6 = "";
        hit_7 = "";
        hit_8 = "";
        hit_9 = "";
        hit_10 = "";
    }
    if (cl == 2) {
        c = "Лучник";
        sila += 30;
        zdorovie += 500;
        intelect += 30;
        lovcosti += 150;
        defend += 150;
        hit_1 = "Стрела";
        hit_2 = "Ядовитая стрела";
        hit_3 = "Очередь стрел";
        hit_4 = "Огненная стрела";
        hit_5 = "";
        hit_6 = "";
        hit_7 = "";
        hit_8 = "";
        hit_9 = "";
        hit_10 = "";
    }
    if (cl == 3) {
        c = "Маг";
        sila += 35;
        zdorovie += 300;
        intelect += 100;
        magical += 200;
        defend += 180;
        hit_1 = "Электроимпульс";
        hit_2 = "Ядовитое облако";
        hit_3 = "Фаер-бол";
        hit_4 = "Метеоритный дождь";
        hit_5 = "";
        hit_6 = "";
        hit_7 = "";
        hit_8 = "";
        hit_9 = "";
        hit_10 = "";
    }
    cout << "Хорошо. Теперь, я покажу твои характеристики: " << endl;
    BaseXaracted bxd(sila, zdorovie, lovcosti, intelect, opytnow, level, magical, opytlevel, defend, moune);
    Player p(x, c, bxd);
    p.printInfo();
    cout << " Теперь ты можешь действовать. Предлогаю испробовать себя. Давай посмотрим твои способности на арене." << endl;
    cout << "Победи Гнусного оркa!" << endl;
    cout << endl;
    cout << ob1.getName() << ":" << zdorovie << "HP" << endl;
    cout << ob2.getName() << ":" << zdorovie_e << "HP" << endl;
    zdorovie_n = zdorovie;
    zdorovie_en = zdorovie_e;
    while (zdorovie_e > 0) {
        hit = 0;
        r = rand() % sila_e;
        cout << "1." << hit_1 << endl
             << "2." << hit_2 << endl
             << "3." << hit_3 << endl;
        cin >> f;
        if (f == 1) {
            hit = 2 * sila;
            hit -= (lovcosti_e * 0.1);
            hit += (magical * 0.1);
        };
        if (f == 2) {
            hit = sila;
            hit += (intelect * 0.5);
            hit -= (lovcosti_e * 0.1);
            hit += (magical * 0.2);
        };
        if (f == 3) {
            hit = sila * 2;
            hit += (intelect * 0.5);
            hit += (magical * 0.5);
            hit -= defend_e;
        }
        zdorovie_e -= hit;
        zdorovie -= sila_e + r;
        e1->setAttackPower(hit);
        e2->setAttackPower(sila_e + r);
        h.attack();
        cout << ob2.getName() << ":" << zdorovie_e << "HP" << endl;
        en.attack();
        cout << ob1.getName() << ":" << zdorovie << "HP" << endl;
        cout << endl
             << endl;
        if (zdorovie <= 0) {
            zdorovie_e = 0;
        }
    }
    if (zdorovie <= 0) {
        cout << ob1.getName() << ":" << zdorovie << "HP" << endl;
        cout << endl;
        opytnow += 10;
        moune += 50;
        printLose();
        cout << "Мне жаль, мой юный друг. Мир тебя не забудет. Ты умер как великий " << ob1.getName() << "... " << endl;
    }
    else {
        cout << ob2.getName() << ":" << zdorovie_e << "HP" << endl;
        cout << endl;
        opytnow += 30;
        moune += 100;
        printVin();
        cout << "Мои поздравления, о Великий " << ob1.getName() << "! Ты выполнил задание. Теперь, твоя цель - избавить своё Королевство от нежети и страдания. Удачи!" << endl;
    }
    cout << endl
         << ob1.getName() << endl;
    cout << " Уровень: " << level << endl;
    cout << opytnow << "/" << opytlevel << endl;
    cout << moune << " Голдов" << endl;
    cout << endl
         << endl;
    zdorovie = zdorovie_n;
    myClass ob3("Лесной разбойник");
    zdorovie_e = zdorovie_en;
    while (level <= 10) {
        zdorovie_en = zdorovie_e;
        zdorovie_n = zdorovie;
        cout << ob1.getName() << ":" << zdorovie << "HP" << endl;
        cout << ob3.getName() << ":" << zdorovie_e << "HP" << endl;
        while (zdorovie_e > 0) {
            hit = 0;
            r = rand() % sila_e;
            cout << "1." << hit_1 << endl
                 << "2." << hit_2 << endl
                 << "3." << hit_3 << endl;
            cin >> f;
            if (f == 1) {
                hit = 2 * sila;
                hit -= (lovcosti_e * 0.1);
                hit += (magical * 0.1);
            };
            if (f == 2) {
                hit = sila;
                hit += (intelect * 0.5);
                hit -= (lovcosti_e * 0.1);
                hit += (magical * 0.2);
            };
            if (f == 3) {
                hit = sila * 2;
                hit += (intelect * 0.5);
                hit += (magical * 0.5);
                hit -= defend_e;
            }
            zdorovie_e -= hit;
            zdorovie -= sila_e + (r * (level * 1, 2));
            e1->setAttackPower(hit);
            e2->setAttackPower(sila_e + r);
            h.attack();
            for (int cikl = 0; cikl >= 10000; cikl++) {
            }
            cout << ob3.getName() << ":" << zdorovie_e << "HP" << endl;
            en.attack();
            cout << ob1.getName() << ":" << zdorovie << "HP" << endl;
            cout << endl
                 << endl;
            if (zdorovie <= 0) {
                zdorovie_e = 0;
            }
        }
        if (zdorovie <= 0) {
            cout << ob1.getName() << ":" << zdorovie << "HP" << endl;
            cout << endl;
            opytnow += 10 * (level * 1.1);
            moune += 50 * (level * 1.1);
            printLose();
        }
        else {
            cout << ob3.getName() << ":" << zdorovie_e << "HP" << endl;
            cout << endl;
            opytnow += 30 * (level * 1.2);
            moune += 100 * (level * 1.1);
            printVin();
        }
        zdorovie = zdorovie_n;
        zdorovie_e = zdorovie_en;
        if (opytnow > opytlevel) {
            opytnow = opytlevel - opytnow;
            opytnow = opytnow - opytnow - opytnow;
            cout << "Новый уровень!" << endl;
            opytlevel += (opytlevel * 1.2);
            level += 1;
            sila += (sila * 1.2);
            zdorovie += (zdorovie * 1.2);
            lovcosti += (lovcosti * 1.3);
            intelect += (intelect * 1.1);
            magical += (magical * 1.6);
            defend += (defend * 1.5);
            moune += 1000;
            sila_e += (sila_e * 1.4);
            zdorovie_e += (zdorovie_e * 1.3);
            BaseXaracted bxd(sila, zdorovie, lovcosti, intelect, opytnow, level, magical, opytlevel, defend, moune);
            Player p(x, c, bxd);
            p.printInfo();
        }
        else {
            cout << endl
                 << ob1.getName() << endl;
            cout << " Уровень: " << level << endl;
            cout << opytnow << "/" << opytlevel << endl;
            cout << moune << " Голдов" << endl;
            cout << endl
                 << endl;
        }
    };
    cout << "время работы программы :" << clock() / 1000000.0 << " секунд." << endl;
    cout << "Нажмите return";
    return 0;
}
1
altmax
181 / 48 / 14
Регистрация: 23.12.2016
Сообщений: 157
Завершенные тесты: 1
08.02.2017, 15:45 #5
На счёт графики - есть очень интересная библиотека BearLibTerminal - делает псевдотерминал с тайловой графикой, что просто идеально для rlg-игр. Ну и еще клавиатуру и мышь она отслеживает.
А на счёт самого кода - крайне рекомендую прочитать книгу Роберта Мартина "Чистый код".
Потому как такие большие простыни кода тяжело писать, еще тяжелее поддерживать, и практически нереально искать в них ошибки.
1
DarKing1999
0 / 0 / 2
Регистрация: 15.12.2016
Сообщений: 13
Записей в блоге: 1
09.02.2017, 18:47  [ТС] #6
Ну да, спасибо. Я об этом чуток забыл...
0
09.02.2017, 18:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2017, 18:47
Привет! Вот еще темы с ответами:

Текстовая строка - C++
Всем доброго времени суток) У меня есть один вопрос.Помогите кто сможет. Нужно составить программу, которая может напечатать строку...

Текстовая запись числа - C++
Суть в следующем, даны 5 чисел: 1,2,3,4,5. Нужно, чтобы при вводе любого из этих чисел появлялась текстовая запись этого числа. ...

Текстовая игра (ZPG) - C++
Привет всем. Хочу написать ZPG (Zero Player Game), типа Progress Quest или Годвилль. Собственно, сам вопрос: есть какие-либо...

Текстовая игра-симулятор [ищу код] - C++
Доброго времени суток! Ищу код игры наподобие Симулятора Бомжа (на андройде есть такой), Хакера или чего-то такого. Во всех их одна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.