COLORREF CCADlg::f(COLORREF y, COLORREF yU, COLORREF yUR,
COLORREF yR, COLORREF yDR, COLORREF yD, COLORREF yDL,
COLORREF yL, COLORREF yUL)
{
// Переменная содержит единицу только в бите, соответ
// ствующем первой плоскости
COLORREF c=0x800000;
// Переменная содержит единицу только в бите, соответ-
// ствующем второй плоскости
COLORREF b=0x400000;
// Переменная, в которой хранится число живых соседей
// клетки на второй плоскости
int i=((yU&b)?1:0)+((yUR&b)?1:0)+((yR&b)?1:0)+
((yDR&b)?1:0)+((yD&b)?1:0)+((yDL&b)?1:0)+((yL&b)?1:0)+
((yUL&b)?1:0);
// Мертвая клетка оживет, если у нее три живых соседа
if ((y&b)==0 && i==3) y|=c; else
// Живая клетка останется живой, если у нее два
// или три живых соседа
if ((y&b)!=0 && (i==2 || i==3)) y|=c; else
// В остальных случаях клетка мертва
y&=(~c);
return y;
}