C语言二维数组实现扫雷游戏
#include<stdio.h>
//使用二维数组实现 扫雷
int main()
{
char ui[8][8]={
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+',
'+','+','+','+','+','+','+','+'
};
int map[8][8]={
0,0,0,0,0,0,0,0,
0,0,1,0,0,1,0,0,
0,0,0,0,1,0,0,0,
0,0,0,0,0,1,0,0,
0,0,1,0,0,0,0,0,
0,0,1,0,0,0,0,0,
0,1,0,1,1,0,0,0,
1,0,0,0,0,0,0,0
};
int p[8][2]={{-1,-1} ,{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int i=0,j=0;
int h=0,l=0;
int h1=0,l1=0;
int n=0;//用来保存 雷的数量 计数
int win=0;
while(1)
{
printf(" 扫雷游戏\n");
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
printf("%c ",ui[i][j]);
}
printf("\n");
}
printf("请输入你要打开的位置 行 列:");
scanf("%d%d",&h,&l);
if(map[h-1][l-1]==1)
{
printf("踩到雷 游戏结束\n");
break;
}
h=h-1;
l=l-1;
//没有踩到雷的情况 判断周围有几个雷 并把数字显示在 界面上
//-1 -1 -1, 0 -1,+1 0 ,-1 0 ,+1 +1 ,-1 +1,0 +1 ,+1
//n=map[h-1][l-1]+map[h-1][l]+map[h-1][l+1]+map[h][l-1]+map[h][l+1]+map[h+1][l-1]+map[h+1][l+1]+map[h+1][l];
i=0;
while(i<8)
{
n=0;
h1=h;
l1=l;
h1= h1+p[i][0];
l1=l1+p[i][1];
if(h1>=0&&h1<8&&l1>=0&&l1<8)
{
if(map[h1][l1]==1)
{
n++;
}
}
i++;
}
//把得到的数字显示到 界面上 ui[h][l];
//把int数字转换成 字符
switch(n)
{
case 0:
ui[h][l]='0';
break;
case 1:
ui[h][l]='1';
break;
case 2:
ui[h][l]='2';
break;
case 3:
ui[h][l]='3';
break;
case 4:
ui[h][l]='4';
break;
case 5:
ui[h][l]='5';
break;
case 6:
ui[h][l]='6';
break;
case 7:
ui[h][l]='7';
break;
case 8:
ui[h][l]='8';
break;
}
win++;
if(win==54)
{
printf("获胜 游戏结束\n");
break;
}
}
return 0;
}
C语言二维数组实现扫雷游戏的更多相关文章
- c语言二维数组传递
c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法 /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维 ...
- 关于c语言二维数组与指针的个人理解及处理办法。
相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...
- C语言 二维数组复制、清零及打印显示
#include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 ],int row, ...
- C语言二维数组作业
一.PTA实验作业 题目1:7-3 出生年 1. 本题PTA提交列表 2. 设计思路 1.声明一个函数different()用来计算一个年份的不同数字个数 2.定义y(y是来计算符合要求的年份的量), ...
- C语言 二维数组(指针)动态分配和释放(转)
C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...
- C语言二维数组
上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...
- C语言二维数组作为函数参数
设有整型二维数组a[3][4]如下:0 1 2 34 5 6 78 9 10 11 它的定义为: int a[3][4]={{0,1,2,3},{4,5,6,7} ...
- C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...
- c语言二维数组与指针
问题,以下输出的结果是什么,区别在于哪? void main() { ][] = { ,,,,,,,,,,, }; //输出的3个地址都一样,差别在哪? printf("\n%x" ...
随机推荐
- P2P系统,一致性哈希和DHT
数据网格产品经常会使用P2P进行通信,借此机会系统地学习一下P2P网络和其资源搜索策略. 1 P2P网络架构 谈到P2P就涉及到一个概念:Overlay Network(覆盖网络).所谓覆盖网络是应用 ...
- Zookeeper总概
zookeeper是一个开源的分布式协调服务.是典型的分布式数据一致性的解决方案. zookeeper可以保证以下分布式一致性的特性 1. 顺序性:同一客户端发起的事务请求,最终会严格的按照发出顺序应 ...
- 01_数据库连接池,数据源,ResultSetMetaData,jdbc优化
一.数据库连接池 1. 什么是连接池 传统的开发模式下,Servlet处理用户的请求,找Dao查询数据,dao会创建与数据库之间的连接,完成数据查询后会关闭数据库的链接. 这样的方式会导致用户每 ...
- React Native开发工具Nuclide使用
之前写RN的时候首选webstorm,这是之前做前端已经习惯的工具,其实RN开发官网推荐的是Nuclide工具, Nuclide是Fackbook专门为React开发IDE,今天也来尝试下,如果对we ...
- Python 自动刷博客浏览量
哈哈,今天的话题有点那什么了哈.咱们应该秉承学习技术的角度来看,那么就开始今天的话题吧. 思路来源 今天很偶然的一个机会,听到别人在谈论现在的"刷量"行为,于是就激发了我的好奇心. ...
- Xcode中不用Storyboard,用纯xib创建TabBar模式视图
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 如果要开发Tab类型视图的App,在Xcode中可以使用对应的 ...
- UITableView如何撤销移动操作
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道使用UITableView的委托方法canMoveRo ...
- 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
===================================================== Flash流媒体文章列表: 最简单的基于Flash的流媒体示例:RTMP推送和接收(Acti ...
- 修改android应用包名
由于项目需要,要修改已经开发好的应用包名,这本身很简单,但是如果你没找到门道,可能会白白浪费许多时间. 修改包名有三个地方要改,这三个地方的修改一定要按顺序来,否则你可能会遇到许多不必要的麻烦. 1. ...
- UNIX网络编程——使用select函数的TCP和UDP回射服务器程序
服务器程序: #include <sys/wait.h> #include <string.h> #include <string.h> #include < ...