实现3*3棋盘游戏主要流程:

一、定义一些所需要的函数

1.定义初始化棋盘函数:void init(char arr[3][3],int i,int j );

2.定义打印棋盘函数:int prit(char arr[3][3], int i, int j);

3.定义玩家下棋函数:void play(char arr[3][3], int x, int y);

4.定义电脑下棋函数:void computer(char arr[3][3]);

5.定义判断三个同样字符是否连成一线的函数:int check(char arr[3][3], int i, int j);

二、主函数

打印游戏说明

选择是否开始游戏,选择‘1’则开始游戏,选择其他则退出游戏。

选择下棋次序,选择‘1’玩家先下棋,选择‘2’电脑先下棋。

若玩家开始下棋,输入下棋坐标位置。并且判断是否有三个同样字符连成一线;若没有则你电脑继续下棋并判断。若电脑先下棋,判断是否有三个同样字符连成一线,若没有则输入下棋坐标位置继续下棋。知道判断出三字符连成一线,则判断出输赢。当所有的地方都有字符时,此时若还没有判断出输赢那么这局是平局。

下棋是应该判断玩家输入的坐标是否是合法下标,若不是合法下标那么应该提示并且重新输入坐标。

三、代码如下:

#include

#include

void init(char arr[3][3],int i,int j )

{

for (i = 0; i < 3; i++)

{

for (j = 0; j < 3; j++)

{

arr[i][j] = ' ';

}

}

}

int prit(char arr[3][3], int i, int j)

{

for (i = 0; i < 3; i++)

{

printf(" %c | %c | %c ", arr[i][0],arr[i][1],arr[i][2]);

if (i != 2)

printf("\n---|---|---\n");

}

return 0;

}

void computer(char arr[3][3])

{

int i = 0;

int j = 0;

int flag = 0;

for (i = 0; i < 3; i++)

{

if (flag == 1)

break;

for (j = 0; j < 3; j++)

{

if ((arr[i][j] == ' '))

{

arr[i][j] = 'O';

flag = 1;

break;

}

}

}

for (i = 0; i < 3; i++)

{

printf(" %c | %c | %c ", arr[i][0], arr[i][1], arr[i][2]);

if (i != 2)

printf("\n---|---|---\n");

}

}

void play(char arr[3][3], int x, int y)

{

int i=0;

int j = 0;

int flag = 0;

arr[x - 1][y - 1] = 'X';

for (i = 0; i < 3; i++)

{

if (flag == 1)

break;

for (j = 0; j < 3; j++)

{

if ((arr[i][j] == ' '))

{

arr[i][j] = 'O';

flag = 1;

break;

}

}

}

for (i = 0; i < 3; i++)

{

printf(" %c | %c | %c ", arr[i][0], arr[i][1], arr[i][2]);

if (i != 2)

printf("\n---|---|---\n");

}

}

int check(char arr[3][3], int i, int j)

{

int ret = -1;

int k = 0;//判断对角线X

int n = 0;//判断对角线O

int a = 0;//判断反对角线X

int b = 0;//判断反对角线O

int count = 0;

for (i = 0; i < 3; i++)

{

if (arr[i][i] == 'X')

k++;

if (arr[i][2-i] == 'X')

a++;

if (arr[i][i] == 'O')

n++;

if (arr[i][2-i] == 'O')

b++;

}

for (i = 0; i < 3; i++)

{

for (j = 0; j < 3; j++)

{

if (arr[i][j] != ' ')

count++;

}

}

if ((k == 3)||(a == 3))

{

ret=1;

}

if ((n == 3)||(b == 3))

{

ret=0;

}

if (count == 9)

ret = 3;

for (i = 0; i < 3; i++)

{

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

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

{

ret=1;

break;

}

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

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

{

ret=0;

break;

}

}

return ret;

}

void manu()

{

printf("****************************************\n");

printf("**************欢迎进入游戏**************\n");

printf("*************1.开始游戏*****************\n");

printf("*************0.退出游戏*****************\n");

printf("****************************************\n");

}

void order()

{

printf("**********请选择下棋先后次序************\n");

printf("*************1.玩家先下*****************\n");

printf("*************0.本机先下*****************\n");

}

int main()

{

char arr[3][3];

int i = 0;

int j = 0;

int x = 0;

int y = 0;

int input = 1;

int ret = 0;

int c = 0;

while (1)

{

manu();

printf("请选择>");

scanf("%d", &input);

switch (input)

{

case 1:

{

while (1)

{

order();

printf("请选择>");

scanf("%d", &c);

switch (c)

{

case 1:

{init(&arr[0], i, j);

prit(&arr[0], i, j);

while (1)

{

lop:        printf("\n请输入要下棋的位置坐标:");

scanf("%d%d", &x, &y);

while (1)

{

if ((arr[x - 1][y - 1] != ' ') || (x > 3) || y > 3)

{

printf("坐标不合法,请重新输入:");

scanf("%d%d", &x, &y);

}

else

{

play(&arr[0], x, y);

break;

}

}

ret = check(&arr[0], i, j);

if (ret == 1)

{

printf("\n恭喜你赢了!\n");

break;

}

if (ret == 0)

{

printf("\n很遗憾你输了!\n");

break;

}

if (ret == 3)

{

printf("\n这局是平局\n");

break;

}

}

break;

}

case 0:

{

init(&arr[0], i, j);

prit(&arr[0], i, j);

printf("\n本机下棋为:\n");

computer(&arr[0]);

goto  lop;

break;

}

}

break;

}

break;

}

default:

{      printf("退出游戏\n");

system("pause");

exit(0);

break;

}

}

}

system("pause");

return 0;

}

游戏可能有不完善的地方,后续发现问题会及时修改。

3*3 c语言,C语言实现小游戏(三) 3*3棋盘游戏相关推荐

  1. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  2. c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc

    (c语言课程设计报告小游戏"石头剪子布" <C语言课程设计>报告 题目:石头剪子布 班级: 学号: 姓名: 指导教师: 成绩: 目 录: 一.选题背景- 3 - 二.设 ...

  3. R语言入门——猜数小游戏

    R语言入门--猜数小游戏 题目介绍 使用代码(2种方法) 运行结果 题目介绍 设计一个猜数字的游戏:计算机随机生成一个1~100 之间的整数,然后由用户猜测所产生的随机数.根据用户猜测的情况给出不同提 ...

  4. C语言开发打气球小游戏

    C语言开发打气球小游戏 首先我们写一下项目所需要的头文件 #include<stdio.h>//标准输入输出头文件 #include<math.h>//数学库头文件 #incl ...

  5. 基于C语言的信息管理系统和小游戏

    基于C语言的信息管理系统和小游戏 一.课设题 本次课程设计有以两类题可以选择: 信息管理系统: 即实现个基于控制台的信息管理系统,例如选课系统.图书馆系统.公司财务系统等等 ,除满增删查改等基本功能, ...

  6. c语言做搬山游戏,C语言实现搬山小游戏,适合新手的项目实战,超易上手!

    原标题:C语言实现搬山小游戏,适合新手的项目实战,超易上手! 问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬山数不能超过k座,谁搬最后一座谁输. 游戏开始时,计算机请人输入山的总 ...

  7. 用C语言做一个迷宫小游戏

    用C语言做一个迷宫小游戏,以下是代码段 这个迷宫游戏使用了递归回溯算法来寻找通往出口的路径.迷宫中的墙用'#'表示,路径用空格表示,入口和出口分别用'S'和'E'表示,已走过的路径用'*'表示.在生成 ...

  8. 使用C语言编写三子棋小游戏

    使用C语言编写三子棋小游戏: 首先进行分析: 1.需要将游戏实现分为三个部分:头文件,函数功能实现,游戏组合测试. 2.游戏可以循环进行,不必多次打开,可采用 do...while循环结构. 3.游戏 ...

  9. C语言可以敲哪些小游戏,C语言可以写哪些小游戏?

    C语言可以写哪些小游戏? C语言可以编手机游戏.你叫他去死不过我这有贪吃蛇的代码,你倒可以看看(用TC编译一定过( #包括 #包括 #包括 #包括 #包括 #定义输入7181 #定义ESC 283 # ...

  10. c语言实现2048程序设计小游戏

    利用c语言实现的2048小游戏. 可以用来当做结课项目,毕业设计,代码注释写的很详细,保证各位可以看懂. 程序的主要使用的相关数据类型:2维数组,枚举,指针 程序运行界面如下图: 开始时随机生成 结束 ...

最新文章

  1. 约瑟夫环(约瑟夫问题)求最后出列的人数
  2. php程序员必会的,PHP程序员必会的MySQL面试题
  3. 基于Zabbix IPMI监控服务器硬件状况
  4. C#LeetCode刷题-二分查找​​​​​​​
  5. 史上最大漏洞危机再生新变种,大量芯片受感染
  6. centos8共享文件夹挂载_linux挂载群辉的NFS共享文件夹
  7. CString、string、char*的综合比较
  8. python获取本地时间并向服务器发送udp报文_python3通过udp实现组播数据的发送和接收操作...
  9. 【工程处理技巧一篇】基于半规则数据的命名实体消歧识别【未完】
  10. 操作系统银行家算法(课程设计报告)JAVA实现
  11. Tapestry 5简介
  12. springboot拦截器无法获取token值的问题
  13. 笔记本电脑键盘个别键失灵的修复方法
  14. GCSE英语语言考试-语言和结构
  15. eplan实战设计pdf百度云_EPLAN实战设计
  16. UIPATH 登录凭据
  17. Linux机器rpm安装vsftpd
  18. 什么是BCD码?BCD码编码规则
  19. Spring面试题(一)
  20. 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第一章(部分答案)

热门文章

  1. 自己动手,丰衣足食:从零开始写个 IDEA 插件,要啥功能就做啥!
  2. 传统网站性能优化的三种手段
  3. 杂谈:微服务的体系结构评审的三个问题
  4. Redis 热点 Key 如何发现?又该如何解决?
  5. 检测到磁盘可能为uefi引导_重装系统win10提示磁盘布局不受UEFI固件支持怎么办...
  6. 小米5x_小米刷机大全(附教程)
  7. 微信小程序电子画板canvas2d签名小程序插件绝对可用
  8. 命令行选项“/source-charset”与预编译头不一致
  9. pip 系统无法将文件移到不同的磁盘驱动器 的问题
  10. device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/dev