三子棋问题即在3 * 3的二维数组上下棋,只要有棋子在行、列或对角线连成一线即取得胜利。

可实现玩家与电脑对弈。

说明 :

(1)本游戏玩家输入的是棋盘的坐标。

(2)“X”代表玩家,“0”代表电脑。

(3)电脑下棋采用的是随机数给出,大大增加了游戏的随机性。

#include

#include

#include

char arr[3][3] = { 0 };  //直接定义外部变量所有的函数可以直接使用

int size = 9;             //棋盘大小固定  每下一个子都会使可以下子的容量-1

void chessboard()       //打印棋盘

{

int i = 0,j = 0;

printf("   |   |   \n");

for (i = 0; i

{

printf("_%c_|_%c_|_%c_\n", arr[i][0], arr[i][1], arr[i][2]);//棋盘对应位置下棋

if (i

printf("   |   |   \n");

}

}

void player()          //玩家下棋

{

int m = 0, n = 0;

printf("player(X):"); //输入的是对应的坐标

scanf("%d%d", &m,&n); //玩家输入的坐标必须在范围内并且不能是被下过的地方

if (m<1 || m>3 || n<1 || n>3 || arr[m - 1][n - 1] != ' ')

{

printf("this place can not play!\n"); //如果不符合要求则继续调用这个函数

player();

}

else

{

arr[m - 1][n - 1] = 'X';   //将棋子放入相应的内容 棋盘容量-1

size--;

}

}

void computer()          //电脑下棋

{

printf("computer(0):\n");

int m = 0, n = 0;

srand(time(NULL));  //电脑的坐标是随机产生的   以时间为种子

m = rand() % 3;     //对3取余产生0-2的随机数赋给数组下标

n = rand() % 3;

while (arr[m][n] != ' ') //如果产生的坐标不符合要求则循环产生      (效率比较低)

{

m = rand() % 3;

n = rand() % 3;

}

arr[m][n] = '0';        //操作后容量-1

size--;

}

int winner()    //判断获胜者

{

if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == 'X') ||

(arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == 'X') ||

(arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == 'X') ||

(arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == 'X') ||

(arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == 'X') ||

(arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == 'X') ||

(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == 'X') ||

(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == 'X'))

return 1;      //玩家获胜

else  if((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == '0') ||

(arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == '0') ||

(arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == '0') ||

(arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == '0') ||

(arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == '0') ||

(arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == '0') ||

(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == '0') ||

(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == '0'))

return 0;     //电脑获胜

else if (size == 0)

return -1;   //平局

}

int main()

{

int i = 0, j = 0;    //将数组初始化为空格

for (i = 0; i

{

for (j = 0; j

{

arr[i][j] = ' ';

}

}

while (1)        //循环对弈直到一方获胜或者平局

{

chessboard();          //循环每次开始都打印棋盘

if (winner() == -1 || winner() == 0 || winner() == 1)

{

break;

}

player();

computer();

}

if (winner() == 1)

{

printf("player win!\n");

}

else if (winner() == 0)

{

printf("computer win!\n");

}

else

{

printf("no one win!\n");

}

system("pause");

return 0;

}

本游戏还有好多不足的地方,希望大家多提意见,我也会继续改进的,希望会提高它的效率。

C语言 小游戏 电脑大概率获胜,用C语言实现简单的三子棋小游戏相关推荐

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

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

  2. C语言简单实现三子棋小游戏

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

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

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

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

    ⭐️前面的话⭐️

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

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

  6. 呆头呆脑的电脑----三子棋小游戏(C语言版)

    目录 1.需求分析 2.程序架构 3.代码实现(分函数呈现) (1)主函数代码实现 分析: 异常处理: (2)菜单函数的实现 分析: (3)游戏函数的实现 分析: (4)棋盘的初始化 分析: (5)棋 ...

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

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

  8. C语言小项目--三子棋小游戏

    学了这么长时间的C语言,你是否觉得没有一个没写过稍微长点的代码显得很没有成就感!不怕,今天带你做一个小游戏,领略一下写C和小游戏的快乐.写完记得给自己一个鼓励哦! 一.三子棋小游戏 想必大家都玩过三子 ...

  9. 【C语言】简单实现三子棋(井字棋)小游戏

    背景 C语言学习过程中会有很多有趣的实践小程序需要大家编写,这里带给大家一个常见的三子棋小游戏的代码.如果有不足之处,还望指出,感谢浏览. 框架 这里给刚开始学习或接触C语言的小伙伴分享一点我个人的经 ...

最新文章

  1. 我这样写代码,比直接使用 MyBatis 效率提高了100倍!
  2. a+b 第一个JAVA
  3. java windows系统监控_Windows资源监控工具大全
  4. 报错apachectl -t
  5. React的生命周期
  6. linux unshare 命令,详解Linux Namespace之User
  7. linux无缝升级的版本,最近一周发布新版本的Linux发行版 - 2020-01-03
  8. ubuntu 上NVIDIA驱动和CUDA9.0 的坑之一二
  9. JavaScriptCore全面解析
  10. 51 nod 1405 树的距离之和
  11. weblogic部署模式
  12. Google地图开发API
  13. 软件企业税收优惠政策
  14. vb/vb.net开发精粹(19)
  15. HDU-1014 线性同余法
  16. 浅谈5G通信面临的电磁兼容挑战及解决方法
  17. python 颜色与字体
  18. word模板文件损坏批处理
  19. 数据库作业17:第六章总结
  20. Jetson nano开机自启动程序

热门文章

  1. 【数据分析】脑图讲述数据分析方法论
  2. Java : 实体类不能序列化异常
  3. 线程的异常捕获与线程池的异常捕获
  4. Android App自动更新解决方案(DownloadManager)
  5. 一键去除域名非80端口,去掉域名后面带的端口号快速解决方案
  6. 在windows下安装node-sass失败,提示\node-sass: Command failed,解决方案
  7. 检查div是否存在jquery [重复]
  8. 使用类名称创建实例并调用构造函数
  9. 如何打开电脑上的安全策略
  10. win10电脑ip地址怎么设置?几步就能学会