Академический Документы
Профессиональный Документы
Культура Документы
other(x,o).
other(o,x).
display([A,B,C,D,E,F,G,H,I]) :- write([A,B,C]),nl,write([D,E,F]),nl,
write([G,H,I]),nl,nl.
selfgame :- game([b,b,b,b,b,b,b,b,b],x).
xmove([b,B,C,D,E,F,G,H,I], 1, [x,B,C,D,E,F,G,H,I]).
xmove([A,b,C,D,E,F,G,H,I], 2, [A,x,C,D,E,F,G,H,I]).
xmove([A,B,b,D,E,F,G,H,I], 3, [A,B,x,D,E,F,G,H,I]).
xmove([A,B,C,b,E,F,G,H,I], 4, [A,B,C,x,E,F,G,H,I]).
xmove([A,B,C,D,b,F,G,H,I], 5, [A,B,C,D,x,F,G,H,I]).
xmove([A,B,C,D,E,b,G,H,I], 6, [A,B,C,D,E,x,G,H,I]).
xmove([A,B,C,D,E,F,b,H,I], 7, [A,B,C,D,E,F,x,H,I]).
xmove([A,B,C,D,E,F,G,b,I], 8, [A,B,C,D,E,F,G,x,I]).
xmove([A,B,C,D,E,F,G,H,b], 9, [A,B,C,D,E,F,G,H,x]).
xmove(Board, N, Board) :- write('Illegal move.'), nl.
explain :-
write('You play X by entering integer positions followed by a period.'),
nl,
display([1,2,3,4,5,6,7,8,9]).
#include<bits/stdc++.h>
#define COMPUTER 1
#define HUMAN 2
printf("\n\n");
board[0][1], board[0][2]);
printf("\t\t\t--------------\n");
board[1][1], board[1][2]);
printf("\t\t\t--------------\n");
board[2][1], board[2][2]);
return;
void showInstructions()
{
printf("\t\t\t Tic-Tac-Toe\n\n");
printf("\t\t\t 1 | 2 | 3 \n");
printf("\t\t\t--------------\n");
printf("\t\t\t 4 | 5 | 6 \n");
printf("\t\t\t--------------\n");
printf("\t\t\t 7 | 8 | 9 \n\n");
printf("-\t-\t-\t-\t-\t-\t-\t-\t-\t-\n\n");
return;
srand(time(NULL));
moves[i] = i;
return;
if (whoseTurn == COMPUTER)
else
return;
return (true);
return(false);
{
if (board[0][i] == board[1][i] &&
return (true);
return(false);
return(true);
return(true);
return(false);
return(rowCrossed(board) || columnCrossed(board)
|| diagonalCrossed(board) );
char board[SIDE][SIDE];
int moves[SIDE*SIDE];
initialise(board, moves);
showInstructions();
int moveIndex = 0, x, y;
moveIndex != SIDE*SIDE)
if (whoseTurn == COMPUTER)
x = moves[moveIndex] / SIDE;
y = moves[moveIndex] % SIDE;
board[x][y] = COMPUTERMOVE;
COMPUTERMOVE, moves[moveIndex]+1);
showBoard(board);
moveIndex ++;
whoseTurn = HUMAN;
x = moves[moveIndex] / SIDE;
y = moves[moveIndex] % SIDE;
board[x][y] = HUMANMOVE;
printf ("HUMAN has put a %c in cell %d\n",
HUMANMOVE, moves[moveIndex]+1);
showBoard(board);
moveIndex ++;
whoseTurn = COMPUTER;
printf("It's a draw\n");
else
// winner
if (whoseTurn == COMPUTER)
whoseTurn = HUMAN;
whoseTurn = COMPUTER;
declareWinner(whoseTurn);
return;
// Driver program
int main()
playTicTacToe(COMPUTER);
return (0);
}
Output:
Tic-Tac-Toe
1 | 2 | 3
--------------
4 | 5 | 6
--------------
7 | 8 | 9
- - - - - - - - - -
| |
--------------
| | O
--------------
| |
| |
--------------
| | O
--------------
X | |
| |
--------------
| O | O
--------------
X | |
X | |
--------------
| O | O
--------------
X | |
X | |
--------------
| O | O
--------------
X | | O
X | |
--------------
| O | O
--------------
X | X | O
--------------
O | O | O
--------------
X | X | O