Advertisement
Guest User

Untitled

a guest
Sep 17th, 2018
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.34 KB | None | 0 0
  1. # CLASS: main_header
  2. Доисторическая схватка
  3. # IMAGE: images/logo.gif|Вступительная анимация с охотником у костра под деревом
  4. Если вы готовы, то выберите
  5. * [Начать]
  6. Лёгкий ветерок над пустынной равниной дарит небольшую прохладу после знойного дня. Охотник прислонился к стволу дерева и спокойно наблюдает за магическим пламенем. В этот год ему удасться сохранить его, если неподалёку отыщется еще несколько деревьев. Верное копьё, с каменным наконечником лежит возле левой ноги. Небольшой шорох из ближайших кустов и уже его руки крепко сжимают древко. Только не это, кажется на этой небогатой земле появился еще один охотник - не знающий пощады. Зубастая морда высунулась из-за кустов и начался древнейший танец смерти.
  7. -> init_and_start_knot
  8. -> END
  9.  
  10. //Узел для инициализации значений переменных
  11. === init_and_start_knot ===
  12. //Текущие состояния объектов игры
  13. LIST hero_state_list = far_tree, near_tree, up_tree
  14. VAR hero_state = far_tree
  15. LIST dino_state_list = dino_visible, dino_hidden, dino_run
  16. VAR dino_state = dino_visible
  17. LIST pike_state_list = pike_in_hands, pike_on_land
  18. VAR pike_state = pike_in_hands
  19. LIST action_list = cmd_wait, cmd_throw, cmd_up, cmd_hit
  20. VAR was_hit_tree = false //признак удара по ветке (когда над ней)
  21. VAR is_end = false //признак окончания игры
  22. //Константы для удобства вычитки и редактирования
  23. CONST T_NOT_WORK = "Не сработало. "
  24. CONST T_HUNTER_WAIT = "Охотник немного подождал. "
  25. CONST T_THROW_FAILED = "Охотник не может подобрать удобную позицию чтобы метнуть копьё, зверюга очень изворотливая."
  26. CONST T_THROW_BLIND = "Присмотревшись к кустам, охотник понимает, что вслепую атаковать бессмысленно."
  27. CONST T_COME_CLOSER = "Пока динозавр скрывался охотник тихонько подкрался ближе к стволу дерева."
  28. CONST T_TREE_BLOCKED = "Динозавр не даёт влезть на дерево!"
  29. CONST T_TREE_BRANCH_FAR = "Над костром проходит только кончик ветки. Когда охотник по нему стукнул, пара листьев упала в костёр."
  30. CONST T_THROW_COMPLITED = "Охотник со всей силы бросил копьё, но динозавр успел увернуться и от страха убежал."
  31. CONST T_TAKE_PIKE = "Чтобы еще раз метнуть копьё охотник выждал удобный момент и бросился за костёр, вырвав из земли оружие."
  32. CONST T_CLIMB_COMPLETED = "Динозавр как ни пытался схватить лезущего вверх охотника, эму это не удалось."
  33. CONST T_DINO_STRIKE = "Рык и свирепые броски монстра заставили охотника отойти за костёр."
  34. CONST T_TREE_BRANCH_CLOSER ="Над охотником проходит мощный ствол, но кажется он немного надломлен, снизу ничего не сделать."
  35. CONST T_TREE_HIT_FIRST = "Сильно ударив ногой по ветке,послышался хруст, но охотник не удержался и упал на землю. Быстро опомнившись, он подбежал к копью и выставил его против зверя."
  36. CONST T_TREE_HIT_SECOND = "Второй удар по ветке заставил вспыхнуть костёр, который опалив динозавра обратил его в бегство. Путь свободен, победа!"
  37. CONST T_CLIMB_UPPER = "Когда охотник начал лезть выше по гладкому стволу, его рука соскользнула и он потерял равновесие, пришлось бросить горсть земли в сторону врага и быстро убежать за костёр."
  38. CONST T_WAIT_ON_TREE = "Охотник решил притаиться на дереве, но когда пара когтей полоснула его по ноге, пришлось спрыгнуть и отступить за костер."
  39. CONST T_TAKE_PIKE_ON_TREE = "Копьё находилось за костром. Охотнику пришлось быстро пробежаться по ветке и мощным прыжком перемахнуть через костёр."
  40.  
  41. CONST T_STATE_HERO_FAR = "Охотник сквозь пламя костра видит раскидистое дерево."
  42. CONST T_STATE_HERO_NEAR = "Охотник стоит под деревом."
  43. CONST T_STATE_HERO_ON_TREE ="Охотник на дереве, крепко держится за ствол."
  44. CONST T_STATE_DINO_VISIBLE ="Динозавр рычит и скребёт когтями."
  45. CONST T_STATE_DINO_HIDDEN = "Динозавр прыгнул в ближайшие кусты и поджидает другую добычу."
  46. CONST T_STATE_DINO_RUN = "Динозавра не видно после метания копья."
  47. CONST T_STATE_PIKE_IN_HANDS="В руках охотник крепко сжимает копьё."
  48. CONST T_STATE_PIKE_ON_LAND ="Копье торчит в земле неподалёку от костра."
  49.  
  50. CONST T_FIN_TEXT ="После долгих месяцев скитаний охотник нашёл свою судьбу."
  51.  
  52.  
  53. ->game_knot
  54.  
  55. //Узел игры
  56. === game_knot ===
  57. {is_end:
  58. # IMAGE: images/woman_fin.jpg|Финальная заставка - девушка сидит спиной с оголённым плечом
  59. # CLASS: end
  60. {T_FIN_TEXT}
  61. -> END
  62. }
  63. {print_hero_state(hero_state)} <>
  64. {print_dino_state(dino_state)} <>
  65. {print_pike_state(pike_state)}
  66.  
  67. + [Ждать]
  68. {update_states(cmd_wait)}
  69. ->game_knot
  70. + [Метнуть копьё]
  71. {update_states(cmd_throw)}
  72. ->game_knot
  73. + [Лезть на дерево]
  74. {update_states(cmd_up)}
  75. ->game_knot
  76. + [Ударить ветку]
  77. {update_states(cmd_hit)}
  78. ->game_knot
  79. -> END
  80.  
  81. //Функция обработчик состояний
  82. === function update_states(cmd_type)
  83. //По умолчанию выдаём отклик, похожий на инстед-реализацию
  84. ~ temp action_result = T_NOT_WORK
  85. //Запоминаем текущие состояния, чтобы автоматы работали параллельно, при изменении в ходе обработки
  86. ~ temp curr_dino_state = dino_state
  87. ~ temp curr_pike_state = pike_state
  88. ~ temp curr_hero_state = hero_state
  89.  
  90. {cmd_type == cmd_wait:
  91. ~action_result = T_HUNTER_WAIT
  92. }
  93. //Обновляем динозавра
  94. {
  95. -dino_state == dino_visible:
  96. //Если бросаем копье, когда динозавр видим, то он убегает, иначе он просто скрывается
  97. {curr_hero_state == near_tree && cmd_type == cmd_throw:
  98. ~dino_state = dino_run
  99. -else:
  100. ~dino_state = dino_hidden
  101. }
  102. {curr_hero_state != near_tree && cmd_type == cmd_throw:
  103. ~action_result = T_THROW_FAILED
  104. }
  105. -else:
  106. {cmd_type == cmd_throw:
  107. ~action_result = T_THROW_BLIND
  108. }
  109. //динозавр снова на виду
  110. ~dino_state = dino_visible
  111. }
  112.  
  113. //Обновляем героя
  114. {
  115. -curr_hero_state == far_tree:
  116. {
  117. //Переходим к дереву, если пытаемся влезть на дерево, а дино нет на месте
  118. -cmd_type == cmd_up && curr_dino_state != dino_visible:
  119. ~hero_state = near_tree
  120. ~action_result = T_COME_CLOSER
  121.  
  122. -cmd_type == cmd_up && curr_dino_state == dino_visible:
  123. ~action_result = T_TREE_BLOCKED
  124.  
  125. -cmd_type == cmd_hit:
  126. ~action_result = T_TREE_BRANCH_FAR
  127.  
  128. }
  129. -curr_hero_state == near_tree:
  130. {
  131. //При броске копья оставляем его на другой стороне
  132. -cmd_type == cmd_throw && curr_pike_state == pike_in_hands:
  133. ~pike_state = pike_on_land
  134. ~action_result = T_THROW_COMPLITED
  135.  
  136. //Если пытаемся еще раз бросить, то переходим за костер и берем в руки
  137. -cmd_type == cmd_throw && curr_pike_state == pike_on_land:
  138. ~pike_state = pike_in_hands
  139. ~action_result = T_TAKE_PIKE
  140.  
  141. //Залезаем на дерево, когда динозавр убежал от копья
  142. -cmd_type == cmd_up && curr_dino_state == dino_run:
  143. ~hero_state = up_tree
  144. ~action_result = T_CLIMB_COMPLETED
  145.  
  146. //Возвращаемся за костёр, если увидели динозавра
  147. -(cmd_type == cmd_wait || cmd_type == cmd_up) && curr_dino_state == dino_visible:
  148. ~hero_state = far_tree
  149. ~action_result = T_DINO_STRIKE
  150.  
  151. -cmd_type == cmd_hit:
  152. ~action_result = T_TREE_BRANCH_CLOSER
  153. }
  154. -curr_hero_state == up_tree:
  155. {
  156. //Запоминаем попытку удара по дереву
  157. -cmd_type == cmd_hit && was_hit_tree==false:
  158. ~was_hit_tree =true
  159. ~hero_state = far_tree
  160. ~pike_state = pike_in_hands
  161. ~action_result = T_TREE_HIT_FIRST
  162. -cmd_type == cmd_hit && was_hit_tree==true:
  163. ~is_end = true
  164. ~action_result = T_TREE_HIT_SECOND
  165. -cmd_type == cmd_up:
  166. ~hero_state = far_tree
  167. ~action_result = T_CLIMB_UPPER
  168. -cmd_type == cmd_wait:
  169. ~hero_state = far_tree
  170. ~action_result = T_WAIT_ON_TREE
  171. -cmd_type == cmd_throw:
  172. ~hero_state = far_tree
  173. ~action_result = T_TAKE_PIKE_ON_TREE
  174. }
  175. }
  176.  
  177. ~return action_result
  178.  
  179. //Состояния героя
  180. === function print_hero_state(state) ===
  181. {
  182. - state == far_tree:
  183. ~ return T_STATE_HERO_FAR
  184. - state == near_tree:
  185. ~ return T_STATE_HERO_NEAR
  186. - state == up_tree:
  187. ~ return T_STATE_HERO_ON_TREE
  188. }
  189.  
  190. //Состояния динозавра
  191. === function print_dino_state(state) ===
  192. {
  193. - state == dino_visible:
  194. ~ return T_STATE_DINO_VISIBLE
  195. - state == dino_hidden:
  196. ~ return T_STATE_DINO_HIDDEN
  197. - state == dino_run:
  198. ~ return T_STATE_DINO_RUN
  199. }
  200.  
  201. //Состояния копья
  202. === function print_pike_state(state) ===
  203. {
  204. - state == pike_in_hands:
  205. ~ return T_STATE_PIKE_IN_HANDS
  206. - state == pike_on_land:
  207. ~ return T_STATE_PIKE_ON_LAND
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement