| 39 |
FTurnIndex: integer; |
FTurnIndex: integer; |
| 40 |
FActive: Boolean; |
FActive: Boolean; |
| 41 |
List: TList; |
List: TList; |
| 42 |
|
FBool: Boolean; |
| 43 |
FIndex_X: integer; |
FIndex_X: integer; |
| 44 |
FIndex_Y: integer; |
FIndex_Y: integer; |
| 45 |
function GetStrings(X, Y: integer): TStoneType; |
function GetStrings(X, Y: integer): TStoneType; |
| 86 |
Image2: TImage; |
Image2: TImage; |
| 87 |
Image3: TImage; |
Image3: TImage; |
| 88 |
Image4: TImage; |
Image4: TImage; |
| 89 |
|
Image5: TImage; |
| 90 |
procedure FormCreate(Sender: TObject); |
procedure FormCreate(Sender: TObject); |
| 91 |
procedure FormDestroy(Sender: TObject); |
procedure FormDestroy(Sender: TObject); |
| 92 |
procedure Timer1Timer(Sender: TObject); |
procedure Timer1Timer(Sender: TObject); |
| 160 |
procedure Method(m, n: integer); |
procedure Method(m, n: integer); |
| 161 |
var |
var |
| 162 |
s: TStoneType; |
s: TStoneType; |
| 163 |
j: integer; |
j, k: integer; |
| 164 |
begin |
begin |
| 165 |
if p = false then |
if p = false then |
| 166 |
Exit; |
Exit; |
| 173 |
else if s = Stone then |
else if s = Stone then |
| 174 |
if i > 1 then |
if i > 1 then |
| 175 |
begin |
begin |
| 176 |
|
if (result = false) and (Reverse = true) then |
| 177 |
|
SetStrings(X, Y, Stone); |
| 178 |
result := true; |
result := true; |
| 179 |
if Reverse = true then |
if Reverse = true then |
| 180 |
begin |
begin |
| 181 |
for j := 1 to i - 1 do |
for j := 1 to i - 1 do |
| 182 |
begin |
begin |
| 183 |
|
Form1.PaintBox1.Repaint; |
| 184 |
if Visible = true then |
if Visible = true then |
| 185 |
begin |
begin |
| 186 |
New(q); |
New(q); |
| 191 |
q^.Y := 0; |
q^.Y := 0; |
| 192 |
List.Add(q); |
List.Add(q); |
| 193 |
SetStrings(q^.Left, q^.Top, stEffect); |
SetStrings(q^.Left, q^.Top, stEffect); |
| 194 |
Sleep(20); |
for k := 1 to 10 do |
| 195 |
|
begin |
| 196 |
|
Sleep(10); |
| 197 |
|
Application.ProcessMessages; |
| 198 |
|
end; |
| 199 |
end |
end |
| 200 |
else |
else |
| 201 |
SetStrings(X + m * j, Y + n * j, Stone); |
SetStrings(X + m * j, Y + n * j, Stone); |
| 216 |
end; |
end; |
| 217 |
|
|
| 218 |
begin |
begin |
| 219 |
FActive := false; |
if Visible = true then |
| 220 |
|
begin |
| 221 |
|
FBool := FActive; |
| 222 |
|
FActive := false; |
| 223 |
|
end; |
| 224 |
result := false; |
result := false; |
| 225 |
p := true; |
p := true; |
| 226 |
if GetStrings(X, Y) = stNone then |
if GetStrings(X, Y) = stNone then |
| 233 |
Method(1, -1); |
Method(1, -1); |
| 234 |
Method(1, 0); |
Method(1, 0); |
| 235 |
Method(1, 1); |
Method(1, 1); |
|
if (Reverse = true) and (result = true) then |
|
|
SetStrings(X, Y, Stone); |
|
| 236 |
end; |
end; |
| 237 |
end; |
end; |
| 238 |
|
|
| 313 |
List.Delete(i); |
List.Delete(i); |
| 314 |
if List.Count = 0 then |
if List.Count = 0 then |
| 315 |
begin |
begin |
| 316 |
FActive := true; |
FActive := FBool; |
| 317 |
inc(FTurnIndex); |
inc(FTurnIndex); |
| 318 |
inc(FTurnNumber); |
inc(FTurnNumber); |
| 319 |
FBuffer[FTurnIndex] := FStrings; |
FBuffer[FTurnIndex] := FStrings; |
| 350 |
begin |
begin |
| 351 |
m := Form1.Image3.Bitmap.Width; |
m := Form1.Image3.Bitmap.Width; |
| 352 |
n := Form1.Image3.Bitmap.Height; |
n := Form1.Image3.Bitmap.Height; |
| 353 |
k:=Form1.Size; |
k := Form1.Size; |
| 354 |
for i := 0 to List.Count - 1 do |
for i := 0 to List.Count - 1 do |
| 355 |
begin |
begin |
| 356 |
p := List[i]; |
p := List[i]; |
| 366 |
|
|
| 367 |
procedure TStoneGrid.Pause; |
procedure TStoneGrid.Pause; |
| 368 |
begin |
begin |
| 369 |
|
FBool := false; |
| 370 |
FActive := false; |
FActive := false; |
| 371 |
end; |
end; |
| 372 |
|
|
| 521 |
var |
var |
| 522 |
i, j: integer; |
i, j: integer; |
| 523 |
begin |
begin |
| 524 |
Canvas.Fill.Color := TAlphaColors.White; |
for i := 0 to Count-1 do |
|
Canvas.FillRect(RectF(0, 0, Count * Size, Count * Size), 0, 0, [], 1); |
|
|
for i := 0 to Count do |
|
| 525 |
begin |
begin |
| 526 |
Canvas.DrawLine(PointF(i * Size, 0), PointF(i * Size, Size * Count), 1); |
for j := 0 to Count-1 do |
|
for j := 0 to Count do |
|
| 527 |
begin |
begin |
|
Canvas.DrawLine(PointF(0, j * Size), PointF(Count * Size, j * Size), 1); |
|
| 528 |
case StoneGrid.Strings[i, j] of |
case StoneGrid.Strings[i, j] of |
| 529 |
stWhite: |
stWhite: |
| 530 |
Canvas.DrawBitmap(Image4.Bitmap, RectF(0, 0, Image4.Bitmap.Width, |
Canvas.DrawBitmap(Image4.Bitmap, RectF(0, 0, Image4.Bitmap.Width, |
| 534 |
Canvas.DrawBitmap(Image3.Bitmap, RectF(0, 0, Image3.Bitmap.Width, |
Canvas.DrawBitmap(Image3.Bitmap, RectF(0, 0, Image3.Bitmap.Width, |
| 535 |
Image3.Bitmap.Height), RectF(i * Size, j * Size, (i + 1) * Size, |
Image3.Bitmap.Height), RectF(i * Size, j * Size, (i + 1) * Size, |
| 536 |
(j + 1) * Size), 1); |
(j + 1) * Size), 1); |
| 537 |
|
stEffect: |
| 538 |
|
continue; |
| 539 |
else |
else |
| 540 |
continue; |
Canvas.DrawBitmap(Image5.Bitmap, RectF(0, 0, Image5.Bitmap.Width, |
| 541 |
|
Image5.Bitmap.Height), RectF(i * Size, j * Size, (i + 1) * Size, |
| 542 |
|
(j + 1) * Size), 1); |
| 543 |
end; |
end; |
| 544 |
|
Canvas.DrawLine(PointF(0, j * Size), PointF(Count * Size, j * Size), 1); |
| 545 |
end; |
end; |
| 546 |
|
Canvas.DrawLine(PointF(i * Size, 0), PointF(i * Size, Size * Count), 1); |
| 547 |
end; |
end; |
| 548 |
if StoneGrid.Active = false then |
if StoneGrid.Active = false then |
| 549 |
StoneGrid.Paint(Canvas); |
StoneGrid.Paint(Canvas); |