• C

# TIC TAC TOE

I have a program that involves the design of a tic tac toe game. How do you use a random generator to make the computer respond to the players move?
###### Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
Assuming that the players move is a number from 1..N (say 1..9 for tic-tac-toe) then you use
int move = int(N*rand()/double(RAND_MAX+1)+1);
rand() returns an int 0 .. RAND_MAX -- the multiplication and division gives you 0..N-1, then add 1 to get 1..N

0

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Commented:
Assume that the user/player enter a move (1 - N) for the tic-tac-toe game.
declare  a few varibles and constant:

#define FALSE 0
#define TRUE 1

int userMove[9], comMove[9], success, index;
/*for the user move and the position of the computer and success is for checking if the ramdom is same as the user move*/

do
{
comMove[index] = random (N) + 1;
/*a for loop should be run here to check all the user move against the     com mover */
if (comMove[index] != UserMove[index])
success = TRUE;
else
success = FALSE;

}while (success == FALSE);

the code above is for the first move if you will like to use it for the next few move than use this as a function and molified the if statement to run a loop to check all the user moves.

0
Commented:
Assume that the user/player enter a move (1 - N) for the tic-tac-toe game.
declare  a few varibles and constant:

#define FALSE 0
#define TRUE 1

int userMove[9], comMove[9], success, index;
/*for the user move and the position of the computer and success is for checking if the ramdom is same as the user move*/

do
{
comMove[index] = random (N) + 1;
/*a for loop should be run here to check all the user move against the     com mover */
if (comMove[index] != UserMove[index])
success = TRUE;
else
success = FALSE;

}while (success == FALSE);

the code above is for the first move if you will like to use it for the next few move than use this as a function and molified the if statement to run a loop to check all the user moves.

0
Commented:
Assume that the user/player enter a move (1 - N) for the tic-tac-toe game.
declare  a few varibles and constant:

#define FALSE 0
#define TRUE 1

int userMove[9], comMove[9], success, index;
/*for the user move and the position of the computer and success is for checking if the ramdom is same as the user move*/

do
{
comMove[index] = random (N) + 1;
/*a for loop should be run here to check all the user move against the     com mover */
if (comMove[index] != UserMove[index])
success = TRUE;
else
success = FALSE;

}while (success == FALSE);

the code above is for the first move if you will like to use it for the next few move than use this as a function and molified the if statement to run a loop to check all the user moves.

0
Commented:

* random(N) is not standard C and so may well be missing in some implementations.

* the code
if (comMove[index] != UserMove[index])
success = TRUE;
else
success = FALSE;
is not really good.  better is
success = comMove[index] != userMove[index];

* similaraly
} while (success == FALSE);
would be better as
) while (! success)

* and the whole logic is flawed anyway.

char board[9], move[9];
int i;
int userturn =1 ;
char userpiece='o';
char comppiece='x';
for (i=0;i<9;i++) board[i] = ' '; /* no o or x */
for (i=0;i<9;i++) move[i] = -1; /* no move */
for (i=0;i<9;i++) {
int which;
char piece;
if (i%2 == userturn) {
piece = userpiece;
/*
*/
} else {
do {
which = int(9*rand()/double(RAND_MAX+1)+1);
} while (board[i] != ' ');
}
move[i] = which;
board[i] = piece;
if (i > 4) {
/*
check for win
*/
}
}

0
Commented:
BTW change
which = int(9*rand()/double(RAND_MAX+1)+1);
into
which = int(9*rand()/double(RAND_MAX+1));
as in the code above, move numbers are 0..8 rather than 1..9

0
Author Commented:
I'm sorry guys but I finished the whole program two days ago.