第2回 解答

第2回 解答
ファンクション Naranda
function
Naranda(N : TBangou) : Boolean;
{N 番を含む列に同じマークが3つ並んだか調べる}
begin
case N of
1 : Result := Onaji(1,2,3)
2 : Result := Onaji(1,2,3)
3 : Result := Onaji(1,2,3)
4 : Result := Onaji(4,5,6)
5 : Result := Onaji(4,5,6)
6 : Result := Onaji(4,5,6)
7 : Result := Onaji(7,8,9)
8 : Result := Onaji(7,8,9)
9 : Result := Onaji(7,8,9)
else Result := False;
end;
end; {Naranda}
or
or
or
or
or
or
or
or
or
Onaji(1,4,7) or Onaji(1,5,9);
Onaji(2,5,8);
Onaji(3,6,9) or Onaji(3,5,7);
Onaji(1,4,7);
Onaji(2,5,8) or Onaji(1,5,9) or Onaji(3,5,7);
Onaji(3,6,9);
Onaji(1,4,7) or Onaji(3,5,7);
Onaji(2,5,8);
Onaji(3,6,9) or Onaji(1,5,9);
// 必要ないが,警告が出なくなる
プロシージャ TebanKoutai
変更前
procedure TebanKoutai(var Player : TPlayer);
{手番を交代する}
begin
case Player of
Maru : begin
Player := Batu;
WriteLn('×の番です');
end;
Batu : begin
Player := Maru;
WriteLn('○の番です');
end;
end;
end; {TebanKoutai}
プロシージャ TebanKoutai
変更後
procedure TebanKoutai(var Player : TPlayer);
{手番を交代する}
begin
if Player = Maru
then begin
Player := Batu;
WriteLn('×の番です');
end
else begin
Player := Maru;
WriteLn('○の番です');
end;
end; {TebanKoutai}
プロシージャ BanWoKaku
procedure BanWoKaku;
{盤を書く}
var
N : TBangou;
begin
WriteLn('┌─┬─┬─┐');
for N := 1 to 9 do
begin
Write('│');
YousoWoKaku(N);
if N in [3,6]
then begin
WriteLn('│');
WriteLn('├─┼─┼─┤');
end;
end;
WriteLn('│');
WriteLn('└─┴─┴─┘');
end; {BanWoKaku}