编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//初始化棋盘
int x,y;
void playermove(char board[x][y],int x,int y)
{
    int m,n;
    printf("玩家回合\n");
    while(1)
    {
        printf("请输入坐标");
        scanf("%d%d",&m,&n);
        if(m>=1&&m<=x&&n>=1&&n<=y)
        {
            if(board[m-1][n-1]==' ')
            {
                board[m-1][y-1]=='$';
                break;
            }
            else
            {
                printf("该坐标被占用\n");
            }
        }
        else
        {
            printf("坐标非法\n");
        }
    }
}
void computermove(char board[x][y],int x,int y)
{
    printf("电脑回合\n");
    int m,n;
    m=rand()%x;
    n=rand()%y;
    while(1)
    {
        if(board[m][n]==' ')
        {
            board[m][n]='#';
            break;
        }
    }
}
void display(char board[x][y],int x,int y)
{
    int i;
    for(i=0;i<x;i++)
    {
        int j;
        for(j=0;j<y;j++)
        {
            printf(" %c ",board[i][j]);
            if(j<y-1)
            {
                printf("|");
            }
        }
        printf("\n");
        if(i<x-1)
        {
            int j;
            for(j=0;j<y;j++)
            {
                printf("---");
                if(j<y-1)
                {
                    printf("|");
                }
            }printf("\n");
        }
    }
}
void InitBoard(char board[x][y],int x,int y)
{
    int z,s;
    for(z=0;z<x;z++)
    {
        for(s=0;s<y;s++)
        {
            board[z][s]=' ';
        }
    }
}
void manu()
{
    printf("~~~~~~~~~~~~~~~~~~~\n");
    printf("press 1 start game\n");
    printf("press 0 exit game\n");
    printf("~~~~~~~~~~~~~~~~~~~\n");
}
int isfull(char baord[x][y],int x,int y)
{
    int m,n;
    for(m=0;m<x;m++)
    {
        for(n=0;n<y;n++)
        {
            return 0;
        }
    }
    return 1;
}
char iswin(char board[x][y],int x,int y)
{
    int m,n;
    for(m=0;m<x;m++)
    {
        if(board[m][0]==board[m][1]==board[m][2]&&board[1][0]!=0)
        {
            return board[m][1];
        }
    }
    for(m=0;m<y;m++)
    {
        if(board[0][m]==board[1][m]==board[2][m]&&board[1][m]!=0)
        {
            return board[1][m];
        }
    }
    if(board[1][1]==board[0][0]==board[2][2]&&board[1][1]!=0)
    {
        return board[1][1];
    }
    if(board[0][2]==board[1][1]==board[2][0]&&board[1][1]!=0)
    {
        return board[1][1]; 
    }
    if(1==isfull(board,x,y))
    {
        return 'q';
    }
    return 'c';
}
void game()
{
    char ret=0;
    int x=3,y=3;
    char board[x][y];
    InitBoard(board,x,y);
    display(board,x,y);
    while(1)
    {
        playermove(board,x,y);
        display(board,x,y);
        if(ret!='c')
        {
            break;
        }
        computermove(board,x,y);
        display(board,x,y);
        ret=iswin(board,x,y);
        if(ret!='c')
        {
            break;
        }
    }
    if(ret=='*')
    {
        printf("玩家赢了\n");
    }
    else if(ret=='#')
    {
        printf("电脑赢了\n");
    }
    else
    {
        printf("平局\n");
    }
   
}
int main () {
    int input;
    srand((unsigned int)time(NULL));
    do
    {
        manu(); 
        printf("please decide 1 or 0\n");
        scanf("%d",&input);
        switch(input)
        {
            case 1:
            printf("start game\n");
            game();
            break;
            case 0:
            printf("exit game\n");
            break;
            default:
            printf("unknow wrong");
            break;
        }
    }while(input);
    return 0;
}