Моя попытка

Закрытые или заброшенные проекты, не состоявшие в Клубе, но имевшие ветку на форуме.

Модератор: Jolly Roger

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Моя попытка

Сообщение kipar » 21 апр 2010, 16:45

В других методов для этого надо было бы создавать полностью новый класс, заполнять с нуля все его переменные и методы(включая cHelmet::Equip())
Категорически не согласен.
Во-первых (рассматриваю метод 3), класс будет один, TArmor, различается только переменная Slot.

Во-вторых, допустим в учебных целях, что это все-таки два разных класса. Тогда надо грамотно использовать наследование. Наследуем оба класса от TWearable с методом Equip, объявляем в TWearable абстрактную функцию GetSlot, переопределяем ее в потомках. Собственно, если это единственное отличие шлема от сапогов, то больше НИЧЕГО в этом классе переопределять не придется, все унаследовано от TWearable.
код в любом случае разрастётся, в остальных случаях за счёт других классов.
Вот только новый для добавляемого предмета код надо будет не дописывать новые пункты в switch в десятке мест, а объявить новый класс в отдельном модуле и всю специфику предмета реализовывать в нем.

Имхо первый метод приемлем если заранее известны все предметы и не планируется ничего добавлять или усложнять. Какой-нибудь 7DRL. Потому что иначе все эти switch могут превратиться в безумие. Например - вводим новый предмет, платок. Его можно надевать и на голову и на руку. Получается придется делать еще проверки, если не занята нолова - на голову надеваем, иначе на руку (все это в той же функции equip), потом еще дополнительные проверки для двуручного оружия. Все это несложно написать, но вот прочитать будет все сложнее.

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 20 окт 2010, 13:15

Очередная версия.
До реализации предметов так и не добрался. :(
Скриншот:
Скрытый текст: ПОКАЗАТЬ
RLG.png
Скриншот
RLG.png (46.68 КБ) 7925 просмотров
Вложения
RLG.zip
JAR в архиве ZIP
(29.63 КБ) 212 скачиваний

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Моя попытка

Сообщение kipar » 20 окт 2010, 16:41

В логе не пишутся действия героя, только зверей.
Кнопки пропускания хода нет? - нашел, S
Звери иногда вместо атаки совершают случайные ходы - так задумано?
Миникарта не повредила бы а нет, масштабирование есть - с ним даже прикольнее.
В прошлой версии, помнится, подземелья были - уже нет? Или я просто вход не смог найти.
Береговая линия - вроде бы нормальная. Разве что сейчас не остров, а озеро обычно получается.

А так все круто - где моар! Хотя бы подземелье по методу муравейника добавь :) . Или деревню с жителями.

-----
Хм, подземелье нашел. Правда в нем сразу убили. Буду еще пробовать.

---
В общем больше всего раздражает, что опыт за зайцев дают не всегда. Так задумано или это глюк? Больше 7 опыта не смог набрать :( и то - это если найти вход в комнату без троллей и ныкаться в нее в случае опасности.
Кстати подозреваю, что зайцы едят зайцев, а волки - волков. А один раз показалось, что вообще заяц волка съел)

ADB

Re: Моя попытка

Сообщение ADB » 20 окт 2010, 20:17

Забавная игрулина получилась. Особенно впечатлила реализация крови. =D>
Оружие было бы весьма кстати. :wink:

Открыл одну из дверей в подземелье, а там глухая стена.
Почему встречается кровь там, где герой еще не был, кого-то убивают без моего участия?

Аватара пользователя
Toth
Сообщения: 327
Зарегистрирован: 11 ноя 2009, 13:36
Откуда: Красноярск

Re: Моя попытка

Сообщение Toth » 21 окт 2010, 00:16

Забавно. Автор пиши еще.
- Не смог убить волка, сколько не пытался.
- Подземелье, да, просто квадрат огороженный стенами. Нужно чтобы обязательно было.
- Кровь - отличная!
Почему встречается кровь там, где герой еще не был, кого-то убивают без моего участия?
Как я понял, при столкновениях монстры тоже бьют друг друга. Когда убегал от волка, на хвост упал еще один и загрыз первого.

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Моя попытка

Сообщение kipar » 21 окт 2010, 04:33

Toth писал(а):- Не смог убить волка, сколько не пытался.
С полными хитами я в 50% случаев волка убиваю :P

Кстати, Newman, насколько я понимаю Java, эту игру можно будет без особых проблем портировать на кпк\телефоны?

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 21 окт 2010, 04:53

Всем привет!
Даже не ожидал, что на меня обратят такое внимание, большое вам спасибо!
Сейчас отвечу на вопросы и замечания:
kipar писал(а):Звери иногда вместо атаки совершают случайные ходы - так задумано?
kipar писал(а):Кстати подозреваю, что зайцы едят зайцев, а волки - волков. А один раз показалось, что вообще заяц волка съел)
AI ещё будет дорабатываться. Сейчас - звери кроме собственно погони за главным героем делают случайные перемещения. Если в процессе хода они попадают в клетку, где кто-то уже есть - они совершают "атаку". Так, в общем, волки нападают на волков, и есть вероятность, что какой-нибудь захудалый заяц загрызёт волка. :)
kipar писал(а):Кнопки пропускания хода нет? - нашел, S
S - это не только пропуск хода, это ещё команда поиска. Поиск скрытых проходов в подземелье, к примеру. :)
kipar писал(а):Миникарта не повредила бы а нет, масштабирование есть - с ним даже прикольнее.
Миникарта будет. С ней удобнее.
kipar писал(а):Береговая линия - вроде бы нормальная. Разве что сейчас не остров, а озеро обычно получается.
Генерацию острова буду переделывать. Сейчас генератор острова прикручиваю к генератору подземелий, теперь понял, что это неправильно. Отдельно будет генератор острова, отдельно - подземелья...
kipar писал(а):В общем больше всего раздражает, что опыт за зайцев дают не всегда.
Ролевая система, начисление опыта в разработке. :( Опыт сейчас даётся случайно от 0 до некоторого значения.
ADB писал(а):Оружие было бы весьма кстати.
Оружие, доспехи, свитки будут. Я пока точно не решил, как их реализовывать. :( Но - реализую!
Toth писал(а):Не смог убить волка, сколько не пытался.
Когда будет доспехи и оружие - жизнь несколько облегчится. Сейчас же по лесу бегает голый человек - много он волков задушит голыми руками? :)
ADB писал(а):Открыл одну из дверей в подземелье, а там глухая стена.
Есть функция поиска - S... Помощь по командам тоже будет. :)
ADB писал(а):Почему встречается кровь там, где герой еще не был, кого-то убивают без моего участия?
Потому что кто-то случайно атаковал (или даже убил) кого-то. :) И получил за это опыт.
Toth писал(а):- Не смог убить волка, сколько не пытался.
С полными хитами я в 50% случаев волка убиваю :P
kipar писал(а):Кстати, Newman, насколько я понимаю Java, эту игру можно будет без особых проблем портировать на кпк\телефоны?
[/quote]
Насчёт КПК не знаю - ни разу не держал в руках подобное устройство.
А телефон у меня с экранчиком 176*220 - ну что за игры при подобном разрешении? :(
Хотя... у меня все уровни подземелья хранятся в памяти и по всем бегают монстры - думаю, мобильное устройство такой расход памяти просто не потянет. :(

Ещё раз всем спасибо!

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 21 окт 2010, 06:14

Кстати, я подумал и решил, что, если у всех существ рахная скорость и разные кулдауны (или как оно правильно называется), то всё же оптимальным решением будет создать некий упорядоченный массив (PriorityQueue) с данными, что в какое время должно происходить (на 1234 ходу должно походить существо №42, на 1256 ходу - испортиться мясо в инвентаре героя и т.п.).

Другая идея - всё же буду реализовывать каждый (основной) тип монстров своим собственным классом... Гибче и удобнее, чем делать многочисленные проверки на флаги...

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Моя попытка

Сообщение kipar » 21 окт 2010, 07:06

некий упорядоченный массив (PriorityQueue) с данными
Вот тут, например, системы тайминга обсуждались...
viewtopic.php?f=7&t=379
Если просто нужна разная скорость у монстров - можно просто у каждого монстра запоминать, когда он в следующий раз пойдет (через 1000, 900, или 1200 тактов), ну и каждый раз перебирать всех монстров.

Но с массивом, конечно, более гибко и по скорости оптимальнее.

Монстров... Если они различаются только картинкой и хп, то какой смысл? Чтоб одинаковые монстры друг друга не били - можно сделать параметр "Фракция". А если у них будет поведение разное - тогда да, легче через классы реализовать (хотя тоже можно изощриться и тип АИ\параметры АИ свойствами объекта сделать, но это уже спорно).

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 27 окт 2010, 05:00

Перебирать всех монстров, все предметы (некоторые со временем портятся), все клетки карты (кое-где со временем тоже должно происходить) - это слишком долго...
Выкладываю новую версию, но изменений катастрофически мало. :(
Реализовал новую систему тайминга (с PriorityQueue), изменил алгоритм пятен крови, добавил "трупы" животных...
Если доберётесь до подземелья и не увидите в комнате выходов - попробуйте поискать тайный проход (клавиша S).
Теперь - решил в очередной раз переписать ядро с нуля.... :( :( :( Увы...
Вложения
rlg.zip
JAVA приложение.
(33.35 КБ) 168 скачиваний

Аватара пользователя
Toth
Сообщения: 327
Зарегистрирован: 11 ноя 2009, 13:36
Откуда: Красноярск

Re: Моя попытка

Сообщение Toth » 27 окт 2010, 12:38

Реализовал новую систему тайминга (с PriorityQueue)
Уже много сделал.
Теперь - решил в очередной раз переписать ядро с нуля
Если уж ставить смайлики - то: :D :D :D

andipas
Сообщения: 7
Зарегистрирован: 03 ноя 2010, 09:52

Re: Моя попытка

Сообщение andipas » 03 ноя 2010, 09:57

Теперь - решил в очередной раз переписать ядро с нуля
Я программирую на PHP, хотел бы в качестве ознакомления с языком JAVA написать небольшой рогалик.
Посоветуйте что почитать и какой делать архитектуру.

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 03 ноя 2010, 10:52

Если б я сам знал правильные ответы!!!! :shock:

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 05 ноя 2010, 07:00

А если серьёзно - ежели знакомство с Java только начинается, посмотрите http://download.oracle.com/javase/tutorial - The Java Tutorials.

Если уже задумали приступить собственно к рогалику, посмотрите перед этим http://roguebasin.roguelikedevelopment. ... title=Java

Аватара пользователя
Toth
Сообщения: 327
Зарегистрирован: 11 ноя 2009, 13:36
Откуда: Красноярск

Re: Моя попытка

Сообщение Toth » 05 ноя 2010, 13:10

Я программирую на PHP, хотел бы в качестве ознакомления...
Насколько знаю, на php нет рогаликов, ниша - не заделана.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя