在基本的Tic-Tac-Toe游戏中保存数据

use*_*913 2 c

我对C相对较新.在Kochan的"C语言编程"中,我目前正在使用if-else语句.我正在尝试编写一个基本的tic-tac-toe游戏,但我遇到了一些困难.一旦玩家放置了x或o,我不确定如何保存棋盘.这是我到目前为止的代码:

#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.
Run Code Online (Sandbox Code Playgroud)

我还是太初学者才能实现这个功能吗?

Cal*_*leb 6

首先,这没有意义:

int board = "_|_|_\n
             _|_|_\n
              | | \n";
Run Code Online (Sandbox Code Playgroud)

An int不是字符串,也不能将字符串赋给int.在C中,字符串是字符数组:

char board[] = "_|_|_\n_|_|_\n | | \n";
Run Code Online (Sandbox Code Playgroud)

这更有意义.但它真的不是存储tic tac toe board状态的好方法.你应该做的是为板上的每个位置存储一些值.不要担心电路板的实际格式,您可以在显示时按照您的喜好对其进行格式化.所以以这种方式存储你的板:

char board[9] = "---------";
Run Code Online (Sandbox Code Playgroud)

其中" - "表示空格为空.当玩家移动时,您可以使用"X"或"O"(或1和2,或任何其他适合您的值)替换阵列中相应位置的角色.当您从用户那里获得一些输入时,您将只更改电路板阵列中的相应值.例如,如果从左上角开始对位置0-8进行编号,则中间行中最右边的位置将是位置5.(请记住,C数组是从零开始的,因此第一个索引是0.)因此,如果用户想要在该位置放置X,您会说:

board[5] = 'X';
Run Code Online (Sandbox Code Playgroud)

接下来,您可能想要编写一个打印电路板的功能.是在这里您可以插入任何你喜欢的人物绘制电路板.

最后,您将要使用某种循环来重复读取用户的输入,修改电路板的状态,打印电路板,并显示提示.