C语言:极简陋的井字棋

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YangZuo_Chester/article/details/77164821

界面极其简陋的C语言五子棋╮( ̄▽ ̄”)╭

#include<stdio.h>
#include<stdlib.h>
int Ground[4][4] = { 0 }; //棋盘全局变量

int Check_ChessBoard(int iY, int iX)//检查是否有赢家
{
    int i, j;
    //横向
    for(j = iY, i = 1;i <= 2;i++)
    {
        if(Ground[j][i] != Ground[j][i + 1])
        {
            break;
        }
        if(i == 2 && Ground[j][i] != 0)
        {
            return 1;
        }
    }
    //纵向
    for(i = iX, j = 1;j <= 2;j++)
    {
        if(Ground[j][i] != Ground[j + 1][i])
        {
            break;
        }
        if(j == 2 && Ground[j][i] != 0)
        {
            return 1;
        }
    }
    //斜线1  右上->左下
    if(iX + iY == 4)
    {
        for(i = 3, j = 1;i >= 2;--i, ++j)
        {
            if(Ground[i][j] != Ground[i - 1][j + 1])
            {
                break;
            }
            if(i == 2 && Ground[i][j] != 0)
            {
                return 1;
            }
        }
    }
    //斜线2 左上->右下
    if(iX == iY)
    {
        for(i = 1, j = 1;i <= 2;++i, ++j)
        {
            if(Ground[i][j] != Ground[i + 1][j + 1])
            {
                break;
            }
            if(i == 2 && Ground[i][j] != 0)
            {
                return 1;
            }
        }
    }

    return 0;
}

void Check_Legality(int iY, int iX)//检查棋子是否合法
{
    while(Ground[iY][iX] != 0 || iX<1 || iX>3 || iY<1 || iY>3)
    {
        puts("该点已被占用,请重新选择棋子:");
        scanf("%d %d", &iX, &iY);
    }
}
int main()
{
    const int iMax = 9;

    int iStep, iTurn;
    int iX, iY;
    //打印棋盘
    printf("  x\ny %d %d %d\n  %d %d %d\n  %d %d %d\n", Ground[1][1], Ground[1][2], Ground[1][3], Ground[2][1], Ground[2][2], Ground[2][3], Ground[3][1], Ground[3][2], Ground[3][3]);
    puts("左上角棋子坐标为(1 1)");
    for(iStep = 1;iStep <= iMax;++iStep)
    {
        iTurn = iStep % 2;


        if(iTurn == 1) //Player1  Chess=1 Step 1 3 5 7 9
        {
            puts("玩家1输入棋子坐标:");
            scanf("%d %d", &iX, &iY);

            Check_Legality(iY, iX); //合法性判断

            Ground[iY][iX] = 1;
            system("CLS");//棋盘打印
            printf("  x\ny %d %d %d\n  %d %d %d\n  %d %d %d\n", Ground[1][1], Ground[1][2], Ground[1][3], Ground[2][1], Ground[2][2], Ground[2][3], Ground[3][1], Ground[3][2], Ground[3][3]);

            if(Check_ChessBoard(iY, iX) == 1)
            {
                puts("玩家1胜利!");
                system("pause");
                return 0;
            }
        }

        if(iTurn == 0) //Player2  Chess=2 Step 2 4 6 8
        {
            puts("玩家2输入棋子坐标:");
            scanf("%d %d", &iX, &iY);

            Check_Legality(iY, iX); //合法性判断

            Ground[iY][iX] = 2;
            system("CLS");//棋盘打印
            printf("  x\ny %d %d %d\n  %d %d %d\n  %d %d %d\n", Ground[1][1], Ground[1][2], Ground[1][3], Ground[2][1], Ground[2][2], Ground[2][3], Ground[3][1], Ground[3][2], Ground[3][3]);

            if(Check_ChessBoard(iY, iX) == 1)
            {
                puts("玩家2胜利!");
                system("pause");
                return 0;
            }
        }


    }
    puts("平局!");
    system("pause");
    return 0;
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/YangZuo_Chester/article/details/77164821