Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program tic_tac_toe;
- type
- Field = array [1..7,1..7] of String;
- Cells = array [1..9] of Integer;
- var
- gameField : Field;
- gameCells : Cells;
- player : String;
- i, j, stepsCount, choice : Integer;
- isEnded, legalChoice : Boolean;
- procedure createField(var field: Field);
- begin
- field[1,1] := '╔';
- field[1,2] := '═';
- field[1,3] := '╦';
- field[1,4] := '═';
- field[1,5] := '╦';
- field[1,6] := '═';
- field[1,7] := '╗';
- field[2,1] := '║';
- field[2,2] := ' ';
- field[2,3] := '║';
- field[2,4] := ' ';
- field[2,5] := '║';
- field[2,6] := ' ';
- field[2,7] := '║';
- field[3,1] := '╠';
- field[3,2] := '═';
- field[3,3] := '╬';
- field[3,4] := '═';
- field[3,5] := '╬';
- field[3,6] := '═';
- field[3,7] := '╣';
- field[4,1] := '║';
- field[4,2] := ' ';
- field[4,3] := '║';
- field[4,4] := ' ';
- field[4,5] := '║';
- field[4,6] := ' ';
- field[4,7] := '║';
- field[5,1] := '╠';
- field[5,2] := '═';
- field[5,3] := '╬';
- field[5,4] := '═';
- field[5,5] := '╬';
- field[5,6] := '═';
- field[5,7] := '╣';
- field[6,1] := '║';
- field[6,2] := ' ';
- field[6,3] := '║';
- field[6,4] := ' ';
- field[6,5] := '║';
- field[6,6] := ' ';
- field[6,7] := '║';
- field[7,1] := '╚';
- field[7,2] := '═';
- field[7,3] := '╩';
- field[7,4] := '═';
- field[7,5] := '╩';
- field[7,6] := '═';
- field[7,7] := '╝';
- end;
- procedure writeField(field: Field);
- var i, j: Integer;
- begin
- for i := 1 to 7 do
- begin
- for j := 1 to 7 do
- write(field[i,j]);
- writeln;
- end;
- end;
- procedure makeTurn(var field: Field; var cells: Cells; player: String; cell: Integer);
- var i, j: Integer;
- row, column: Integer;
- begin
- if player = 'X' then
- cells[cell] := 1
- else
- cells[cell] := 2;
- row := (cell div 3) + 1;
- column := cell mod 3;
- if column = 0 then
- begin
- column := 3;
- row := row - 1;
- end;
- field[row * 2, column * 2] := player;
- end;
- function checkWin(cells: Cells; player: String): Boolean;
- begin
- checkWin := False;
- if (cells[1] = cells[4]) and (cells[4] = cells[7]) and (cells[1] <> 0) then
- checkWin := True;
- if (cells[2] = cells[5]) and (cells[5] = cells[8]) and (cells[2] <> 0) then
- checkWin := True;
- if (cells[3] = cells[6]) and (cells[6] = cells[9]) and (cells[3] <> 0) then
- checkWin := True;
- if (cells[1] = cells[2]) and (cells[2] = cells[3]) and (cells[1] <> 0) then
- checkWin := True;
- if (cells[4] = cells[5]) and (cells[5] = cells[6]) and (cells[4] <> 0) then
- checkWin := True;
- if (cells[7] = cells[8]) and (cells[8] = cells[9]) and (cells[7] <> 0) then
- checkWin := True;
- if (cells[1] = cells[5]) and (cells[5] = cells[9]) and (cells[1] <> 0) then
- checkWin := True;
- if (cells[3] = cells[5]) and (cells[5] = cells[7]) and (cells[3] <> 0) then
- checkWin := True;
- if checkWin then
- writeln('Победил ', player);
- end;
- begin
- createField(gameField);
- writeField(gameField);
- player := 'X';
- stepsCount := 0;
- isEnded := False;
- legalChoice := False;
- while isEnded = False do
- begin
- writeln('Ходит ', player);
- while legalChoice = False do
- begin
- write('Выбирете клетку: ');
- readln(choice);
- if (choice <= 0) or (choice >= 10) then
- writeln('Клетки ', choice, ' не существует. Попробуйте еще раз.')
- else
- legalChoice := true;
- if legalChoice then
- if gameCells[choice] <> 0 then
- begin
- writeln('Клетка ', choice, ' занята. Попробуйте еще раз.');
- legalChoice := False;
- end;
- end;
- makeTurn(gameField, gameCells, player, choice);
- writeField(gameField);
- stepsCount := stepsCount + 1;
- if (checkWin(gameCells, player) = true) or (stepsCount = 9) then
- isEnded := True;
- if player = 'X' then
- player := 'O'
- else
- player := 'X';
- choice := 0;
- legalChoice := False;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement