Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.08.2021
Сообщений: 3
.NET 3.x

Пытаюсь создать рпгшку в консоли

22.08.2021, 10:37. Показов 1060. Ответов 2

Студворк — интернет-сервис помощи студентам
Всем здравствуйте. Я пытаюсь создать рпгшку с пошаговыми боями и системой уровней в консоли. Думаю, объяснять про пошаговые бои не нужно.
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
using System;
 
namespace GameQuest
{
    class Program
    {
        static string[] ClasWarrior = new string[6] {"", "Воин", "Маг", "Лучник", "Мастер", "Здоровяк" };
        static int[] ClasWarriorNum = new int[6] { 0, 1, 2, 3, 4, 5 };
        static int[] ClasMainHero = new int[5];
        static int[] ClasEnemy = new int[5];
        
 
 
        static int HPMHero = 0, ATKpMHero = 0, LVLpMHero = 0;
        static int HPEnemy = 0, ATKpEnemy = 0;
 
        Random rPointsLVL1 = new Random();
        Random rPointsLVL2 = new Random();
        Random rPointsLVL3 = new Random();
        Random rPointsLVL4 = new Random();
        Random rPointsLVL5 = new Random();
 
         
 
        static int LVL1points;
        static int LVL2points;
        static int LVL3points;
        static int LVL4points;
        static int LVL5points;
        static void Main(string[] args)
        {
            MMenu();
        }
        static void MMenu()
        {
            MessWL("Добро пожаловать на Арену!\nЗдесь тебе предстоит сразиться с множеством противников, чтобы взойти на Вершину - место, где живут сильнейшие бойцы!");
            Console.ReadKey();
            MessW("Для начала представься, новичок: ");
            string Name = InputString();
            MessWL("Ну здравствуй, " + Name + "!");
            Console.ReadKey();
            MessWL("Теперь, когда мы разобрались с твоим именем, надо понять, кто ты по жизни.\nУ нас на Арене есть пять видов бойцов:");
 
            MessWL("1. Воин - стандартный класс, с собой только меч да щит с броней");
            MessWL("2. Маг - относительно слабый боец, но обладает очень хорошими магическими навыками");
            MessWL("3. Лучник - очень слабый боец, умеет хорошо воевать на расстоянии с помощью своего лука, но в ближнем бою он бездарен");
            MessWL("4. Мастер - человек, который отлично сражается на кулаках, и даже знает пару приемов");
            MessWL("5. Здоровяк - такой тип бойцов ломает всех и вся на своем пути, используя свое тело и мощь");
 
            MessWL("Кем будешь ты?");
            int Clas = InputKey();
            CalcClas(Clas);
            CHOICE();
        }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        static int EnemyWarLVL1()
        {            
            ClasWarriorNum[1] = Convert.ToInt32(ClasWarrior[1]);
            return ClasEnemy[0] = ClasWarriorNum[1];
            return  HPEnemy = 20;
            return ATKpEnemy = 10;
        }
        static int EnemyWarLVL2()
        {
            ClasWarriorNum[1] = Convert.ToInt32(ClasWarrior[1]);
            return ClasEnemy[1] = ClasWarriorNum[1];
            return HPEnemy = 20;
            return ATKpEnemy = 10;
        }
        static int EnemyWarLVL3()
        {
            ClasWarriorNum[1] = Convert.ToInt32(ClasWarrior[1]);
            return ClasEnemy[2] = ClasWarriorNum[1];
            return HPEnemy = 20;
            return ATKpEnemy = 10;
        }
        static int EnemyWarLVL4()
        {
            ClasWarriorNum[1] = Convert.ToInt32(ClasWarrior[1]);
            return ClasEnemy[3] = ClasWarriorNum[1];
            return HPEnemy = 20;
            return ATKpEnemy = 10;
        }
        static int EnemyWarLVL5()
        {
            ClasWarriorNum[1] = Convert.ToInt32(ClasWarrior[1]);
            return ClasEnemy[4] = ClasWarriorNum[1];
            return HPEnemy = 20;
            return ATKpEnemy = 10;
        }
 
 
        static int EnemyWizLVL1()
        {
            ClasWarriorNum[2] = Convert.ToInt32(ClasWarrior[2]);
            return ClasEnemy[0] = ClasWarriorNum[2];
            return HPEnemy = 15;
            return ATKpEnemy = 15;
        }
        static int EnemyWizLVL2()
        {
            ClasWarriorNum[2] = Convert.ToInt32(ClasWarrior[2]);
            return ClasEnemy[1] = ClasWarriorNum[2];
            return HPEnemy = 15;
            return ATKpEnemy = 15;
        }
        static int EnemyWizLVL3()
        {
            ClasWarriorNum[2] = Convert.ToInt32(ClasWarrior[2]);
            return ClasEnemy[2] = ClasWarriorNum[2];
            return HPEnemy = 15;
            return ATKpEnemy = 15;
        }
        static int EnemyWizLVL4()
        {
            ClasWarriorNum[2] = Convert.ToInt32(ClasWarrior[2]);
            return ClasEnemy[3] = ClasWarriorNum[2];
            return HPEnemy = 15;
            return ATKpEnemy = 15;
        }
        static int EnemyWizLVL5()
        {
            ClasWarriorNum[2] = Convert.ToInt32(ClasWarrior[2]);
            return ClasEnemy[4] = ClasWarriorNum[2];
            return HPEnemy = 15;
            return ATKpEnemy = 15;
        }
 
 
 
 
        static int EnemyArchLVL1()
        {
            ClasWarriorNum[3] = Convert.ToInt32(ClasWarrior[3]);
            return ClasEnemy[0] = ClasWarriorNum[3];
            return HPEnemy = 10;
            return ATKpEnemy = 7;
        }
        static int EnemyArchLVL2()
        {
            ClasWarriorNum[3] = Convert.ToInt32(ClasWarrior[3]);
            return ClasEnemy[1] = ClasWarriorNum[3];
            return HPEnemy = 10;
            return ATKpEnemy = 7;
        }
        static int EnemyArchLVL3()
        {
            ClasWarriorNum[3] = Convert.ToInt32(ClasWarrior[3]);
            return ClasEnemy[2] = ClasWarriorNum[3];
            return HPEnemy = 10;
            return ATKpEnemy = 7;
        }
        static int EnemyArchLVL4()
        {
            ClasWarriorNum[3] = Convert.ToInt32(ClasWarrior[3]);
            return ClasEnemy[3] = ClasWarriorNum[3];
            return HPEnemy = 10;
            return ATKpEnemy = 7;
        }
        static int EnemyArchLVL5()
        {
            ClasWarriorNum[3] = Convert.ToInt32(ClasWarrior[3]);
            return ClasEnemy[4] = ClasWarriorNum[3];
            return HPEnemy = 10;
            return ATKpEnemy = 7;
        }
 
 
 
 
        static int EnemyMastaLVL1()
        {
            ClasWarriorNum[4] = Convert.ToInt32(ClasWarrior[4]);
            return ClasEnemy[0] = ClasWarriorNum[4];
            return HPEnemy = 40;
            return ATKpEnemy = 17;
        }
        static int EnemyMastaLVL2()
        {
            ClasWarriorNum[4] = Convert.ToInt32(ClasWarrior[4]);
            return ClasEnemy[1] = ClasWarriorNum[4];
            return HPEnemy = 40;
            return ATKpEnemy = 17;
        }
        static int EnemyMastaLVL3()
        {
            ClasWarriorNum[4] = Convert.ToInt32(ClasWarrior[4]);
            return ClasEnemy[2] = ClasWarriorNum[4];
            return HPEnemy = 40;
            return ATKpEnemy = 17;
        }
        static int EnemyMastaLVL4()
        {
            ClasWarriorNum[4] = Convert.ToInt32(ClasWarrior[4]);
            return ClasEnemy[3] = ClasWarriorNum[4];
            return HPEnemy = 40;
            return ATKpEnemy = 17;
        }
        static int EnemyMastaLVL5()
        {
            ClasWarriorNum[4] = Convert.ToInt32(ClasWarrior[4]);
            return ClasEnemy[4] = ClasWarriorNum[4];
            return HPEnemy = 40;
            return ATKpEnemy = 17;
        }
 
 
 
        static int EnemyBiggyLVL1()
        {
            ClasWarriorNum[5] = Convert.ToInt32(ClasWarrior[5]);
            return ClasEnemy[0] = ClasWarriorNum[5];
            return HPEnemy = 50;
            return ATKpEnemy = 20;
        }
        static int EnemyBiggyLVL2()
        {
            ClasWarriorNum[5] = Convert.ToInt32(ClasWarrior[5]);
            return ClasEnemy[1] = ClasWarriorNum[5];
            return HPEnemy = 50;
            return ATKpEnemy = 20;
        }
        static int EnemyBiggyLVL3()
        {
            ClasWarriorNum[5] = Convert.ToInt32(ClasWarrior[5]);
            return ClasEnemy[2] = ClasWarriorNum[5];
            return HPEnemy = 50;
            return ATKpEnemy = 20;
        }
        static int EnemyBiggyLVL4()
        {
            ClasWarriorNum[5] = Convert.ToInt32(ClasWarrior[5]);
            return ClasEnemy[3] = ClasWarriorNum[5];
            return HPEnemy = 50;
            return ATKpEnemy = 20;
        }
        static int EnemyBiggyLVL5()
        {
            ClasWarriorNum[5] = Convert.ToInt32(ClasWarrior[5]);
            return ClasEnemy[4] = ClasWarriorNum[5];
            return HPEnemy = 50;
            return ATKpEnemy = 20;
        }
 
 
        static void FightMechanic()
        {
            MessWL("Твоя первая битва на арене НАЧАЛАСЬ!!");
            for (int i = 1; i <= 5; i++)
            {
                Random rEnemy = new Random();
                int Renmy = rEnemy.Next(1, 6);
                Console.WriteLine(EnemyLVL1[Renmy]);
                
            }
        }
 
 
 
 
 
 
 
 
 
 
 
 
        static void CHOICE()
        {
            MessWL("Окей, со своим типом ты определился.");
            MessWL("Ну что, готов взойти на Вершину? ([1] - да, [2] - нет):");
            int ConCH = InputKey();
            if (ConCH == 1)
            {
                FightMechanic();
            }
            else if (ConCH == 2)
            {
                CHOICE();
            }
        }
        static void CalcClas(int a)
        {
            if (a == 1)
            {
                ClasMainHero[a] = ClasWarriorNum[1];
                ClasWarriorNum[1] = Convert.ToInt32(ClasWarrior[1]);
                HPMHero = 100;
                ATKpMHero = 25;
                LVLpMHero = 0;
            }
             else if (a == 2)
            {
                ClasMainHero[a] = ClasWarriorNum[2];
                ClasWarriorNum[2] = int.Parse(ClasWarrior[2]);
                HPMHero = 80;
                ATKpMHero = 40;
                LVLpMHero = 0;
            }
             else if (a == 3)
            {
                ClasMainHero[a] = ClasWarriorNum[3];
                ClasWarriorNum[3] = int.Parse(ClasWarrior[3]);
                HPMHero = 70;
                ATKpMHero = 15;
                LVLpMHero = 0;
            }
             else if (a == 4)
            {
                ClasMainHero[a] = ClasWarriorNum[4];
                ClasWarriorNum[4] = int.Parse(ClasWarrior[4]);
                HPMHero = 110;
                ATKpMHero = 50;
                LVLpMHero = 0;
            }
             else if (a == 5)
            {
                ClasMainHero[a] = ClasWarriorNum[5];
                ClasWarriorNum[5] = int.Parse(ClasWarrior[5]);
                HPMHero = 125; 
                ATKpMHero = 55;
                LVLpMHero = 0;
            }
            
        }
        static int[] EnemyLVL1 = new int[5] { EnemyWarLVL1(), EnemyWizLVL1(), EnemyArchLVL1(), EnemyMastaLVL1(), EnemyBiggyLVL1() };
        static int[] EnemyLVL2 = new int[5] { EnemyWarLVL2(), EnemyWizLVL2(), EnemyArchLVL2(), EnemyMastaLVL2(), EnemyBiggyLVL2() };
        static int[] EnemyLVL3 = new int[5] { EnemyWarLVL3(), EnemyWizLVL3(), EnemyArchLVL3(), EnemyMastaLVL3(), EnemyBiggyLVL3() };
        static int[] EnemyLVL4 = new int[5] { EnemyWarLVL4(), EnemyWizLVL4(), EnemyArchLVL4(), EnemyMastaLVL4(), EnemyBiggyLVL4() };
        static int[] EnemyLVL5 = new int[5] { EnemyWarLVL5(), EnemyWizLVL5(), EnemyArchLVL5(), EnemyMastaLVL5(), EnemyBiggyLVL5() };
 
        static void MessWL(string messsage)
        {
            Console.WriteLine(messsage);
        }
        static void MessW(string messsage)
        {
             Console.Write(messsage);
        }
        static string InputString()
        {
            return Convert.ToString(Console.ReadLine());
        }
        static int InputKey()
        {
            return int.Parse(Console.ReadLine());
        }
    }
}
Но у меня ломается игра, когда я пытаюсь выбрать класс бойца и ругается на эту строку, говорит что "Input string was not in a correct format" и пишет про необработанное исключение
C#
1
ClasMainHero[a] = ClasWarriorNum[1];
Не могу понять, в чем проблема((( И так, и сяк пробовал, все равно ругается. В с# я не прям супер знаток, так что сильно не ругайте, еще учусь)))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.08.2021, 10:37
Ответы с готовыми решениями:

Пытаюсь сделать змейку в консоли :)
Всем привет, тут набросал небольшой код, хочу сделать змейку, но столкнулся с такой проблемой: Ведь змейка есть яблоки и растёт, я добавил...

Пытаюсь создать сайт...
Здравствуйте! Мне нужно сделать сайт. Простенький(4 странички), но красивый... Пробовал Publisher, но панель тамошней навигации не...

Пытаюсь создать прайс
Здравствуйте. у меня есть php прайс и БД mysql нужно, заполнить прайс из БД как это сделать? я пока полный ноль в этом. прайс по адресу...

2
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,394
22.08.2021, 10:56
Цитата Сообщение от aleeuz Посмотреть сообщение
Не могу понять, в чем проблема
Проблема в том, что вы не используете отладчик (debugger) чтобы понять в чём проблема.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
22.08.2021, 10:59
У меня ваш код даже не запускается, так как вы пытаетесь заполнить массив чисел методами, вот здесь:
C#
1
2
3
4
5
static int[] EnemyLVL1 = new int[5] { EnemyWarLVL1(), EnemyWizLVL1(), EnemyArchLVL1(), EnemyMastaLVL1(), EnemyBiggyLVL1() };
static int[] EnemyLVL2 = new int[5] { EnemyWarLVL2(), EnemyWizLVL2(), EnemyArchLVL2(), EnemyMastaLVL2(), EnemyBiggyLVL2() };
static int[] EnemyLVL3 = new int[5] { EnemyWarLVL3(), EnemyWizLVL3(), EnemyArchLVL3(), EnemyMastaLVL3(), EnemyBiggyLVL3() };
static int[] EnemyLVL4 = new int[5] { EnemyWarLVL4(), EnemyWizLVL4(), EnemyArchLVL4(), EnemyMastaLVL4(), EnemyBiggyLVL4() };
static int[] EnemyLVL5 = new int[5] { EnemyWarLVL5(), EnemyWizLVL5(), EnemyArchLVL5(), EnemyMastaLVL5(), EnemyBiggyLVL5() };
Так же совершенно непонятна идея десятка методов, которые содержат три return подряд, например
C#
1
2
3
4
5
6
7
static int EnemyBiggyLVL3()
{
    ClasWarriorNum[5] = Convert.ToInt32(ClasWarrior[5]);
    return ClasEnemy[2] = ClasWarriorNum[5];
    return HPEnemy = 50;
    return ATKpEnemy = 20;
}
-----------------------------------

Пока не имею возможности помочь, так как это полная неразбериха. Первый шаг в пошаговой rpg оказался слишком сложным для понимания.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2021, 10:59
Помогаю со студенческими работами здесь

Пытаюсь создать алфавит
Хочу внести в строку весь русский и латинский алфавит + символы.. В чем ошибка? include &lt;iostream&gt; using namespace std; ...

Пытаюсь создать матрицу
import random b = 1 c = 0 a = random.uniform(b, c) print = a выводит пустоту что я сделал не так ?

Пытаюсь создать установщик
Доброго времени суток ув форумчане. Пытаюсь создать Windows Installer. Как мне уже посоветовали чтобы использовать БД на другом компе...

Пытаюсь создать симулятор
Здравствуйте, я совсем не давно начал знакомится с PascalABC, да и с программированием в целом. И вот решил тут написать какой-то...

пытаюсь создать регистрацию
Нужно создать сайт по учёбе... пытаюсь сделать регистрацию по учебникам и почему то выдаёт непонятно что... кто знает в чём проблема?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru