Вобщем сначала у меня было так:
a = 1
b = 1
c = 1
if (a=1 and b=1 and c=1)
{
...
}
a = 0
b = 1
c = 0
if (a=1 and b=0 and c=1)
{
...
}
a = 1
b = 0
c = 1
if (a=0 and b=1 and c=0)
{
...
}
Но потом возникла трудность, что скрипт прыгал туда сюда, так и не завершив
Поэтому пришлось зациклить действия
a = 1
b = 1
c = 1
if (a=1 and b=1 and c=1)
while (a=1 and b=1 and c=1)
{
...
}
a = 0
b = 1
c = 0
if (a=1 and b=0 and c=1)
while (a=1 and b=0 and c=1)
{
...
}
a = 1
b = 0
c = 1
if (a=0 and b=1 and c=0)
while (a=0 and b=1 and c=0)
{
...
}
Но циклы были бесконечными, поскольку динамическое изменение переменных в них не происходило:
a = 1
b = 1
c = 1
if (a=1 and b=1 and c=1)
while (a=1 and b=1 and c=1)
{
...
a = 1
b = 1
c = 1
}
a = 0
b = 1
c = 0
if (a=1 and b=0 and c=1)
while (a=1 and b=0 and c=1)
{
...
a = 0
b = 1
c = 0
}
a = 1
b = 0
c = 1
if (a=0 and b=1 and c=0)
while (a=0 and b=1 and c=0)
{
...
a = 1
b = 0
c = 1
}
Но тогда нарушались приоритеты, поскольку на выполнение цикла могло уйти неопределённо долгое время, и необходимо было проверять и другие условия.
Тогда пришлось вписывать эти условия еще раз уже внутри циклов:
a = 1
b = 1
c = 1
if (a=1 and b=1 and c=1)
while (a=1 and b=1 and c=1)
{
...
a = 1
b = 1
c = 1
}
a = 0
b = 1
c = 0
if (a=1 and b=0 and c=1)
while (a=1 and b=0 and c=1)
{
...
a = 0
b = 1
c = 0
sleep 1
a = 1
b = 1
c = 1
if (a=1 and b=1 and c=1)
break
}
a = 1
b = 0
c = 1
if (a=0 and b=1 and c=0)
while (a=0 and b=1 and c=0)
{
...
a = 1
b = 0
c = 1
sleep 1
a = 1
b = 1
c = 1
sleep 1
a = 0
b = 1
c = 0
if ((a=1 and b=1 and c=1) or (a=1 and b=0 and c=1))
break
}
Самая толстая мышка должна получать удар током в приоритете над остальными, те, что поменьше - поменьше. Но это однопоток, и одновременно все действия нельзя делать.
Условие в условии, значение в значении. Ну вобщем вы поняли, это бесконечная писанина. Теперь он стал разрастаться так, что на поиски нужного участка и перебирание переменных уходит полдня.
Естественно я задумался об оптимизации и объединении значений этих переменных в группы по одному названию. В голову приходят только функции.
Самаятолстаямышка(){
признак1
признак2
признак3
return совпадение всех 3-х
}
Средняямышка(){
признак4
признак5
признак6
return совпадение всех 3-х
}
Самаямаленькаямышка(){
признак7
признак8
признак9
return совпадение всех 3-х
}
;;;;;;;;;;;;;;
if Самаятолстаямышка()
{
Толстая:
while Самаятолстаямышка() ;Выполнять пока толстаямышь рядом
{
удар током её
}
}
if Средняямышка()
{
while Средняямышка() ;Выполнять пока средняя мышка рядом
{
удар током её
;Но. Если появилась толстая мышка - то удар током еЁ!
if Самаятолстаямышка()
gosub Толстая
;Или просто break цикла
}
}
;Опять же в меньшей мышке должны проверяться большие
if Самаямаленькаямышка()
{
while Самаямаленькаямышка() ;Выполнять пока мелкая мышка рядом
{
удар током её
;Но. Если появилась толстая или средняя мышка - то удар током их!
if Самаятолстаямышка()
gosub Толстая
if Средняямышка()
gosub Средняя
;Или просто break цикла
}
}
Нужно объединение групп переменных в одну, а то слишком объёмный код получается, и неудобно читаемый.