RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2435481 views

Aleks Versus Moderator 30.10.2014 14:07 (11 years ago)

kosmosnash,
посмотри вот эту тему. Если не поможет, уточни почему.

kosmosnash,
если тебе нужно чтобы не уходя с локации, менялось и описание и действия, это делается с помощью условий в коде локации. В условиях проверяешь переменные, отвечающие за тот или иной кусок описания, набор действий. Внутрь блока условия помещаешь вывод описания и действия. В действиях не забываешь переключать переменные.

IF шаг = 0:
    'Я ступил на верёвочный мостик. Он пошатывается и скрипит, но выглядит надёжно.'
    ACT 'Пройти дальше':
        шаг = 1
        GOTO $CURLOC
    END
ELSE IF шаг = 1:
    'Середина моста. Здесь выбита доска, я осторожно перешагиваю через провал. Главное, не смотреть вниз.'
    ACT 'Пройти дальше':
        шаг = 2
        GOTO $CURLOC
    END
ELSE IF шаг = 2:
    'Конец моста уже близко. Руки предательски дрожат. Ещё немного.'
    ACT 'Пройти дальше':
        GOTO 'пещера'
    END
END
Никита №1221 #1160 30.10.2014 16:43 (11 years ago)

Nex, насчет действия по таймеру, у меня все завязано на функции gt curloc, а из за этого у локации-учетчика свое время, а у локации боя свое. Поэтому либо аналог wait, либо найти способ обновления учетчика вместе с локацией боем.

Никита №1221:

Nex, насчет действия по таймеру, у меня все завязано на функции gt curloc, а из за этого у локации-учетчика свое время, а у локации боя свое. Поэтому либо аналог wait, либо найти способ обновления учетчика вместе с локацией боем.

Всё равно проблема решается только таймером. Что значит “обновление учетчика вместе с локацией боем”?

Никита №1221,
я ничего не понял из того, что ты написал. Выложи свой код, и напиши:
1. что должно происходить
2. что вместо этого на самом деле происходит

Никита №1221 #1160 31.10.2014 16:44 (11 years ago)

Локация conter:
if curloc=‘бой’:
if r=1:
*pl ‘Не стой столбом!’
hp=hp-урон
if hp<0:hp=0
if hp=0: gt ‘смерть’
gt curloc
else
r=1
end
end
Локация боя:
pb=0 & pa=0 & py=0
a=rand(1,2)
if a=1:pb=1&’
Противник блокирует!’
if a=2:pa=1&’
Противник атакует!’
if a=3:py=1&’
Противник уворачивается!’
Действия:
if pb=1: msg ‘Атаковать не удалось’ & hp=hp-урон
if py=1: msg ‘Вы успешно атаковали противника’ & здоровье=здоровье-dam
if pa=1: msg ‘Не вы, не противник не смогли нанести урона’
if hp<0:hp=0
if здоровье<0: здоровье=0
if hp=0: gt ‘смерть’
if здоровье=0: gt ‘победа’
gt curloc
Всего действий 3, остальные действия сходны, только операторы с убавлением здоровья разные.
Должно происходить:
Противник либо атакует, либо блокирует, либо уворачивается. Выводится текст, и за 2 секунды (Учетчик работает каждые 2 секунды) нужно использовать либо действие уклона, атаки, или блока. Правила как в камень-ножницы-бумага - атака бьет уклон, блок бьет атаку, уклон бьет блок. Учетчик нужен для ограничения времени выбора. Проблема в том, независимо от выбора действия учетчик отбирает здоровье каждые две секунды.

Никита №1221,

! ******************
! Стартовая локация игры
SETTIMER 1000
$COUNTER = 'COUNTER'

! ******************
! Локация "COUNTER"
IF ($CURLOC='бой'):
	секунды = секунды + 1
	IF секунды = 2:
		*pl 'Не стой столбом!'
		hp=hp-урон
		IF hp<0:hp=0
		IF hp=0: GT 'смерть'
		GT $CURLOC
	END
END


! ******************
! Локация боя:
! Сбрасываем счётчик секунд
секунды = 0

! Остальное по-старому

Останется некоторая неравномерность, “пропущенный удар” будет вызываться в интервале 1 < x < 3 секунд. Если нужно ещё сильнее приблизить к 2, то некоторым усложнением кода можно это сделать. Чем меньше интервал счётчика, тем ближе задержка будет к желаемому значению. Может быть, можно сбросить локацию-счётчик с помощью хака, и получить наиболее точные величины задержки, но это надо экспериментировать. Полагаю, для твоих целей хватит и предложенного кода.

Сейчас проверил - таймер сбрасывается установкой интервала счетчика (не знаю, поможет ли это для учетчика):

SETTIMER 500

newsash,
значит можно это использовать, и упростить код.

Никита №1221 #1160 01.11.2014 16:00 (11 years ago)

Спасибо, все работает!

Nex:

kosmosnash,
если тебе нужно чтобы не уходя с локации, менялось и описание и действия, это делается с помощью условий в коде локации. В условиях проверяешь переменные, отвечающие за тот или иной кусок описания, набор действий. Внутрь блока условия помещаешь вывод описания и действия. В действиях не забываешь переключать переменные.

Я как раз сам до этого додумался. Но спасибо. Есть опасение, что таким макаром я быстро перегружу код переменными. Есть же определенные ограничения вроде

kosmosnash,
2147483648 переменных ты при всём желании не превысишь.

ЗакТеррен #1266 04.11.2014 12:40 (11 years ago)

здравствуйте, подскажите можно ли сделать так чтобы рисунок отображался определенным размером?
например у меня есть рисунок размером 500х500 пикселей, а мне нужно чтоб этот рисунок в игре был 200х200, но менять размер в фотошопе и других программах не вариант так как качество картинки сильно падает

ЗакТеррен,

<img src="..." width=200>
ЗакТеррен #1266 04.11.2014 13:20 (11 years ago)

Nex,
спасибо

Log in or Register to post comments.