function CheckWinner(const track:MarkArray ;const index:Integer; p1:Player; p2:Player):String;
var
i,N:Integer; //Creating index to traverse the 2D array
row,col: Integer; //creating variables to fix rows and columns
temp : String;
begin
row:=(index-1) DIV 3; //fix row to check
col:=(index-1) MOD 3; //fix column to check
N:=3;
temp:='YES';
for i:=0 to N-1 do
begin
//check for player 1
if(NOT(track[row][i]=p1.sign)) then
begin
temp:='NO';
WriteLn('P1',temp);
end;
if((i=(N-1)) AND NOT(temp='NO') AND (track[row][i]=p1.sign)) then
begin
temp:='P1';
WriteLn('P1 won');
continue;
end;
///player 2 check for rows
if(NOT(track[row][i]=p2.sign)) then
begin
temp:='NO';
WriteLn('P2',temp);
continue;
end;
if((i=N-1) AND NOT(temp='NO') AND (track[row][i]=p2.sign)) then
begin
temp:='P2';
WriteLn('P2 won');
end;
end;
ちょっと、私はパスカルでTicTacToeのコードを書いています。チックタックトゥチェック勝者フリーパスカル
問題は、このコードは常に、行の最後のインデックスをチェックして、プレーヤー1のみに通知しています。主な問題はチェックであり、私はもうチェックできません。 助けてください。
この関数は、プレーヤー1とプレーヤー2の2つのプレーヤーレコードに渡されています。プレーヤー記号はティックまたはクロスで、インデックスパラメーターは2D配列インデックスに変換された画面のボックス番号です。誰かがthis.Thisと私は後でそれに追加することができます行のみのチェックです助けてください。
「続行」は何をすべきだと思いますか? –
ループの残りの部分をスキップするには、continueを使用します。プレイヤー1が勝利すれば、プレイヤー2の勝利をもうチェックする必要はありません。この問題のおかげで私を助けてください。それは本当に感謝します。 – Sam
プレイヤーが勝利した場合、チェックを止めてループから抜け出すことができます。 –