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;
Hey Ich schreibe Code für TicTacToe in Pascal und steckte bei Check-Gewinner-Funktion fest.Tic Tac Toe checkgewinner gratis pascal
Das Problem ist dieser Code immer überprüfen Sie den letzten Index der Zeile für das Zeichen und sagt nur für Spieler 1, das Hauptproblem ist mit Schecks und ich kann nicht mehr an Schecks denken. Bitte helfen.
Die Funktion wird zwei Spieler-Datensätze für Spieler 1 und Spieler 2 übergeben, Spieler-Zeichen ist Tick oder Kreuz und Index-Parameter ist die Box-Nummer auf dem Bildschirm in einen 2D-Array-Index konvertiert. Bitte helfen Sie jemand dabei. Dies ist eine Zeile nur überprüfen, die ich später hinzufügen kann.
Was denkst du soll das 'Continue' machen? –
Hey, continue wird verwendet, um den Rest der Schleife zu überspringen. Ich benutze weiter, denn wenn Spieler 1 gewinnt, musst du nicht mehr nach Spieler 2 suchen. Können Sie mir bitte mit diesem Problem helfen? Ich werde es wirklich zu schätzen wissen. – Sam
Wenn einer der Spieler gewinnt, können Sie die Überprüfung stoppen und aus der Schleife ausbrechen. –