I’m relatively new to C. In Kochan’s “Programming in C” I’m currently on if-else statements. I’m trying to program a basic tic-tac-toe game but I’ve run into some difficulty. I’m not sure how to save the board once a player has placed an x or an o. Here’s the code I have so far:
#include <stdio.h>
int main (void)
{
int board = "_|_|_\n
_|_|_\n
| | \n";
int player1, player2;
printf ("Print %i", board)
printf("Player 1, it's your move:")
scanf("%i", player1)
if(player1 == "upLeft")
printf("x|_|_\n
_|_|_\n
_|_|_\n
etc.
Am I still too much of a beginner to implement this feature?
First of all, this doesn’t make sense:
An
intis not a string, and you can’t assign a string to an int. In C, strings are arrays of characters:That makes more sense. But it’s really not a good way to store the state of a tic tac toe board. What you should do instead is store some value for each position on the board. Don’t worry about the actual format of the board, you can format it as you like when you display it. So store your board this way:
where a “-” means the space is empty. When the player moves, you replace the character at the appropriate position in the array with an “X” or an “O” (or 1 and 2, or any other values that work for you). When you get some input from the user, you’ll change just the corresponding value in the board array. If you number the positions 0-8 starting from the top left corner, the rightmost position in the middle row would be position 5, for example. (Remember, C arrays are zero-based, so the first index is 0.) So if the user wants to put an X at that spot, you’d say:
Next, you might want to write a function that prints the board. That is where you’ll insert whatever characters you like to draw the board.
Finally, you’re going to want to use some sort of loop to repeatedly read the user’s input, modify the state of the board, print the board, and maybe display a prompt.