3*3 c语言,C语言实现小游戏(三) 3*3棋盘游戏
实现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棋盘游戏相关推荐
- c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc
(c语言课程设计报告小游戏"石头剪子布" <C语言课程设计>报告 题目:石头剪子布 班级: 学号: 姓名: 指导教师: 成绩: 目 录: 一.选题背景- 3 - 二.设 ...
- R语言入门——猜数小游戏
R语言入门--猜数小游戏 题目介绍 使用代码(2种方法) 运行结果 题目介绍 设计一个猜数字的游戏:计算机随机生成一个1~100 之间的整数,然后由用户猜测所产生的随机数.根据用户猜测的情况给出不同提 ...
- C语言开发打气球小游戏
C语言开发打气球小游戏 首先我们写一下项目所需要的头文件 #include<stdio.h>//标准输入输出头文件 #include<math.h>//数学库头文件 #incl ...
- 基于C语言的信息管理系统和小游戏
基于C语言的信息管理系统和小游戏 一.课设题 本次课程设计有以两类题可以选择: 信息管理系统: 即实现个基于控制台的信息管理系统,例如选课系统.图书馆系统.公司财务系统等等 ,除满增删查改等基本功能, ...
- c语言做搬山游戏,C语言实现搬山小游戏,适合新手的项目实战,超易上手!
原标题:C语言实现搬山小游戏,适合新手的项目实战,超易上手! 问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬山数不能超过k座,谁搬最后一座谁输. 游戏开始时,计算机请人输入山的总 ...
- 用C语言做一个迷宫小游戏
用C语言做一个迷宫小游戏,以下是代码段 这个迷宫游戏使用了递归回溯算法来寻找通往出口的路径.迷宫中的墙用'#'表示,路径用空格表示,入口和出口分别用'S'和'E'表示,已走过的路径用'*'表示.在生成 ...
- 使用C语言编写三子棋小游戏
使用C语言编写三子棋小游戏: 首先进行分析: 1.需要将游戏实现分为三个部分:头文件,函数功能实现,游戏组合测试. 2.游戏可以循环进行,不必多次打开,可采用 do...while循环结构. 3.游戏 ...
- C语言可以敲哪些小游戏,C语言可以写哪些小游戏?
C语言可以写哪些小游戏? C语言可以编手机游戏.你叫他去死不过我这有贪吃蛇的代码,你倒可以看看(用TC编译一定过( #包括 #包括 #包括 #包括 #包括 #定义输入7181 #定义ESC 283 # ...
- c语言实现2048程序设计小游戏
利用c语言实现的2048小游戏. 可以用来当做结课项目,毕业设计,代码注释写的很详细,保证各位可以看懂. 程序的主要使用的相关数据类型:2维数组,枚举,指针 程序运行界面如下图: 开始时随机生成 结束 ...
最新文章
- 约瑟夫环(约瑟夫问题)求最后出列的人数
- php程序员必会的,PHP程序员必会的MySQL面试题
- 基于Zabbix IPMI监控服务器硬件状况
- C#LeetCode刷题-二分查找​​​​​​​
- 史上最大漏洞危机再生新变种,大量芯片受感染
- centos8共享文件夹挂载_linux挂载群辉的NFS共享文件夹
- CString、string、char*的综合比较
- python获取本地时间并向服务器发送udp报文_python3通过udp实现组播数据的发送和接收操作...
- 【工程处理技巧一篇】基于半规则数据的命名实体消歧识别【未完】
- 操作系统银行家算法(课程设计报告)JAVA实现
- Tapestry 5简介
- springboot拦截器无法获取token值的问题
- 笔记本电脑键盘个别键失灵的修复方法
- GCSE英语语言考试-语言和结构
- eplan实战设计pdf百度云_EPLAN实战设计
- UIPATH 登录凭据
- Linux机器rpm安装vsftpd
- 什么是BCD码?BCD码编码规则
- Spring面试题(一)
- 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第一章(部分答案)
热门文章
- 自己动手,丰衣足食:从零开始写个 IDEA 插件,要啥功能就做啥!
- 传统网站性能优化的三种手段
- 杂谈:微服务的体系结构评审的三个问题
- Redis 热点 Key 如何发现?又该如何解决?
- 检测到磁盘可能为uefi引导_重装系统win10提示磁盘布局不受UEFI固件支持怎么办...
- 小米5x_小米刷机大全(附教程)
- 微信小程序电子画板canvas2d签名小程序插件绝对可用
- 命令行选项“/source-charset”与预编译头不一致
- pip 系统无法将文件移到不同的磁盘驱动器 的问题
- device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/dev