Помощь в оптимизации

Помощь в оптимизации

Собственно нужно как-то уменьшить кол-во кода на локации "Улица"
Какие ваши советы?
Кусок кода:

Код:


IF Что>0:
    IF INSTR($МАМА['GEO'], 'Лока') AND INSTR($ПАПА['GEO'], 'Лока') AND INSTR($СЕСТРА['GEO'], 'Лока') AND INSTR($БРАТ['GEO'], 'Лока'):
        GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>', $ico['мама'], $ico['папа'], $ico['сестра'], $ico['брат']
    ELSEIF INSTR($МАМА['GEO'], 'Лока') AND INSTR($ПАПА['GEO'], 'Лока') AND INSTR($СЕСТРА['GEO'], 'Лока'):
        GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>', $ico['мама'], $ico['папа'], $ico['сестра']
    ELSEIF INSTR($МАМА['GEO'], 'Лока') AND INSTR($ПАПА['GEO'], 'Лока') AND INSTR($БРАТ['GEO'], 'Лока'):
        GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>', $ico['мама'], $ico['папа'], $ico['брат']
ELSE
    MSG('Ну всё, приехали')
    GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (неоплачено)</font>'
END

Прилагаю игру > igra.qsp

Изменено: jeesson
10.Июн.18 23:40:04
jeesson
бог печенья
useravatar
Offline
15 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Помощь в оптимизации

jeesson,

Код:

NUMBER=0

IF INSTR($МАМА['GEO'], 'Лока'): NUMBER+=1
if INSTR($ПАПА['GEO'], 'Лока'): NUMBER+=2
if INSTR($СЕСТРА['GEO'], 'Лока'): NUMBER+=4
if INSTR($БРАТ['GEO'], 'Лока'): NUMBER+=8
! сумма будет отличаться в зависимости от сочетания условий
if что>0:
    ! повторяющиеся части вносим в виде текста в переменную
    $code={GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>'}
    IF NUMBER=15:
       dynamic $code+{, $ico['мама'], $ico['папа'], $ico['сестра'], $ico['брат']}
    ELSEIF NUMBER=7:
        dynamic $code+{, $ico['мама'], $ico['папа'], $ico['сестра']}
    ELSEIF NUMBER=11:
        dynamic $code+{, $ico['мама'], $ico['папа'], $ico['брат']}
    ! наверное здесь пропущен END
   
ELSE
    MSG('Ну всё, приехали')
    GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (неоплачено)</font>'
END

Aleks Versus
воздвигатель башни
useravatar
Offline
1416 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Помощь в оптимизации

О. Глянул игру. Если различие только в передаваемых иконках, то весь код можно представить так:

Код:

NUMBER=0

$ICOS=''
IF INSTR($МАМА['GEO'], 'Лока'): NUMBER+=1 & $ICOS+={, $ico['мама']}
if INSTR($ПАПА['GEO'], 'Лока'): NUMBER+=2 & $ICOS+={, $ico['папа']}
if INSTR($СЕСТРА['GEO'], 'Лока'): NUMBER+=4 & $ICOS+={, $ico['сестра']}
if INSTR($БРАТ['GEO'], 'Лока'): NUMBER+=8 & $ICOS+={, $ico['брат']}

if что>0:
    ! повторяющиеся части вносим в виде текста в переменную
    $code={GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>'}
    IF NUMBER>0:
       dynamic $code+$ICOS
    ELSE
       GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (пусто)</font>'
    end
ELSE
    MSG('Ну всё, приехали')
    GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (неоплачено)</font>'
END

Aleks Versus
воздвигатель башни
useravatar
Offline
1416 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Помощь в оптимизации

О, огромное спасибо) Спас от кучи повторений(думал будет безумие), ибо не знал как это реализовать))

jeesson
бог печенья
useravatar
Offline
15 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
1023
Всего опросов:
14
Всего сообщений:
16790423
Сообщений на этой неделе:
6
Пользователи форума:
 
Всего пользователей:
2246
Последним зарегистрировался:
Sandoval Silat