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

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2013, 14:58
Ответы с готовыми решениями:

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

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

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

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

39
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
25.06.2013, 00:19 2
используйте сереализацию класса, лучше всего xaml
1
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
25.06.2013, 00:43 3
Знаю что в World of Warcraft используется SQL база данных для таких задач. (Я про известные эмуляторы)
1
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 06:06  [ТС] 4
Цитата Сообщение от Aloir Посмотреть сообщение
используйте сереализацию класса, лучше всего xaml
Вот спасибо! То что нужно, ушел разбираться
0
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
25.06.2013, 06:18 5
Да, такие задачи однозначно через БД делаются и никак иначе =)
1
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 07:53  [ТС] 6
Люди добрые, снова нужна ваша помощь. При использовании такого кода:
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
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
25.06.2013, 07:56 7
Ну тебе же сказали делать через базы данных, что ты опять мудришь?)
1
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 08:09  [ТС] 8
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Ну тебе же сказали делать через базы данных, что ты опять мудришь?)
вот такой вот я )
Хм, а если серьезно, тогда встает другой вопрос - какую БД использовать?
Например если я буду использовать БД MS SQL-Server, мне не понадобиться к своей игре еще какой-нибудь SQL-Server Express прикручивать, для запуска на стороннем ПК?
Другое дело, какой-нибудь .NET Framework в инсталлятор запихнуть...
0
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
25.06.2013, 08:26 9
понадобится, но если так критично, то можно хранить в access =) хотя может и с мс скул не понадобится, по идее должно работать с файлом базы данных, тут конечно порыскать надо на эту тему чутка =) А я думал, что у тебя будет онлайн приложение, а не десктопное =)
0
13 / 13 / 2
Регистрация: 20.02.2013
Сообщений: 145
25.06.2013, 08:32  [ТС] 10
Ни-ни-ни, в онлайн мне еще рановато ))
Обычный, суровый сингл )

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

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

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

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

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

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

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

И я подумал, а можно-ли вместо обычной папки creatures, создать какой-нибудь файл creatures.pack, или .dat (расширение то не суть важно, там же что угодно придумать можно) в котором и будут хранится все мои 30 файлов с монстрами. Т.е. вроде как архив (только без сжатия) и в тоже время не архив (ну по крайней мере не стандартный .rar .zip и т.д.). Почитал на одном форуме, посвященном извлечению различных игровых ресурсов, так там подобные файлы называют псевдо-архивами. Вот и вбил себе в голову, не подумав что "труЪ" название может быть другим ))
0
25.06.2013, 14:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2013, 14:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru