Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

TIC TAC TOE

Posted on 1998-04-19
7
515 Views
Last Modified: 2010-04-15
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?
0
Comment
Question by:TOA
  • 3
  • 3
7 Comments
 
LVL 10

Accepted Solution

by:
RONSLOW earned 50 total points
ID: 1250037
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
 

Expert Comment

by:justcky
ID: 1250038
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
 

Expert Comment

by:justcky
ID: 1250039
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
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 

Expert Comment

by:justcky
ID: 1250040
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
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1250041
There is some bad advice in the above...

* 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.

how about this..

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;
    /*
    ask user for which square
    */
  } 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
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1250042
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 Comment

by:TOA
ID: 1250043
I'm sorry guys but I finished the whole program two days ago.

Thanks for your help.
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question