Вот кто-нибудь, хелп ми с куском кода на интеллект?
Если кто мне его разложит по полочкам, я ж его всю оставшуюся жизнь любить и уважать буду...
читать дальшеlong Check (int x, int y)
{
if (Field [x][y] != 0) return 0;
int i, k, p, n, l, m, xx, yy;
int Fr, En;
long zu;
Fr = CurrFigure;
En = !CurrFigure;
if (x == 13 && y == 13) zu = 2;
else zu = 1;
for (i = 0; i < 4; i++)
{
xx = Xdims[i]; yy = Ydims[i];
// Part 1
k = 1; p = 1; n = 1; l = 0; m = 0;
while (Field [x-p*xx][y-p*yy] == Fr+1 && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy <26) p++;
n += (p-1); while ((Field [x-p*xx][y-p*yy] == 0 || Field [x-p*xx][y-p*yy] == Fr+1) && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy <26) {p++; l = 1; }
k += (p-1); p = 1;
while (Field [x+p*xx][y+p*yy] == Fr+1 && x+p*xx > 0 && y+p*yy > 0 && x+p*xx < 26 && y+p*yy <26) p++;
n += (p-1); while ((Field [x+p*xx][y+p*yy] == 0 || Field [x+p*xx][y+p*yy] == Fr+1) && x+p*xx > 0 && y+p*yy > 0 && x+p*xx < 26 && y+p*yy <26) {p++; m = 1; }
k += (p-1); if (m) l++;
if (k >= 5)
{
if (n >= 5) zu += 1073741824;
else if (n >= 4) zu += 8192*l;
else if (n >= 3) zu += 128*l;
else if (n >= 2) zu += 32*l;
else if (n >= 1) zu += 4*l;
}
// Part 2
k = 1; p = 1; n = 1; l = 0; m = 0;
while (Field [x-p*xx][y-p*yy] == En+1 && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy <26) p++;
n += (p-1); while ((Field [x-p*xx][y-p*yy] == 0 || Field [x-p*xx][y-p*yy] == En+1) && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy <26) {p++; l = 1; }
k += (p-1); p = 1;
while (Field [x+p*xx][y+p*yy] == En+1 && x+p*xx > 0 && y+p*yy > 0 && x+p*xx < 26 && y+p*yy <26) p++;
n += (p-1); while ((Field [x+p*xx][y+p*yy] == 0 || Field [x+p*xx][y+p*yy] == En+1) && x+p*xx > 0 && y+p*yy > 0 && x+p*xx < 26 && y+p*yy <26) {p++; m = 1; }
k += (p-1); if (m) l++;
if (k >= 5)
{
if (n >= 5) zu += 65536*8;
else if (n >= 4) zu += 1024*l;
else if (n >= 3) zu += 256*l;
else if (n >= 2) zu += 4*l;
else if (n >= 1) zu += 1*l;
}
}
return zu;
}
bool IsFinal ()
{
int p, xx, yy, l=0;
Turn += CurrFigure;
CurrFigure = !CurrFigure;
for (int k = 0; k < 4; k++)
{
xx = Xdims [k]; yy = Ydims [k];
for (int x = 1; x <= 25; x++)
for (int y = 1; y <= 25; y++)
{
if (Field [x][y] && !k) l++;
if (Field [x][y] == 1)
{
p = 0;
while (Field [x-p*xx][y-p*yy] == 1 && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy < 26) p++;
if (p >= 5)
{
p = 0;
while (Field [x-p*xx][y-p*yy] == 1 && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy < 26) {Field [x-p*xx][y-p*yy] = 3; p++; }
frmMain->ReDraw ();
MessageBox (frmMain->Handle, ("X-игрок победил с " + IntToStr (Turn+1) + " ходов!").c_str(), "Конец игры", MB_OK);
frmMain->NewGame ();
return true;
}
}
if (Field [x][y] == 2)
{
p = 0;
while (Field [x-p*xx][y-p*yy] == 2 && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy < 26) p++;
if (p >= 5)
{
p = 0;
while (Field [x-p*xx][y-p*yy] == 2 && x-p*xx > 0 && y-p*yy > 0 && x-p*xx < 26 && y-p*yy < 26) {Field [x-p*xx][y-p*yy] = 4; p++; }
frmMain->ReDraw ();
MessageBox (frmMain->Handle, ("O-игрок победил с " + IntToStr (Turn+1) + " ходов!").c_str(), "Конец игры", MB_OK);
frmMain->NewGame ();
return true;
}
}
}
}
if (l >= 625)
{
frmMain->ReDraw ();
MessageBox (frmMain->Handle, "Ничья!", "Конец игры", MB_OK);
frmMain->NewGame ();
return true;
}
return false;
}
void NewTurn ()
{
long x, y, i, j, k, m = 0;
for (i = 1; i <= 25; i++)
for (j = 1; j <= 25; j++)
{
k = Check (i, j);
if (k > m || (k == m && random(2))) { m = k; x = i; y = j; }
}
Field [x][y] = CurrFigure+1;
IsFinal ();
}
void __fastcall TfrmMain::NewGame ()
{
AIgame = false;
HumanGame = false;
for (int i = 1; i <= 25; i++)
for (int j = 1; j <= 25; j++)
Field[i][j] = 0;
Turn = 0; CurrFigure = 0;
}
Graphics::TBitmap * bmp; int i, j;
void __fastcall TfrmMain::ReDraw ()
{
bmp->Canvas->Brush->Color = 0xFFDDBB;
bmp->Canvas->Pen->Color = 0x000000;
bmp->Canvas->FillRect (Rect (0, 0, 400, 400));
bmp->Canvas->CopyMode = cmSrcAnd;
for (i = 0; i < 25; i++)
for (j = 0; j < 25; j++)
{
if (Field [i+1][j+1] > 2)
{
bmp->Canvas->Brush->Color = 0x887766;
bmp->Canvas->FillRect (Rect(16*i, 16*j, 16*i+16, 16*j+16));
}
bmp->Canvas->CopyRect (Rect(16*i, 16*j, 16*i+16, 16*j+16), imgSource->Canvas, Rect (0, 0, 16, 16));
}
bmp->Canvas->CopyMode = cmSrcAnd;
for (i = 0; i < 25; i++)
for (j = 0; j < 25; j++)
if (Field[i+1][j+1] == 1 || Field[i+1][j+1] == 3)
bmp->Canvas->CopyRect (Rect(16*i, 16*j, 16*i+16, 16*j+16), imgSource->Canvas, Rect (16, 0, 32, 16));
else if (Field[i+1][j+1] == 2 || Field[i+1][j+1] == 4)
bmp->Canvas->CopyRect (Rect(16*i, 16*j, 16*i+16, 16*j+16), imgSource->Canvas, Rect (32, 0, 48, 16));
PaintBox->Canvas->CopyMode = cmSrcCopy;
PaintBox->Canvas->CopyRect (Rect (0, 0, 400, 400), bmp->Canvas, Rect (0, 0, 400, 400));
}
:[: Жесть Гг) :]:
Вот кто-нибудь, хелп ми с куском кода на интеллект?
Если кто мне его разложит по полочкам, я ж его всю оставшуюся жизнь любить и уважать буду...
читать дальше
Если кто мне его разложит по полочкам, я ж его всю оставшуюся жизнь любить и уважать буду...
читать дальше