Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
24.08.2014 01:34

Sasha Makovsky
Участник (+2)
Зарегистрирован: 23.08.2014
Сообщений: 7

Разработка игры «Похождения юного барда»

Привет друзья. Знаком с AXMA несколько дней, пытаюсь склепать свою первую историю и вот незадача,
я не совсем понимаю, как работают обновления. Почему-то нажимая на кнопку Ждать первый раз время не перемещается на 1 час
вперёд как запланировано, а действие Искать не отнимает час, но работает как обновление, если после этого нажать
на неё. Какое-то странное опоздание, как сделать так, чтобы при нажатии Ждать, час сразу же обновлялся?

Код:

:: StoryTitle

Прилючения барда.

:: Смена погоды



:: Start

# переменные окружения

<<set $time = 12>>

<<set $плюсЧас = 0>>

<<set $day = 1>>

<<set $weather = 'чистое небо'>>

<<set $location = 'Таверна'>>

<<set $action= 0>>

<<set $streetTemp = -1>>

<<br>><<br>>

===[[Игра|Игра]]===

:: Таверна

Таверна была просторна и уютна.

За окном <<print $weather>>.

:: Действия

<<if $action eq 1>>

    <<set $плюсЧас = 1>>

    Прошёл один час.

<<elseif $action eq 2>>

    <<set $плюсЧас = 0>>

    Вы ничего не нашли.

<<elseif $action eq 3>>

    <<set $плюсЧас = 1>>

    Игра на лютне удалась.

<<endif>>

<<if $action neq 0>>

<<display 'Смена времени'>>

----

<<set $action = 0>>

<<endif>>

:: Смена времени

<<loop $плюсЧас>>

    <<set $time++>>

    <<if $time >= 23>>

        <<set $time = 0>>

        <<set $day++>>

        <<display 'Смена погоды'>>

    <<endif>>

<<endloop>>

<<set $плюсЧас = 0>>

:: Игра

<<clrscr>>

<<display 'Герой'>>

<<display 'Действия'>>

<<display '$location'>>

:: Герой

===[[Ждать|Игра {$action = 1}]] | [[Искать|Игра {$action = 2}]] | [[Играть на лютне|Игра {$action = 3}]]===

===Время: <<print $time>> | День: <<print $day>>===

----

Отредактировано Sasha Makovsky (24.08.2014 02:42)

Неактивен

1    0    #2
24.08.2014 09:15

Aruny
Участник (+2)
Зарегистрирован: 30.07.2014
Сообщений: 18

Re: Разработка игры «Похождения юного барда»

У вас ошибка в порядке вывода результатов на экран.
Вы сначала выводите время, потом уже пересчитываете его с учётом нажатой ссылки.


Варианты исправления:
вариант 1.

Совсем убрать переменную $плюсЧас, весь файл будет вида:

Код:

128[::]0[::]0
:: StoryTitle[::]8-8-3
Приключения барда.

:: Смена погоды[::]344-8-1

:: Таверна[::]520-8-6

Таверна была просторна и уютна.
За окном <<print $weather>>.

:: Смена времени[::]160-8-0
 <<if $time >= 23>>
      <<set $time = 0>>
      <<set $day++>>
      <<display 'Смена погоды'>>
  <<endif>>
<<set $плюсЧас = 0>>


:: Start[::]672-8-1
# переменные окружения
<<set $time = 12>>
<<set $day = 1>>
<<set $weather = 'чистое небо'>>
<<set $location = 'Таверна'>>
<<set $action= 0>>
<<set $streetTemp = -1>>
<<br>><<br>>

===[[Игра|Игра]]===

:: Действия[::]8-176-0
<<if $action eq 1>>
    Прошёл один час.
<<elseif $action eq 2>>
    Вы ничего не нашли.
<<elseif $action eq 3>>
    Игра на лютне удалась.
<<endif>>

<<if $action neq 0>>
<<display 'Смена времени'>>
----
<<set $action = 0>>
<<endif>>

:: Игра[::]160-176-5
<<clrscr>>
<<display 'Герой'>>
<<display 'Действия'>>
<<display '$location'>>


:: Герой[::]312-176-5
===[[Ждать|Игра {$action = 1}{$time = $time + 1}]] | [[Искать|Игра {$action = 2}{$time = $time + 0}]] | [[Играть на лютне|Игра {$action = 3}{$time = $time + 1}]]===
===Время: <<print $time>> | День: <<print $day>>===
---

Вариант 2, добавить ещё один параграф для пересчёта времени до вывода на экран:

Код:

128[::]0[::]0
:: StoryTitle[::]8-8-3
Приключения барда.


:: Таверна[::]520-8-6

Таверна была просторна и уютна.
За окном <<print $weather>>.


:: Start[::]672-8-1

# переменные окружения
<<set $time = 12>>
<<set $плюсЧас = 0>>
<<set $day = 1>>
<<set $weather = 'чистое небо'>>
<<set $location = 'Таверна'>>
<<set $action= 0>>
<<set $streetTemp = -1>>
<<br>><<br>>
===[[Игра|Игра]]===


:: Смена погоды[::]344-8-1
день закончился


:: Герой[::]312-176-5
===[[Ждать|Игра {$action = 1}]] | [[Искать|Игра {$action = 2}]] | [[Играть на лютне|Игра {$action = 3}]]===
===Время: <<print $time>> | День: <<print $day>>===
----


:: Игра[::]160-176-5
<<clrscr>>
<<display 'пересчёт хода'>>
<<display 'смена времени'>>

<<display 'Герой'>>
<<display 'Действия'>>
<<display '$location'>>
<<if $сменаДня == true>>
        <<display 'Смена погоды'>>
<<endif>>
<<set $сменаДня = false>>


:: пересчёт хода[::]160-328-0
<<if $action eq 1>>
    <<set $плюсЧас = 1>>

<<elseif $action eq 2>>
    <<set $плюсЧас = 0>>

<<elseif $action eq 3>>
    <<set $плюсЧас = 1>>

<<endif>>


:: Действия[::]8-176-0
<<if $action eq 1>>
    Прошёл один час.

<<elseif $action eq 2>>
    Вы ничего не нашли.

<<elseif $action eq 3>>
    Игра на лютне удалась.

<<endif>>

<<if $action neq 0>>
    <<display 'Смена времени'>>
----
<<endif>>
<<set $action = 0>>


:: Смена времени[::]160-8-0
<<loop $плюсЧас>>
    <<set $time++>>
    <<if $time > 23>>
        <<set $time = 0>>
        <<set $day++>>
        <<set $сменаДня = true>>
    <<endif>>
<<endloop>>
<<set $плюсЧас = 0>>

Кстати, у вас опечатка в слове "приключения" в названии игры ;-)
И при пересчёте времени надо проверку не $time >= 23, а либо $time >= 24, либо $time > 23, иначе у вас новый день начинается в 23 часа.

Отредактировано Aruny (24.08.2014 09:52)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru