千家信息网

C语言实现三子棋实例代码怎么写

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这期内容当中小编将会给大家带来有关C语言实现三子棋实例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,我将该程序的实现分为3个板块,main,game
千家信息网最后更新 2025年11月06日C语言实现三子棋实例代码怎么写

这期内容当中小编将会给大家带来有关C语言实现三子棋实例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

首先,我将该程序的实现分为3个板块,main,game.h,和game.c;

代码如下:

#define _CRT_SECURE_NO_WARNINGS#include"game.h" void menu(){        printf("****************************************\n");        printf("***********  1.play 0.exit  ************\n");        printf("****************************************\n");} void game(){        char board[ROW][COL] = {0};        Creatboard(board, ROW,COL);//创建棋盘        Displayboard(board,ROW,COL); //初始化棋盘        while (1)        {                PlayerMove(board,ROW,COL);//玩家移动                Displayboard(board, ROW, COL);//绘制                char i = Result(board, ROW, COL);//判断                switch (i)                {                case '*':                        printf("你赢了!");                        Sleep(2000);                        Creatboard(board, ROW, COL);                        break;                case '#':                        printf("你输了!");                        Sleep(2000);                        Creatboard(board, ROW, COL);                        break;                case 'p':                        printf("平局!");                        Sleep(2000);                        Creatboard(board, ROW, COL);                        break;                case 'c':;                }//我没用鹏哥讲的;用的switch好像更麻烦了                system("cls");//清屏                ComputerMove(board, ROW, COL);//电脑移动                Displayboard(board, ROW, COL);                switch (i)                {                case '*':                        printf("你赢了!");                        Sleep(2000);                        Creatboard(board, ROW, COL);                        break;                case '#':                        printf("你输了!");                        Sleep(2000);                        Creatboard(board, ROW, COL);                        break;                case 'p':                        printf("平局!");                        Sleep(2000);                        Creatboard(board, ROW, COL);                        break;                case 'c':;                }        }} void control(){        int n = 0;        do {                menu();//菜单页面                printf("请选择:>");                scanf("%d", &n);                switch (n)                {                case 0:                        printf("退出游戏\n");                        break;                case 1:                        game();                        break;                default:                        printf("输入错误,请重新输入\n");                        break;                }         } while (n);} int main(){        srand ((unsigned int)time(NULL));//时间戳        control();        return 0;}

这部分我用了switch之后比较麻烦,也没有结束游戏的退出程序,写的比较乱。

我将所用的头文件都放在了game.h里,着是鹏老师教的写大程序的方式,使程序结构一目了然。

#define ROW 3#define COL 3 #include#include#include//函数声明void Creatboard(char board[ROW][COL], int row,  int col);void Displayboard(char board[ROW][COL],int row, int col);void PlayerMove(char board[ROW][COL], int row, int col);void ComputerMove(char board[ROW][COL], int row, int col);char Result(char board[ROW][COL], int row, int col);

对函数的定义是主要事项,判断三子棋当前是否输赢或是平局,以及棋盘绘制的规律,都是在看了几遍后才明白,我这个比较粗糙,有能力的可以自行修改一下绘制的图案。

#define _CRT_SECURE_NO_WARNINGS #include"game.h" void Creatboard(char board[ROW][COL], int row,int col){        int i = 0, j = 0;        for (i = 0; i < row; i++)        {                for (j = 0; j < col; j++)                {                        board[i][j] = ' ';                }        }} void Displayboard(char board[ROW][COL], int row, int col)//绘制图案最好用循环,直接用printf按鹏哥的话说比较挫{        int i = 0, j = 0;        for (i = 0; i < row; i++)        {                for (j = 0; j < col; j++)                {                        printf(" %c ", board[i][j]);                        if (j < col - 1)                                printf("|");                }                printf("\n");                if (i < row - 1)                {                        for (j = 0; j < col; j++)                        {                                printf("---");                                if (j < col-1)                                        printf("|");                        }                }                printf("\n");        }} void PlayerMove(char board[ROW][COL], int row, int col)//下棋的位置是用坐标表示的{        int x, y;        printf("玩家请下棋:>\n");again:          scanf("%d %d", &x, &y);        if (board[x - 1][y - 1] == ' ')        {                board[x - 1][y - 1] = '*';        }        else        {                printf("非法位置,请重新输入\n");                goto again;        }}  void ComputerMove(char board[ROW][COL], int row, int col){        printf("电脑下棋中\n");        while (1)        {                int x = rand() % row;//生成0~2之间的随机数                int y = rand() % col;                if (board[x][y] == ' ')                {                        board[x][y] = '#';                        break;                }        }} int Full(char board[ROW][COL], int row, int col)//判定棋盘是否下满{        int i = 0, j = 0;        for (i = 0; i < row; i++)        {                for (j = 0; j < col; j++)                {                        if (board[i][j] == ' ')                                return 0;                }        }        return 1;} char Result(char board[ROW][COL], int row, int col){        int i = 0, j = 0;        for (i = 0; i < row; i++)//判断三行        {                if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')                        return board[0][0];        }        for (j = 0; j 

上述就是小编为大家分享的C语言实现三子棋实例代码怎么写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

j++ 棋盘 程序 三子 代码 平局 输入 实例 语言 内容 函数 图案 电脑 麻烦 分析 移动 粗糙 一目了然 中小 之间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 免费ssl服务器证书 为什么主题老是服务器繁忙 学习通课程为什么连接服务器失败 工业园区营销网络技术哪个好 潍坊华易网络技术开发公司 青岛培训软件开发价格 c4d软件如何选择服务器 网络安全从入门到大师 吃鸡不同服务器会怎么样 行业软件开发报价 网络安全法讲解稿 服务器pcie加装显卡 武汉光阴南北网络技术咨询中心 央企网络安全市场规模 数据库投稿指南之三 妇联怎样加强网络安全 二三级网络技术与应用考试时间 物业软件开发工程师 数据库出错怎么打开安全 河北巷子互联网科技有限公司 广东个性化软件开发定制价格 软件开发和数据中心的关系 e5200服务器怎么组装 工业园区营销网络技术哪个好 辽宁集中套料软件开发商 基于数据库的文件管理 女生有做网络安全培训的吗 网络安全平稳稳固 php数据库如何创建表单 网络安全手抄报模板设计图
0