| 104 |
procedure MenuItem10Click(Sender: TObject); |
procedure MenuItem10Click(Sender: TObject); |
| 105 |
procedure MenuItem11Click(Sender: TObject); |
procedure MenuItem11Click(Sender: TObject); |
| 106 |
procedure Timer2Timer(Sender: TObject); |
procedure Timer2Timer(Sender: TObject); |
|
procedure FormDeactivate(Sender: TObject); |
|
|
procedure FormActivate(Sender: TObject); |
|
| 107 |
private |
private |
| 108 |
{ Private 宣言 } |
{ Private 宣言 } |
| 109 |
StoneGrid: TStoneGrid; |
StoneGrid: TStoneGrid; |
| 132 |
var |
var |
| 133 |
i, j: integer; |
i, j: integer; |
| 134 |
begin |
begin |
|
result := 0; |
|
| 135 |
if CanSetStone(Stone, X, Y, true) = true then |
if CanSetStone(Stone, X, Y, true) = true then |
| 136 |
begin |
begin |
| 137 |
if Stone = stEffect then |
result := 0; |
|
Stone := FEffectStone; |
|
| 138 |
case Stone of |
case Stone of |
| 139 |
stBlack: |
stBlack: |
| 140 |
Stone := stWhite; |
Stone := stWhite; |
| 141 |
stWhite: |
stWhite: |
| 142 |
Stone := stBlack; |
Stone := stBlack; |
|
else |
|
|
Exit; |
|
| 143 |
end; |
end; |
| 144 |
for i := 0 to Count - 1 do |
for i := 0 to Count - 1 do |
| 145 |
for j := 0 to Count - 1 do |
for j := 0 to Count - 1 do |
| 146 |
if CanSetStone(Stone, i, j, false) = true then |
if CanSetStone(Stone, i, j, false) = true then |
| 147 |
inc(result); |
inc(result); |
| 148 |
end; |
end |
| 149 |
|
else |
| 150 |
|
result := -1; |
| 151 |
FStrings := FBuffer[FTurnIndex]; |
FStrings := FBuffer[FTurnIndex]; |
| 152 |
end; |
end; |
| 153 |
|
|
| 334 |
var |
var |
| 335 |
i, j, m, n: integer; |
i, j, m, n: integer; |
| 336 |
begin |
begin |
| 337 |
n := 0; |
n := -1; |
| 338 |
for i := 0 to Count - 1 do |
for i := 0 to Count - 1 do |
| 339 |
for j := 0 to Count - 1 do |
for j := 0 to Count - 1 do |
| 340 |
begin |
begin |
| 341 |
m := CalScore(Stone, i, j); |
m := CalScore(Stone, i, j); |
| 342 |
if ((n = 0) and (m > 0)) or ((0 < m) and (m < n)) then |
if (n = -1) or ((0 < m) and (m < n)) then |
| 343 |
begin |
begin |
| 344 |
n := m; |
n := m; |
| 345 |
Pos := Point(i, j); |
Pos := Point(i, j); |
| 346 |
end; |
end; |
| 347 |
end; |
end; |
| 348 |
result := not(n = 0); |
result := not(n = -1); |
| 349 |
end; |
end; |
| 350 |
|
|
| 351 |
procedure TStoneGrid.Paint(Canvas: TCanvas); |
procedure TStoneGrid.Paint(Canvas: TCanvas); |
| 484 |
begin |
begin |
| 485 |
StoneGrid.CanSetStone(Index.Stone, s.X, s.Y, true, true); |
StoneGrid.CanSetStone(Index.Stone, s.X, s.Y, true, true); |
| 486 |
PaintBox1.Repaint; |
PaintBox1.Repaint; |
|
ChangePlayer; |
|
| 487 |
end; |
end; |
| 488 |
|
ChangePlayer; |
| 489 |
end; |
end; |
| 490 |
|
|
| 491 |
procedure TForm1.GameStart; |
procedure TForm1.GameStart; |
| 492 |
begin |
begin |
|
Timer1.Enabled := false; |
|
| 493 |
Index := Player1; |
Index := Player1; |
| 494 |
StoneGrid.Start; |
StoneGrid.Start; |
| 495 |
PaintBox1.Repaint; |
PaintBox1.Repaint; |
| 496 |
Caption := '黒から始めます'; |
Caption := '黒から始めます'; |
|
Timer1.Enabled := true; |
|
| 497 |
end; |
end; |
| 498 |
|
|
| 499 |
procedure TForm1.MenuItem10Click(Sender: TObject); |
procedure TForm1.MenuItem10Click(Sender: TObject); |
| 583 |
Size := Min(ClientWidth, ClientHeight) div Count; |
Size := Min(ClientWidth, ClientHeight) div Count; |
| 584 |
end; |
end; |
| 585 |
|
|
|
procedure TForm1.FormActivate(Sender: TObject); |
|
|
begin |
|
|
Timer1.Enabled := true; |
|
|
end; |
|
|
|
|
| 586 |
procedure TForm1.FormCreate(Sender: TObject); |
procedure TForm1.FormCreate(Sender: TObject); |
| 587 |
begin |
begin |
| 588 |
StoneGrid := TStoneGrid.Create; |
StoneGrid := TStoneGrid.Create; |
| 603 |
GameStart; |
GameStart; |
| 604 |
end; |
end; |
| 605 |
|
|
|
procedure TForm1.FormDeactivate(Sender: TObject); |
|
|
begin |
|
|
Timer1.Enabled := false; |
|
|
end; |
|
|
|
|
| 606 |
procedure TForm1.FormDestroy(Sender: TObject); |
procedure TForm1.FormDestroy(Sender: TObject); |
| 607 |
begin |
begin |
| 608 |
StoneGrid.Free; |
StoneGrid.Free; |