飞飞肥 2022-10-16 11:32 采纳率: 40%
浏览 11

三字棋遇到的小问题 赋值方面

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define R 3
#define C 3
void game_start()
{
    printf("#################################################################\n");
    printf("#############################开始游戏############################\n");
    printf("##请输入:                     1/0                               \n");
    printf("############1.开始    ###################0.结束    ##############\n");
    printf("#################################################################\n");
    printf("#################################################################\n");
    printf("#################################################################\n");
    printf("#################################################################\n");


}
void gezi(int x[R][C])
{
    int i, j, k;
    for (i = 0; i < R; i++)
    {
        for (j = 0; j < C; j++)
        {
            if (x[i][j] == 0)
                printf("   |");
            else if (x[i][j] ==-1)
                printf(" * |");
            else if (x[i][j]==1)
                printf(" # |");
        }
        printf("\n");
        for (k = 0; k < C; k++)
            printf("----");
        printf("\n");
    }
}
void computer(int arr[R][C])
{
    srand(time(NULL));
    do
    {    
        if (arr[rand() % (R-1)][rand() % (C-1)] == 0 )                 //目前有问题
            arr[rand() % (R-1)][rand() % (C-1)] = -1;
    } while (arr[rand() % (R-1)][rand() % (C-1)] !=0 );
}
void game()
{
    int x, y;
    int arr[R][C] = { 0 };
    do
    {
        do
        {

            printf("请输入棋子的坐标:x,y          ");          scanf("%d%*c%d", &x, &y);
            if(arr[x - 1][y - 1] !=0)
                printf("这个格子有棋子了\n");
        }while (arr[x - 1][y - 1] !=0);
        arr[x - 1][y - 1] = 1;
    computer(arr);
    gezi(arr);
    } while (1);
}
int main()
{
    int a;
    do
    {
        game_start();
        scanf("%d", &a);
    } while (a == 0);
    game();
    
}

我是想 让玩家输入# 电脑输入*
创建一个RC的数组初始化为零
1为# -1为

玩家输入这方面可能没啥问题 就是电脑这里我想利用时间戳来给数组的元素值附上-1 然而 我测试出的有时候可能-1的值会替换1的值
我自己不会函数内部的监控 所以找不出来问题
这个程序也没做完 输赢的判定还没做
先解决打印的这个问题吧

  • 写回答

1条回答 默认 最新

  • honestman_ 2022-10-16 12:28
    关注
    #define _CRT_SECURE_NO_WARNINGS 1
     
    #include "game.h"
     
    //菜单函数
    void menu()
    {
        printf("*******************************************\n");
        printf("************** 1. play ********************\n");
        printf("************** 0. exit ********************\n");
        printf("*******************************************\n");
    }
     
    void game()
    {
        char ret = 0;
        //数据的存储需要一个3*3的二维数组
        char board[ROW][COL] = { 0 };
        init_board(board, ROW, COL);
        display_board(board, ROW, COL);
        //玩游戏
        while (1)
        {
            player_move(board, ROW, COL);
            display_board(board, ROW, COL);
     
            ret = is_win(board, ROW, COL);
            if (ret != 'C')
                break;
     
            computer_move(board, ROW, COL);
            display_board(board, ROW, COL);
     
            ret = is_win(board, ROW, COL);
            if (ret != 'C')
                break;
     
        }
        if (ret == '*')
        {
            printf("玩家赢\n");
        }
        else if (ret == '#')
        {
            printf("电脑赢\n");
        }
        else if (ret == 'Q')
        {
            printf("平局\n");
        }
     
    }
     
    int main()
    {
        int input = 0;
        srand((unsigned int)time(NULL));//生成随机数
        do
        {
            menu();
            printf("请输入选择>");
            scanf("%d", &input);
            switch (input)
            {
            case 1:
                game();
                break;
            case 0:
                printf("游戏结束!\n");
                break;
            default:
                printf("输入错误,请重新输入>\n");
                break;
            }
        } while (input);
     
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月16日

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题