C语言小游戏 |100行代码实现扫雷
本文将介绍如何用100行C语言代码实现扫雷小游戏的基本功能。
游戏画面:
源码:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define N 11
#define M 11main()
{int i=0,j=0,p=0; //i、j、p为循环参数 int x=0,y=0; //x和y为地图坐标参数 int end1=0,end2=0; //end1为地图中不是雷的位置数目,end2为判断是否踩雷的参数int t=0; //用作赋值的中间变量 char ch;static int minemap[N][M];char showmap[N][M]={" 123456789","1*********","2*********","3*********","4*********","5*********","6*********","7*********","8*********","9*********"};for(i=1;i<10;i++){for(j=1;j<10;j++){minemap[i][j]=rand()%90;if(minemap[i][j]/10>0){minemap[i][j]=0;end1++; //用end1的数目表示所绘制minemap中不是雷的位置的个数 }else{minemap[i][j]=1;}}}for(i=0;i<N;i++){for(j=0;j<M;j++){printf("%c ",showmap[i][j]);}printf("\n");} for(p=0;p<end1;p++) //当用户点击地图的次数=end1时代表所有非雷的地点都被点过了,跳出循环,游戏胜利 {reinput:printf("Please input the chosen coordinate x,y:\n");while(scanf("%d%d",&x,&y)!=2){printf("The input are not allowed!\n");ch=getchar();goto reinput;}switch(x>0&&x<10){case 0:{printf("The input are not allowed!\n");goto reinput;}default:break;}switch(y>0&&y<10){case 0:{printf("The input are not allowed!\n");goto reinput;}default:break;}if(minemap[x][y]==1){printf("This is a mine, you died.\n");end2=1;break;}else{t=minemap[x-1][y-1]+minemap[x-1][y]+minemap[x-1][y+1]+minemap[x][y-1]+minemap[x][y+1]+minemap[x+1][y-1]+minemap[x+1][y]+minemap[x+1][y+1];showmap[x][y]=t+48; //48在Ascii码中代表字符0 }system("cls");for(i=0;i<N;i++){for(j=0;j<M;j++){printf("%c ",showmap[i][j]);}printf("\n");} }if(end2==1){printf("game over\n");}else{printf("Winner! You are amazing!\n");}
}
功能实现思路:
1、建立两个数组,一个int型数组保存地雷,另一个char型保存用户看到的地图。
2、生成地雷,用rand()给int型数组赋值,随机数产生范围为0~89, 凡是产生的随机数在0~9内的就是雷。
3、打印用户看到的char型数组。
4、用户点击地图的次数=end1时代表所有非雷的地点都被点过了,跳出循环,游戏胜利。
5、这段代码用scanf的返回值保证输入的是数字,用swich语句保证输入的范围在1~9内。ch=getchar()用以吃掉因为输入字符产生的回车字符‘\n’。
6、如果是值为1则说明踩雷,并且将end2置为1,这样退出循环后就可以根据end2的值判断是因为踩雷退出的还是正常退出的。
7、用于统计周边8个点位的1的个数,并且将数值转换为字符并保存在char型数组中,准备展示给玩家。
8、清屏后重新打印char型数组。
9、退出循环后根据end2的值判断结果。
C语言小游戏 |100行代码实现扫雷相关推荐
- python小游戏-16行代码实现3D撞球小游戏!-源码下载
python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...
- c语言小游戏跳一跳代码及注释,如何获得微信小游戏跳一跳源码以及源代码组合包括哪些...
原标题:如何获得微信小游戏跳一跳源码以及源代码组合包括哪些 很多小游戏都是由源代码编写而成的,那大家知道源代码组合包括哪些吗?手机游戏源代码怎么使用的呢?还有,如何获得微信小游戏跳一跳源码?下面就由奇 ...
- c语言400行小游戏,400行代码编C语言控制台界版2048游戏,编写疯子一样的C语言代码...
今天闲来无聊,带着大家编写黑窗口版本的2048,效果如下: 一.游戏介绍 <2048>是最近比较流行的一款数字游戏.原版2048首先在github上发布,原作者是Gabriele Ciru ...
- C语言小游戏-五子棋
C语言小游戏-五子棋 全部代码如下: #include <easyx.h> #include <graphics.h> #include <conio.h> #in ...
- c语言小游戏代码(c语言小游戏代码简单)
c语言编写小游戏请提供俄罗斯方块,坦克大战之类的小游戏的程序的c 应该是做出方块函数 然后以 这个方块 为单位 绘制 俄罗斯方块的 积木图形 ,在制作游戏界面的时候 也以方块长度为单位长度绘制 二维数 ...
- C语言100行代码实现推箱子
1 C语言100行代码实现推箱子 1.1 概述 C语言是很好入门编程的一个语言,它拥有着很好的移植性,基本上所有的平台都支持C语言编程.有些C语言基础的你,是不是也很想做一个项目来检验一下自己的学习 ...
- Java控制台游戏~600行代码实现打怪小游戏
Java控制台游戏~600行代码实现打怪小游戏(多图预警) 一,先放个启动界面(一些英雄,怪物技能介绍跟装备属性都写在里边): 二,在这个简单的小游戏里,你可以体验到: 1.打怪: 2.随机玩法寻宝: ...
- c语言小游戏代码矿井逃生_如何选择编程语言和逃生教程炼狱
c语言小游戏代码矿井逃生 A few weeks ago, I posted about my experience attempting to learn JavaScript, C#, Pytho ...
- PONG - 100行代码写一个弹球游戏
大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...
- c语言程序设计小球弹跳,c语言小游戏程序之弹跳小球的实现代码
现在说一下其中一个最简单的小程序:弹跳小球 ---------------LINE---------------- 首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示 然后我们如果想在这个坐标 ...
最新文章
- codevs 2075 yh女朋友的危机
- Android Thread第二次Thread.start()报错的疑问
- 浅谈windows句柄表
- 3层vni vxlan_VLAN和VXLAN,两者有何区别?VXLAN运用场景有哪些?
- 一文看懂5G射频的“黑科技”
- C语言丨小 学 数 学(二):高精度乘法
- Python学习笔记(六)—几个标准类型内建函数
- [转载] 中华典故故事(孙刚)——19 万岁
- es6箭头函数_如何优雅地使用 ES6 箭头函数
- 工行u盾显示316_企业用户,插U盾点击U盾登录后,显示“无法显示该网页”
- DarkGDK的杯具体验
- oracle10g的系统视图(sys、system)
- 【插值】插值方法原理详解
- Android+刷固件,(57M2)海信ip906h强刷系统安卓固件包及刷机教材
- Navicat Premium 16 隆重登场
- 如何在HTML中修改网站标题和图标?
- DCF(Discounted Cashflow)模型二(折现率)
- Unity 2021.1.15 ARCore环境配置与样例开发
- leaflet加载百度地图(路网矢量图和卫星影像图)示例代码032
- linux jineu vi,Oxidation of Oil Sands Process-Affected Water by Potassium Ferrate(VI)