|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.01.2015, 08:03 | #1 |
Регистрация: 06.01.2015
Сообщений: 4
|
Перемещение и размножение варваров в ASCII игре(Free Pascal)
Доброго времени суток. Я хочу понять, где в процедуре ошибка. Абсолютно не понимаю, что тут идет не так. Заранее спасибо за ответы и извините за код.
У меня некорректно работает процедура перемещения монстров - при движении друг за другом, в погоне за героем, монстры (те самые варвары) увеличивают своё поголовье таким вот образом: начало процедуры: @....bb (2 варвара('b') бегут со скоростью 2 клетки('.') в ход за героем('@'), между ними -пустое пространство в 4 клетки) конец процедуры: @..bb.b (уже 3 варвара движутся за героем) А должно быть так: @..b..b(задний варвар утыкается в переднего, останавливается, затем передний идет спокойно), или так: @..bb..(оба проходят вперед) Код процедуры перемещения монстров: Код:
|
06.01.2015, 15:06 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
Можно проектом (полный исходник)?
Понять что-то сложно, очень большая процедура, подумайте о декомпозиции. В Вашем примере непонятно тоже - варвары должны только продвинуться, или же должны ещё размножиться ? По каким правилам они размножаются ? Вы привели в описании "того, что должно быть" - только продвижение, причём 2 разных, которые тоже непонятно по какому принципу выбираются. В общем, нужны исходник и детальные описания : при какой начальной картинке должна получиться какая конечная, и что получается по факту. Ну и при возможности улучшить код - отрефакторить, прокомментировать и т.д. |
06.01.2015, 21:57 | #3 |
Регистрация: 06.01.2015
Сообщений: 4
|
И снова здравствуйте.
Я сделаю декомпозицию, но сначала хочу понять в чем ошибка. Код процедуры кажется мне довольно простым, но с добавлением финального else выявляется описанная проблема с "размножением" варваров- они не должны так делать, они должны все лишь двигаться к игроку на 1 клетку, а затем -еще на одну, так как их скорость - 2 (2-ой показатель в массиве monsterindex). Словами алгоритм в процедуре следующий: 0.повторяем: 1.находим в массиве monsterindex[здоровье,скорость,x,y] персонажа(не точку), чья скорость больше, чем количество совершенных ходов. 2.определяем расстояние до игрока 2.если лучник, то пробует стрелять один раз и останавливается. 3.если герой рядом, то бьет того один раз и останавливается. 4.если герой далеко, то движется к нему. 5.если препятствие на пути останавливается. 0.пока проверка всего массива не выявляет не ходивших песонажей, или не происходит бесконечный цикл(нет, сейчас он не происходит). Код и программа целиком тут: Ducktype.ucoz.ru. В программе уже 1000+ строк, но она может быть полезна кому-нибудь, кто захочет сделать что-нибудь своё в жанре roguelike. Я лично не нашел исходников других игр в Паскале. |
06.01.2015, 23:24 | #4 | |
Форумчанин
Регистрация: 28.11.2014
Сообщений: 172
|
А что значит фраза
Цитата:
происходит ли "размножение" если варвар наталкивается на другое препятствие?
Делать то, что любишь - это свобода. Любить то, что делаешь - счастье. (с)
Свободу киндерам! Счастья всем. Бесплатно. И пусть никто не уйдет обиженным. (с) Последний раз редактировалось OldOwlOll; 06.01.2015 в 23:28. |
|
07.01.2015, 00:18 | #5 | ||
Регистрация: 06.01.2015
Сообщений: 4
|
Цитата:
Цитата:
|
||
12.01.2015, 09:21 | #6 |
Регистрация: 06.01.2015
Сообщений: 4
|
Доброго времени суток. Вот так работает, спасибо всем, кто ответил.
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перемещение по матрице( Free Pascal) | Nastya1221 | Помощь студентам | 0 | 04.07.2012 18:08 |
free pascal | Риналь | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 05.04.2012 14:55 |
Turbo Pascal и Free Pascal , в чем разница? | antoxann | Паскаль, Turbo Pascal, PascalABC.NET | 31 | 09.11.2011 07:52 |
Free Pascal | GreenDay | Помощь студентам | 0 | 03.05.2011 08:55 |
а free pascal не читает задачи которые написаны на turbo pascal? | demonara | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 25.05.2009 16:28 |