Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
09.08.2008 14:39

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Несколько удобных функций (флаги)

В играх часто нужно бывает нужно проверять некие глобальные флаги и выводить в зависимости от их значения некий текст. Я написал несколько маленьких функций для собственного использования, хочу поделиться. Итак:

Код:

isFlag : function(value) {
 return (find(global.flags, value) <> nil);
}

setFlag : function(value) {
 if (not isFlag(value)) {
 global.flags += [value];
 }    
}        

unsetFlag : function(value) {
 if (isFlag(value)) {
 global.flags -= [value];
 }    
}

ifFlagSay : function (flag, message, ...) {
 if (isFlag(flag)) {
  say(message);
 if ((argcount > 2) and getarg(3))
  unsetFlag(flag);
 if (argcount > 3)
  incscore(getarg(4));
 }
}

ifNotFlagSay : function (flag, message, ...) {
 if (not isFlag(flag)) {
 say(message);
 if ((argcount > 2) and getarg(3)) 
  setFlag(flag);
 if (argcount > 3)
  incscore(getarg(4));    
 }
}

Как этим добром пользоваться. В объекте global необходимо объявить список flags:

Код:

global: object
 ...
 flags = []
;

Если какие-то флаги должны быть предустановлены, то

Код:

global: object
 ...
 flags=['someFlag' 'someAnotherFlag']
;

После этого в коде пишем что-то вроде:

Код:

if (isFlag('myFlag')) {
 ...
}

Установить флаг:

Код:

 setFlag('myFlag')

Сбросить флаг:

Код:

 unsetFlag('myFlag')

Если надо вывести текст в зависимости от значения флага:

Код:

ifFlagSay('myFlag', 'Некий текст')

Если надо вывести текст и сбросить флаг:

Код:

ifFlagSay('myFlag', 'Некий текст', true)

Если надо вывести текст, сбросить флаг и выдать очки:

Код:

ifFlagSay('myFlag', 'Некий текст', true, 50)

То же самое, но для неустановленных флагов используется функция ifNotFlagSay.

Enjoy. smile

Неактивен

0    0    #2
10.08.2008 04:10

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 796
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Несколько удобных функций (флаги)

Надо постоянно. Буду разбираться. Спасибо!

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru