Показать сообщение отдельно
Старый 01.09.2010, 15:40
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 5  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
На мой взгляд тут основная проблема в читабельности кода, я бы предложил занести всё в булевы переменные и потом использовать их.

Код AS3:
// Запоминаем условия для X
var isXEqualPrev:Boolean = (x[i] == x[i-1]);
var isXEqualNext:Boolean = (x[i] == x[i+1]);
var isXMorePrev:Boolean = (x[i] > x[i-1]);
var isXMoreNext:Boolean = (x[i] > x[i+1]);
var isXLessPrev:Boolean = (x[i] < x[i-1]);
var isXLessNext:Boolean = (x[i] < x[i+1]);
// Запоминаем условия для Y
var isYEqualPrev:Boolean = (y[i] == y[i-1]);
var isYEqualNext:Boolean = (y[i] == y[i+1]);
var isYMorePrev:Boolean = (y[i] > y[i-1]);
var isYMoreNext:Boolean = (y[i] > y[i+1]);
var isYLessPrev:Boolean = (y[i] < y[i-1]);
var isYLessNext:Boolean = (y[i] < y[i+1]);
 
// Проверка всех систем
if(isXEqualPrev && isXLessNext && isYEqualNext && isYEqualPrev)
{
    //…
}else if(isXEqualNext && isXLessPrev && isYEqualPrev && isYLessNext)
{
    //…
}
Как альтернатива занесения всех возможных условий в отдельные переменные можно в самом начале создать только 8 переменных, каждая из которых будет отвечать за соответствующую систему, и уже работать с этими переменными, например так:

Код AS3:
var isSystem1:Boolean = (x[i] == x[i-1] && x[i] < x[i+1] && y[i] == y[i+1] && y[i] < y[i-1]);
var isSytem2:Boolean = …