Воскресенье, 29 Сентября 2024, 04:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Реализация алгоритма
OmikronДата: Понедельник, 11 Марта 2013, 18:31 | Сообщение # 1
уже был
Сейчас нет на сайте
Здравствуйте!
Имеется flash игра под названием Cursor 10. В которой главный элемент геймплея - повтор действий игрока.

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

P.S если я написал не в тот раздел, заранее извиняюсь.


Сообщение отредактировал Omikron - Понедельник, 11 Марта 2013, 18:31
TimKruzДата: Понедельник, 11 Марта 2013, 22:51 | Сообщение # 2
старожил
Сейчас нет на сайте
Алгоритм прост. Нужно запоминать в какой-нибудь структуре данных либо каждое конкретное действие игрока, например, делать записи вида [[действие=клик][позиция:[x=10][y=30]]]; либо записывать изменения постоянного действия, например, когда игрок двигался постоянно вверх, была сделана запись [[действие=движение][направление=вверх][скорость= 6 пикс/сек][длительность= 4 сек]], а когда он изменил направление движения на "влево" - появилась запись [[действие=движение][направление=влево][скорость= 4 пикс/сек][длительность= 3 сек]].

Итого получается структура данных, имеющая примерно такой вид:
Код
[[действие=движение][направление=вверх][скорость= 6 пикс/сек][длительность= 4 сек]]
[[действие=клик][позиция:[x=10][y=30]]]
[[действие=движение][направление=влево][скорость= 4 пикс/сек][длительность= 3 сек]
<...>
[[действие=...][позиция:[x=...][y=...]][направление=...][скорость=...][длительность=...][что-нибудь_ещё=...]]

Эта структура интерпретируется уже в нужные действия в прямом или обратном порядке (в обратном для, например, эффекта возвращения во времени).

***
Если хочешь конкретный код - вот примерный вид подобной записи на языке с паскалевским синтаксисом:
Код
type
   TPoint2f=record //запись координат или вектора
     x,y:single;
   end;
   //перечисляемый тип доступных действий:
   TActions=(AWalking, AStanding, AJumping, ADoing);
   TTimeRecord=record
     action:TActions; //какое действие совершается
     at:TPoint2f; //где действие происходит (точка)
     angle:single; //куда направлено (угол) действие
     speed:single; //скорость происходящего действия
     duration:single; //продолжительность действия
     ex1:byte; //дополнительный параметр действия для уточнения,
     //например ADoing означает совершение действия, но
     //неизвестно какого (как в РПГ, например, много похожих действий)
   end;
var
   TimeStack:array of TTimeRecord; //динамический массив записей




Сообщение отредактировал TimKruz - Понедельник, 11 Марта 2013, 23:11
OmikronДата: Вторник, 12 Марта 2013, 16:00 | Сообщение # 3
уже был
Сейчас нет на сайте
Большое спасибо! Идея в общем понятна, я примерно так и думал делать. Буду пытаться сначала простую запись и вывод реализовывать. Надеюсь получиться.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг