Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/107: Рейтинг темы: голосов - 107, средняя оценка - 4.57
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145

Текстовый рпг-квест

24.06.2013, 14:58. Показов 22116. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток. С недавних пор (по просьбе пары друзей и знакомых) взялся разрабатывать простенький текстовый (со статичными картинками) рпг-квест, по одной известной настолке. Поначалу все было норм, реализовал ролевую систему прокачки навыков, боевку, инвентарь и т.д. Все вроде работает как надо. Однако, столкнулся с одной проблемой. Сейчас у меня три игровые локации, два НПСа, и шесть видов врагов. И вся информация о них (скилы, переходы и т.д.) инициализируется вручную в массивах непосредственно во время запуска игры. И если с полдюжиной мобов это еще куда не шло, то реализовывать такой способ загрузки для полусотни видов (планирую примерно столько) вражин, как-то не айс. То-же самое можно сказать и о реализации оружия, доспехов и много чего еще. Естественно я тут-же подумал о файлах. И вот тут-то я столкнулся с такой проблемой.
Допустим у меня есть класс монстров

C#
1
2
3
4
5
6
7
8
9
class Monster
{
public string name; // имя супостата
public int hp; //кол-во жизней
public int atk; //сила атаки
public int atktype; //тип атаки (1-колющая, 2 - режущая, 3-рубящая и т.д)
public int def; //уровень защиты
public int deftype; //тип защиты (по принципу типа атаки)
}
Возникла идея написать небольшую утилиту для создания нетипизированного файла в который я буду добавлять новых врагов. Помню в делфи был такой замечательный тип файла record. Есть ли подобный аналог в Шарпе? Если нет, то что можете посоветовать? Желательно чтобы файл был защищен от редактирования (о супер-пупер защите я не прошу, достаточно защиты от всяких "Блокнотов")

И как в дальнейшем реализовать загрузку данных по классу Monster из этого файла? Допустим у меня 10 монстров в файле. Можно-ли динамически создать нужное количество объектов класса Monster?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.06.2013, 14:58
Ответы с готовыми решениями:

Создание квест-игры
Нужно создать текстовую квест-игру или скорее визуальную новеллу. По типу: сделал одно действие (нажал кнопку), стало доступно другое...

Текстовый квест
Привет всем. Нужно переделать текстовый квест с алгоритмического языка на php. С чего начать? Как сделать текстовое поле,в котором будут...

Текстовый квест
Подскажите, кто может помочь в написании текстового квест на с++?; В универе задали создать текстовый квест, что-почем, с чего начать (идея...

39
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
25.06.2013, 00:19
используйте сереализацию класса, лучше всего xaml
1
 Аватар для MrGladus
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
25.06.2013, 00:43
Знаю что в World of Warcraft используется SQL база данных для таких задач. (Я про известные эмуляторы)
1
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 06:06  [ТС]
Цитата Сообщение от Aloir Посмотреть сообщение
используйте сереализацию класса, лучше всего xaml
Вот спасибо! То что нужно, ушел разбираться
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 06:18
Да, такие задачи однозначно через БД делаются и никак иначе =)
1
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 07:53  [ТС]
Люди добрые, снова нужна ваша помощь. При использовании такого кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Monster[] zver = new Monster[i+1];
            zver[i] = new Monster();
            zver[i].id = i;
            zver[i].name = textBox1.Text;
            zver[i].hp = textBox2.Text;
            zver[i].atk = textBox3.Text;
            zver[i].def = textBox4.Text;
            XmlSerializer writer = new XmlSerializer(typeof(Monster));
 
            StreamWriter monsterfile = new StreamWriter("monsterbook.xml");
            writer.Serialize(monsterfile, zver[i]);
            monsterfile.Close();
            monsterfile.Dispose();
            MessageBox.Show("Запись успешно добавлена");
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            i++;
Зараза, постоянно перезаписывает файл monsterbook.xml как сделать дозапись?

Добавлено через 7 минут
Все, разобрался
C#
1
StreamWriter monsterfile = new StreamWriter(File.Open("monsterbook.xml",FileMode.Append));
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 07:56
Ну тебе же сказали делать через базы данных, что ты опять мудришь?)
1
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 08:09  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Ну тебе же сказали делать через базы данных, что ты опять мудришь?)
вот такой вот я )
Хм, а если серьезно, тогда встает другой вопрос - какую БД использовать?
Например если я буду использовать БД MS SQL-Server, мне не понадобиться к своей игре еще какой-нибудь SQL-Server Express прикручивать, для запуска на стороннем ПК?
Другое дело, какой-нибудь .NET Framework в инсталлятор запихнуть...
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 08:26
понадобится, но если так критично, то можно хранить в access =) хотя может и с мс скул не понадобится, по идее должно работать с файлом базы данных, тут конечно порыскать надо на эту тему чутка =) А я думал, что у тебя будет онлайн приложение, а не десктопное =)
0
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 08:32  [ТС]
Ни-ни-ни, в онлайн мне еще рановато ))
Обычный, суровый сингл )

Вот теперь я окончательно запутался, нужна мне БД или нет?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 10:57
НУЖНА =) просто нужно подобрать лучшую для твоего случая =)
1
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 11:37  [ТС]
А если так? :
1) Создавать отдельный сериализуемый файл для каждого существа.
2) Запаковать все файлы отдельной категории (допустим монстры) в псевдо-архив

Тогда возникает вопрос, как создаются псевдо-архивы на шарпе?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 12:19
вам самому потом как работать с этой инфой будет ?) захотите вы вдруг поглядеть какие-то данные, просто глазами, и что тогда?) создавать для этого еще одну отдельную программу для просмотра данных ?)
0
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 12:28  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
вам самому потом как работать с этой инфой будет ?) захотите вы вдруг поглядеть какие-то данные, просто глазами, и что тогда?) создавать для этого еще одну отдельную программу для просмотра данных ?)
Ну это не так уж страшно по сути так ведь игры (по крайней мере оффлаиновые) и работают.
+ ничего кроме самого NET.Framework мне добавлять в инсталлятор не понадобится.

З.Ы. для просмотра БДшки, тож левые проги понадобятся ))
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 13:04
для просмотра БД понадобится СУБД и все=) но вам там ничего самому писать не придется =) ну подумаешь был бы там еще 1 файл с БД, это так страшно? вам все равно понадобится тогда добавлять еще кучу ваших файликов, в которых лежит инфа)
1
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 13:20  [ТС]
Ну не знаю, по мне, так в оффлайновом приложении вполне можно без БД обойтись. Да и делают ли через БД? Ни одной десктопной игрушки не видел, где данные хранятся в БДшке
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 13:57
на счет игрушек не знаю, но так десктопные часто с БД делают, в любом случае решать вам, как хотите, так и делайте =) если что потом к другой реализации перейдете
1
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 14:07  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
на счет игрушек не знаю, но так десктопные часто с БД делают, в любом случае решать вам, как хотите, так и делайте =) если что потом к другой реализации перейдете
Согласен если с файлами не получится, то попробую на БД

Что-же делать то? Нигде даже каплю инфы найти не могу, о создании псевдо-архивов Помогите кто-может, пожалуйста. Хоть ссылочку с описанием и примерами.

З.Ы может у псевдоархивов есть какое-то более правильное название, а я дурак не то гуглю?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
25.06.2013, 14:20
я вообще не понимаю, что за псевдо-архивы ?

Добавлено через 3 минуты
максимум что нашлось, это архивирование с помощью либы: http://social.msdn.microsoft.c... ib-net-net

Добавлено через 4 минуты
что вы подразумевали под словами псевдо архив?)
0
 Аватар для Мрачный
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 14:31  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
я вообще не понимаю, что за псевдо-архивы ?
Вооот, теперь ясно, это я неправильное название использую
В общем и целом ситуация такая. Намучавшись с добавлением и извлечением информации в единый бинарный файл (то не работает, то работает, но криво) я изменил принцип. Теперь для каждого нового вида существ у меня создается отдельный бинарный файл, из которого по ID-шнику (оно же название файла) легко и безошибочно вытаскиваются требуемые данные.
Таким образом, у меня сейчас в дирректории игры существует папка creatures, в которой лежат уже, наверное штук 30 файлов (читай 30 видов монстров).

И я подумал, а можно-ли вместо обычной папки creatures, создать какой-нибудь файл creatures.pack, или .dat (расширение то не суть важно, там же что угодно придумать можно) в котором и будут хранится все мои 30 файлов с монстрами. Т.е. вроде как архив (только без сжатия) и в тоже время не архив (ну по крайней мере не стандартный .rar .zip и т.д.). Почитал на одном форуме, посвященном извлечению различных игровых ресурсов, так там подобные файлы называют псевдо-архивами. Вот и вбил себе в голову, не подумав что "труЪ" название может быть другим ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2013, 14:31
Помогаю со студенческими работами здесь

Текстовый квест
Доброго времени суток господа. Возникла не большая заминка, задали написать текстовую игру на подобие квеста, минимум из 5 действий. К...

Текстовый квест на питоне
Напишите небольшой текстовый квест. Пользователю сообщается, что его персонаж находится в комнате, из которой есть несколько ходов (не...

Текстовый квест. Алгоритм решения
Решил заняться разработкой игр и решил начать с малого, текстовых квестов. Но как оказалось тут есть много нюансов, один из которых это...

Текстовый квест прошу советов
Добрый день. Решил разработать текстовый квест на android пишу на java. Есть несколько вопросов, может кто-то поможет с ними. В игре будут...

Текстовый квест в стилистике 90х
Доброго времени суток! У меня есть желание создать текстовый квест в стилистике 90х (или косморейнжеров ;) ) с пиксельартом в C#. Понятие...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru