本文将介绍如何用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行代码实现扫雷相关推荐

  1. python小游戏-16行代码实现3D撞球小游戏!-源码下载

    python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...

  2. c语言小游戏跳一跳代码及注释,如何获得微信小游戏跳一跳源码以及源代码组合包括哪些...

    原标题:如何获得微信小游戏跳一跳源码以及源代码组合包括哪些 很多小游戏都是由源代码编写而成的,那大家知道源代码组合包括哪些吗?手机游戏源代码怎么使用的呢?还有,如何获得微信小游戏跳一跳源码?下面就由奇 ...

  3. c语言400行小游戏,400行代码编C语言控制台界版2048游戏,编写疯子一样的C语言代码...

    今天闲来无聊,带着大家编写黑窗口版本的2048,效果如下: 一.游戏介绍 <2048>是最近比较流行的一款数字游戏.原版2048首先在github上发布,原作者是Gabriele Ciru ...

  4. C语言小游戏-五子棋

    C语言小游戏-五子棋 全部代码如下: #include <easyx.h> #include <graphics.h> #include <conio.h> #in ...

  5. c语言小游戏代码(c语言小游戏代码简单)

    c语言编写小游戏请提供俄罗斯方块,坦克大战之类的小游戏的程序的c 应该是做出方块函数 然后以 这个方块 为单位 绘制 俄罗斯方块的 积木图形 ,在制作游戏界面的时候 也以方块长度为单位长度绘制 二维数 ...

  6. C语言100行代码实现推箱子

    1 C语言100行代码实现推箱子 1.1 概述  C语言是很好入门编程的一个语言,它拥有着很好的移植性,基本上所有的平台都支持C语言编程.有些C语言基础的你,是不是也很想做一个项目来检验一下自己的学习 ...

  7. Java控制台游戏~600行代码实现打怪小游戏

    Java控制台游戏~600行代码实现打怪小游戏(多图预警) 一,先放个启动界面(一些英雄,怪物技能介绍跟装备属性都写在里边): 二,在这个简单的小游戏里,你可以体验到: 1.打怪: 2.随机玩法寻宝: ...

  8. c语言小游戏代码矿井逃生_如何选择编程语言和逃生教程炼狱

    c语言小游戏代码矿井逃生 A few weeks ago, I posted about my experience attempting to learn JavaScript, C#, Pytho ...

  9. PONG - 100行代码写一个弹球游戏

    大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...

  10. c语言程序设计小球弹跳,c语言小游戏程序之弹跳小球的实现代码

    现在说一下其中一个最简单的小程序:弹跳小球 ---------------LINE---------------- 首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示 然后我们如果想在这个坐标 ...

最新文章

  1. codevs 2075 yh女朋友的危机
  2. Android Thread第二次Thread.start()报错的疑问
  3. 浅谈windows句柄表
  4. 3层vni vxlan_VLAN和VXLAN,两者有何区别?VXLAN运用场景有哪些?
  5. 一文看懂5G射频的“黑科技”
  6. C语言丨小 学 数 学(二):高精度乘法
  7. Python学习笔记(六)—几个标准类型内建函数
  8. [转载] 中华典故故事(孙刚)——19 万岁
  9. es6箭头函数_如何优雅地使用 ES6 箭头函数
  10. 工行u盾显示316_企业用户,插U盾点击U盾登录后,显示“无法显示该网页”
  11. DarkGDK的杯具体验
  12. oracle10g的系统视图(sys、system)
  13. 【插值】插值方法原理详解
  14. Android+刷固件,(57M2)海信ip906h强刷系统安卓固件包及刷机教材
  15. Navicat Premium 16 隆重登场
  16. 如何在HTML中修改网站标题和图标?
  17. DCF(Discounted Cashflow)模型二(折现率)
  18. Unity 2021.1.15 ARCore环境配置与样例开发
  19. leaflet加载百度地图(路网矢量图和卫星影像图)示例代码032
  20. linux jineu vi,Oxidation of Oil Sands Process-Affected Water by Potassium Ferrate(VI)

热门文章

  1. redis tutorial
  2. Jmeter正则表达式提取多个值示例
  3. 四种常见排序算法----php代码实现
  4. centos7 yum install redis
  5. 总结工作中常用到的linux命令大全_经典
  6. Linux学习之路(2-1)文件、目录与磁盘格式
  7. java两矩阵相加(二维矩阵重要细节解析)
  8. mysql源码包和二进制包_Linux下MySQL安装(二进制包和源码包)
  9. bpftrace - tcpstates.bt
  10. netconsole 重定向kernel日志到远程服务器