游戏规则:
三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。游戏是在一个3*3的棋盘里面下棋的。只要有三个一样的连成一条线,就表示有一方胜出;如果下完了9个格子还没有玩家胜出,游戏为平局。

实现思路:
1.初始化棋盘数组
2.绘制棋盘
3.玩家下棋
4.电脑下棋
5.判断输赢

创建头文件game.h

  #ifndef   __GAME__H_#define  __GAME__H_#define ROW 3#include<stdio.h>#include<stdlib.h>void InitBoard(char board[][ROW],int row,int col,char set);//初始化棋盘为字符setvoid ShowBoard(char board[][ROW],int row,int col);//打印棋盘void PlayerMove(char board[][ROW],int row,int col);//玩家下棋char IsWin(char board[][ROW],int row,int col);//判断输赢void ComputerMove(char board[][ROW],int row,int col);//电脑下棋#endif

game.c函数的实现(函数功能)

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
//重置棋盘
void InitBoard(char board[][ROW],int row,int col,char set)
{int i = 0;int j = 0;for(i = 0;i < row;i++){for(j = 0;j < row;j++){board[i][j] = set;}}
}
//打印棋盘
void ShowBoard(char board[][ROW],int row,int col)
{int i = 0;int 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],int row,int col)
{int x =0 ;int y = 0;while(1)//8,9{printf("玩家移动\n");printf("请输入1-3的坐标:\n");scanf("%d%d",&x,&y);//在棋盘范围内则进行判断是否被占用,若被占用则重新输入,若没被占用则置为'x'if(x >= 1 && x <= 3 && y >=1 && y <= 3){if(board[x-1][y-1] == ' '){board[x-1][y-1] = 'x';break;}else{printf("位置已经被占用,请重新输入\n");}}else{printf("坐标不合法\n");}//2、坐标不合法}
}
//判断棋盘是否下满,static修饰,只能在该.c文件中使用
static int IsFull(char board[][ROW],int row,int col)
{int i = 0;int j = 0;for(i = 0;i < row;i++){for(j = 0;j < col;j++){if(board[i][j] == ' '){return 0;//棋盘没有满}}}return 1;//棋盘已满
}
//判断输赢
char IsWin(char board[][ROW],int row,int col)
{int i = 0;for(i = 0;i < row;i++){//行相同if(board[i][0]==board[i][1] && board[i][1]==board[i][2] &&board[i][0] != ' '){return board[i][0];}//列相同if(board[0][i] == board[1][i] && board[1][i] == board[2][i]&&board[0][i] != ' '){return board[0][i];}//主对角线相同if(board[0][0] == board[1][1] && board[1][1] == board[2][2]&& board[0][0] != ' '){return board[0][0];}//副对角线相同if(board[0][2] == board[1][1] && board[1][1] == board[2][0]&& board[0][2] != ' '){return board[0][2];}if(IsFull(board,ROW,ROW)){return 'Q';//平局}}return ' ';//谁也没有赢
}void ComputerMove(char board[][ROW],int row,int col)
{int x = 0;int y = 0;printf("电脑移动\n");while(1){x = rand() % ROW;//[0-3)随机值y = rand() % ROW;//[0-3)随机值if(board[x][y] == ' '){board[x][y] = 'O';//判断该座标是否被占用,没有则置0break;}}
}

test.c主体功能的实现

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"//引入game.c文件,其中已经引入了程序所需要用到的头文件,所以不用再次重复引入,只要引入game.c即可
//打印游戏菜单
void menu()
{printf("********************\n");printf("***欢迎来到三子棋***\n");printf("*******0.exit*******\n");printf("*******1.play*******\n");printf("********************\n");
}
void game()
{char ret = 0;char board[ROW][ROW]= {0};//先将3*3的棋盘初始化为全0InitBoard(board,ROW,ROW,' ');//将棋盘置为空格ShowBoard(board,ROW,ROW);//打印棋盘while(1)//只要有一方胜出,结束循环{PlayerMove(board,ROW,ROW);//玩家先下棋ret = IsWin(board,ROW,ROW);//判断输赢if(ret != ' ')//可能平局,可能一方胜出{break;}ShowBoard(board,ROW,ROW);//展示棋盘ComputerMove(board,ROW,ROW);//电脑出棋ret = IsWin(board,ROW,ROW);//判断输赢if(ret != ' ')//可能平局,可能一方胜出{break;}ShowBoard(board,ROW,ROW);}if(ret == 'x')//判断ret{printf("玩家胜出\n");}if(ret == ' O'){printf("电脑胜出\n");}if(ret == 'Q'){printf("平局\n");}
}
int main()
{int input = 0;//用来存储用户输入的操作,从而确定玩家开始游戏还是退出do{menu();//打印菜单printf("请输入您的选择:-》");scanf("%d",&input);switch(input){case 1:printf("游戏开始\n");game();break;case 0:printf("游戏退出\n");break;default:printf("请输入正确的操作\n");break;}}while(input);return 0;
}

运行结果

C语言简单实现三子棋小游戏相关推荐

  1. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  2. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)

    前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...

  3. c语言小游戏 三子棋,C语言实现简单的三子棋小游戏

    学习完数组就能用C语言写出的简单小游戏: 编译器使用的为VS2013 代码分为三个部分 1.头文件 game.h 2.源文件 game.c 用来存放游戏中所有的函数 3.源文件 test.c 用来存放 ...

  4. C语言 小游戏 电脑大概率获胜,用C语言实现简单的三子棋小游戏

    三子棋问题即在3 * 3的二维数组上下棋,只要有棋子在行.列或对角线连成一线即取得胜利. 可实现玩家与电脑对弈. 说明 : (1)本游戏玩家输入的是棋盘的坐标. (2)"X"代表玩 ...

  5. 如何实现简单的三子棋小游戏(改两个数就可以变为五子棋)

    首先我们创建一个新项目,新项目中添加两个源文件,一个用来放置该游戏所需的所有函数(game.c),另一个放置主函数来测试(test.c),所有的函数可以包含在新创建的头文件里(game.h),这样在主 ...

  6. C语言 进阶版三子棋小游戏

    目录 前言 游戏运行效果: 游戏代码: 1.test.c文件 2.  game.h头文件 3.  game.c 一.框架部分 二.游戏函数实现 1.创建数组并初始化 2.打印数组 3.玩家下棋 4.电 ...

  7. C语言实现简单的三子棋小游戏(童年游戏)

    ⭐️前面的话⭐️

  8. C语言实现三子棋小游戏(编程思路以及代码详解)

    目录 前言 一.三子棋游戏的实现逻辑 二.创建菜单并控制游戏开始或游戏结束 三.创建棋盘并且初始化棋盘 四.打印棋盘并验证打印棋盘和初始化棋盘模块的实现 五.玩家下棋 六.电脑下棋 六.输赢判断 七. ...

  9. 三子棋小游戏带你走进编程世界(c语言版)

    目录 一.游戏实现的整体思路 二.实现游戏大体框架 二.游戏函数的实现 1.初始化键盘 2.打印棋盘 3.下棋及胜负判断 (1)玩家下棋 (2)电脑下棋 (3)判断输赢 三.结语及源码 三子棋想必大家 ...

最新文章

  1. oracle bi publisher 安装,Oracle BI Publisher 企业版安装后的配置(BI Publisher Enterpr
  2. 安卓qpython怎么使用_如何使用QPython开发Android应用?
  3. 有奖问题征集|向大咖Scott 发问,好礼等你领!
  4. eclipse类自动生成注释
  5. mysql8修改密码
  6. Python之数据分析(间接联合排序、所有最值相关函数、有序插入、定积分、插值器对象)
  7. 004-Python内置数据结构-七种数据结构一览
  8. 蓝桥杯真题:外卖优先级
  9. ​DOCX 文档解析及隐藏信息提取算法
  10. 向量数量积公式_向量数量积公式是什么
  11. 天工杂志天工杂志社天工编辑部2022年第25期目录
  12. android room 简书,android Room库使用问题
  13. R语言与数据分析练习:K-Means聚类
  14. 广义相对论和狭义相对论到底是讲什么的?
  15. 学校计算机教室解说词词,小学各专用教室解说词.doc
  16. 如何实现网页分享到微信,微博,空间
  17. 游戏开发43课 移动游戏性能优化1
  18. 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率),或快速估算年利率
  19. 【财富空间】将门CEO高欣欣、顺丰首席科学家刘志欣、图灵机器人联合创始人杨钊、中国人民大学向松祚等——AI应用落地:用产品说话
  20. QuickBooks2020中文版

热门文章

  1. 案例分享:Qt内窥镜相机录像程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)
  2. 辽宁移动梦网短信新增业务申报流程
  3. 1分钟设置快递单号的自动刷新时间
  4. hdu 5078 2014鞍山现场赛 水题
  5. 软件度量 COCOMO工作量估计模型
  6. 有来急救百科(安卓)
  7. CocosCreator小白入坑之切换场景角色
  8. PHP软件工程师的面试题
  9. python爬取豆瓣读书简单_Python用16行代码就搞定了爬取豆瓣读书页面
  10. ECMA 语法知识点