C语言小游戏井字棋

这个游戏用的是前6章的知识,通过定义2维数组3*3型,将值赋给9个格子,通过选择格子来选择下棋的位置

代码如下:

#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<math.h>
#define time 9
int main()
{
    printf("欢迎来到井字游戏\n");
    printf("游戏规则:\n");
    printf("1p使用X,2p使用O,当任意一种符号横排或者竖排或者对角线均相同时,该玩家获胜\n");

    char A[3][3] = {
        {'0','1','2'},
        {'3','4','5'},
        {'6','7','8'}
    };
    int  player; int choice;
    int number;
    int row; int line;
    int winner=0;
    int i;
    for (i = 0; i < time && winner == 0; i++)
    {

        player = i % 2 + 1;                                                    //设置1p和2p
        printf("请%d p选择你要下的位置\n", player);
        scanf_s("%d", &choice);
        row = floor(choice/3);
        line = choice % 3;
        if (row > 2 || row < 0 || line>2 || line < 0 || choice>8)                           //使输入正确   
        {
            printf("错误输入,游戏结束\n");
            break;
        }
        if (A[row][line] == 'X' || A[row][line] == 'Q')
        {
            printf("错误输入,游戏结束\n");
            break;
        }
        if (player == 1)                                                     //设置1p和2p的输入
        {
            A[row][line] = 'X';
        }
        else
        {
            A[row][line] = 'Q';
        }
        printf("****************\n");                                     //制作棋盘
        printf("*%c * %c * %c  *\n", A[0][0], A[0][1], A[0][2]);
        printf("****************\n");
        printf("*%c * %c * %c  *\n", A[1][0], A[1][1], A[1][2]);
        printf("****************\n");
        printf("*%c * %c * %c  *\n", A[2][0], A[2][1], A[2][2]);
        printf("****************\n");
        if ((A[0][0] == A[1][1] && A[1][1] == A[2][2]) || (A[0][2] == A[1][1] && A[1][1] == A[2][0])) //判定胜利条件
        {
        winner = player;
        printf("胜利者是%d p", player);
        system("pause");
         }
        for (number = 0; number < 3; number++)                                        //判定胜利条件
        {
            if ((A[number][0] == A[number][1] && A[number][1] == A[number][2]) ||
                (A[0][number] == A[1][number] && A[1][number] == A[2][number]))
            {
                winner = player;
                printf("胜利者是%d p", player);
                system("pause");
            }
            if (i == 9)                                                                  //平局时
            {
                printf("平局");
                system("pause");
            }
        }
        

    }
    
    return 0;







}

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值