COLORREF CCADlg::f(COLORREF y, COLORREF yU, COLORREF yUR, COLORREF yR, COLORREF yDR, COLORREF yD, COLORREF yDL, COLORREF yL, COLORREF yUL) { // Переменная содержит единицу только в бите, // соответствующем рассматриваемой плоскости COLORREF b=1; // Переменная, в которой сохраняется число живых // соседей клетки на рассматриваемой плоскости int i; // Цикл для перебора всех 24 плоскостей for (BYTE it=0;it<24;it++) { // Вычисление числа соседей 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|=b; else // Живая клетка останется живой, если у нее два // или три живых соседа if ((y&b)!=0 && (i==2 || i==3)) y|=b; else // В остальных случаях клетка мертва y&=(~b); // Рассматриваемая плоскость заменяется на следующую b<<=1; } return y; }