Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # CLASS: main_header
- Доисторическая схватка
- # IMAGE: images/logo.gif|Вступительная анимация с охотником у костра под деревом
- Если вы готовы, то выберите
- * [Начать]
- Лёгкий ветерок над пустынной равниной дарит небольшую прохладу после знойного дня. Охотник прислонился к стволу дерева и спокойно наблюдает за магическим пламенем. В этот год ему удасться сохранить его, если неподалёку отыщется еще несколько деревьев. Верное копьё, с каменным наконечником лежит возле левой ноги. Небольшой шорох из ближайших кустов и уже его руки крепко сжимают древко. Только не это, кажется на этой небогатой земле появился еще один охотник - не знающий пощады. Зубастая морда высунулась из-за кустов и начался древнейший танец смерти.
- -> init_and_start_knot
- -> END
- //Узел для инициализации значений переменных
- === init_and_start_knot ===
- //Текущие состояния объектов игры
- LIST hero_state_list = far_tree, near_tree, up_tree
- VAR hero_state = far_tree
- LIST dino_state_list = dino_visible, dino_hidden, dino_run
- VAR dino_state = dino_visible
- LIST pike_state_list = pike_in_hands, pike_on_land
- VAR pike_state = pike_in_hands
- LIST action_list = cmd_wait, cmd_throw, cmd_up, cmd_hit
- VAR was_hit_tree = false //признак удара по ветке (когда над ней)
- VAR is_end = false //признак окончания игры
- //Константы для удобства вычитки и редактирования
- CONST T_NOT_WORK = "Не сработало. "
- CONST T_HUNTER_WAIT = "Охотник немного подождал. "
- CONST T_THROW_FAILED = "Охотник не может подобрать удобную позицию чтобы метнуть копьё, зверюга очень изворотливая."
- CONST T_THROW_BLIND = "Присмотревшись к кустам, охотник понимает, что вслепую атаковать бессмысленно."
- CONST T_COME_CLOSER = "Пока динозавр скрывался охотник тихонько подкрался ближе к стволу дерева."
- CONST T_TREE_BLOCKED = "Динозавр не даёт влезть на дерево!"
- CONST T_TREE_BRANCH_FAR = "Над костром проходит только кончик ветки. Когда охотник по нему стукнул, пара листьев упала в костёр."
- CONST T_THROW_COMPLITED = "Охотник со всей силы бросил копьё, но динозавр успел увернуться и от страха убежал."
- CONST T_TAKE_PIKE = "Чтобы еще раз метнуть копьё охотник выждал удобный момент и бросился за костёр, вырвав из земли оружие."
- CONST T_CLIMB_COMPLETED = "Динозавр как ни пытался схватить лезущего вверх охотника, эму это не удалось."
- CONST T_DINO_STRIKE = "Рык и свирепые броски монстра заставили охотника отойти за костёр."
- CONST T_TREE_BRANCH_CLOSER ="Над охотником проходит мощный ствол, но кажется он немного надломлен, снизу ничего не сделать."
- CONST T_TREE_HIT_FIRST = "Сильно ударив ногой по ветке,послышался хруст, но охотник не удержался и упал на землю. Быстро опомнившись, он подбежал к копью и выставил его против зверя."
- CONST T_TREE_HIT_SECOND = "Второй удар по ветке заставил вспыхнуть костёр, который опалив динозавра обратил его в бегство. Путь свободен, победа!"
- CONST T_CLIMB_UPPER = "Когда охотник начал лезть выше по гладкому стволу, его рука соскользнула и он потерял равновесие, пришлось бросить горсть земли в сторону врага и быстро убежать за костёр."
- CONST T_WAIT_ON_TREE = "Охотник решил притаиться на дереве, но когда пара когтей полоснула его по ноге, пришлось спрыгнуть и отступить за костер."
- CONST T_TAKE_PIKE_ON_TREE = "Копьё находилось за костром. Охотнику пришлось быстро пробежаться по ветке и мощным прыжком перемахнуть через костёр."
- CONST T_STATE_HERO_FAR = "Охотник сквозь пламя костра видит раскидистое дерево."
- CONST T_STATE_HERO_NEAR = "Охотник стоит под деревом."
- CONST T_STATE_HERO_ON_TREE ="Охотник на дереве, крепко держится за ствол."
- CONST T_STATE_DINO_VISIBLE ="Динозавр рычит и скребёт когтями."
- CONST T_STATE_DINO_HIDDEN = "Динозавр прыгнул в ближайшие кусты и поджидает другую добычу."
- CONST T_STATE_DINO_RUN = "Динозавра не видно после метания копья."
- CONST T_STATE_PIKE_IN_HANDS="В руках охотник крепко сжимает копьё."
- CONST T_STATE_PIKE_ON_LAND ="Копье торчит в земле неподалёку от костра."
- CONST T_FIN_TEXT ="После долгих месяцев скитаний охотник нашёл свою судьбу."
- ->game_knot
- //Узел игры
- === game_knot ===
- {is_end:
- # IMAGE: images/woman_fin.jpg|Финальная заставка - девушка сидит спиной с оголённым плечом
- # CLASS: end
- {T_FIN_TEXT}
- -> END
- }
- {print_hero_state(hero_state)} <>
- {print_dino_state(dino_state)} <>
- {print_pike_state(pike_state)}
- + [Ждать]
- {update_states(cmd_wait)}
- ->game_knot
- + [Метнуть копьё]
- {update_states(cmd_throw)}
- ->game_knot
- + [Лезть на дерево]
- {update_states(cmd_up)}
- ->game_knot
- + [Ударить ветку]
- {update_states(cmd_hit)}
- ->game_knot
- -> END
- //Функция обработчик состояний
- === function update_states(cmd_type)
- //По умолчанию выдаём отклик, похожий на инстед-реализацию
- ~ temp action_result = T_NOT_WORK
- //Запоминаем текущие состояния, чтобы автоматы работали параллельно, при изменении в ходе обработки
- ~ temp curr_dino_state = dino_state
- ~ temp curr_pike_state = pike_state
- ~ temp curr_hero_state = hero_state
- {cmd_type == cmd_wait:
- ~action_result = T_HUNTER_WAIT
- }
- //Обновляем динозавра
- {
- -dino_state == dino_visible:
- //Если бросаем копье, когда динозавр видим, то он убегает, иначе он просто скрывается
- {curr_hero_state == near_tree && cmd_type == cmd_throw:
- ~dino_state = dino_run
- -else:
- ~dino_state = dino_hidden
- }
- {curr_hero_state != near_tree && cmd_type == cmd_throw:
- ~action_result = T_THROW_FAILED
- }
- -else:
- {cmd_type == cmd_throw:
- ~action_result = T_THROW_BLIND
- }
- //динозавр снова на виду
- ~dino_state = dino_visible
- }
- //Обновляем героя
- {
- -curr_hero_state == far_tree:
- {
- //Переходим к дереву, если пытаемся влезть на дерево, а дино нет на месте
- -cmd_type == cmd_up && curr_dino_state != dino_visible:
- ~hero_state = near_tree
- ~action_result = T_COME_CLOSER
- -cmd_type == cmd_up && curr_dino_state == dino_visible:
- ~action_result = T_TREE_BLOCKED
- -cmd_type == cmd_hit:
- ~action_result = T_TREE_BRANCH_FAR
- }
- -curr_hero_state == near_tree:
- {
- //При броске копья оставляем его на другой стороне
- -cmd_type == cmd_throw && curr_pike_state == pike_in_hands:
- ~pike_state = pike_on_land
- ~action_result = T_THROW_COMPLITED
- //Если пытаемся еще раз бросить, то переходим за костер и берем в руки
- -cmd_type == cmd_throw && curr_pike_state == pike_on_land:
- ~pike_state = pike_in_hands
- ~action_result = T_TAKE_PIKE
- //Залезаем на дерево, когда динозавр убежал от копья
- -cmd_type == cmd_up && curr_dino_state == dino_run:
- ~hero_state = up_tree
- ~action_result = T_CLIMB_COMPLETED
- //Возвращаемся за костёр, если увидели динозавра
- -(cmd_type == cmd_wait || cmd_type == cmd_up) && curr_dino_state == dino_visible:
- ~hero_state = far_tree
- ~action_result = T_DINO_STRIKE
- -cmd_type == cmd_hit:
- ~action_result = T_TREE_BRANCH_CLOSER
- }
- -curr_hero_state == up_tree:
- {
- //Запоминаем попытку удара по дереву
- -cmd_type == cmd_hit && was_hit_tree==false:
- ~was_hit_tree =true
- ~hero_state = far_tree
- ~pike_state = pike_in_hands
- ~action_result = T_TREE_HIT_FIRST
- -cmd_type == cmd_hit && was_hit_tree==true:
- ~is_end = true
- ~action_result = T_TREE_HIT_SECOND
- -cmd_type == cmd_up:
- ~hero_state = far_tree
- ~action_result = T_CLIMB_UPPER
- -cmd_type == cmd_wait:
- ~hero_state = far_tree
- ~action_result = T_WAIT_ON_TREE
- -cmd_type == cmd_throw:
- ~hero_state = far_tree
- ~action_result = T_TAKE_PIKE_ON_TREE
- }
- }
- ~return action_result
- //Состояния героя
- === function print_hero_state(state) ===
- {
- - state == far_tree:
- ~ return T_STATE_HERO_FAR
- - state == near_tree:
- ~ return T_STATE_HERO_NEAR
- - state == up_tree:
- ~ return T_STATE_HERO_ON_TREE
- }
- //Состояния динозавра
- === function print_dino_state(state) ===
- {
- - state == dino_visible:
- ~ return T_STATE_DINO_VISIBLE
- - state == dino_hidden:
- ~ return T_STATE_DINO_HIDDEN
- - state == dino_run:
- ~ return T_STATE_DINO_RUN
- }
- //Состояния копья
- === function print_pike_state(state) ===
- {
- - state == pike_in_hands:
- ~ return T_STATE_PIKE_IN_HANDS
- - state == pike_on_land:
- ~ return T_STATE_PIKE_ON_LAND
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement