C语言小游戏 |100行代码实现扫雷

article/2025/9/23 1:43:44

本文将介绍如何用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的返回值保证输入的是数字,用switch语句保证输入的范围在1~9内。ch=getchar()用以吃掉因为输入字符产生的回车字符‘\n’。

 6、如果是值为1则说明踩雷,并且将end2置为1,这样退出循环后就可以根据end2的值判断是因为踩雷退出的还是正常退出的。

 7、用于统计周边8个点位的1的个数,并且将数值转换为字符并保存在char型数组中,准备展示给玩家。

 8、清屏后重新打印char型数组。

9、退出循环后根据end2的值判断结果。


http://chatgpt.dhexx.cn/article/aKEjJPEa.shtml

相关文章

草履虫都学会了的超级简单C语言小游戏(附带恶作剧)

游戏源码 2022/04/17 将车/c_practice - 码云 - 开源中国 (gitee.com) 程序思路 程序启动时生成一个随机数&#xff0c;玩家需要在3次内猜对该随机数字&#xff08;随机数范围&#xff0c;次数可以自设&#xff09;。 玩家每次所猜数字会被与随机数比较大小&#xff0c;大了…

C语言小游戏大全,C语言贪吃蛇小游戏(附源码)

一、C语言小游戏大全&#xff0c;C语言贪吃蛇小游戏&#xff08;附源码&#xff09; 贪吃蛇小游戏源码和更多C语言课设项目小游戏源码免 费 下 载 链 接 如下&#xff1a; c语言项目课设小游戏源码资料压缩包.zip-C文档类资源-CSDN下载 1、直接上图片展示 运行结果如下所示…

C语言小游戏——扫雷

文章目录 前言一、效果图&#xff08;展示&#xff09;二、整体结构及功能介绍需要思考的问题 三、功能解析及代码实现四、完整源码展示总结 前言 “扫雷”相信小伙伴们都玩过吧&#xff0c;上机课偷偷玩机房的电脑&#xff0c;只有扫雷&#xff0c;纸牌等小游戏&#xff0c;打…

c语言小游戏-飞机大战

&#xff08;创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 今天我们来尝试用easyx图形库实现c语言小游戏-飞机大战&#xff08;源代码和图片已经在结尾给出&#…

c语言小游戏百度云资源,c语言小游戏合集

这是c语言小游戏合集下载&#xff0c;这是我用c语言写的程序&#xff0c;我在大三上学期的劳动成果展示。我的其他资源都是免费的&#xff0c;是对于c语言初学者的帮助比较大的&#xff0c;其中有数据结构&#xff0c;window编程。我也在学c语言&#xff0c;每当我写完一个程序…

C语言俄罗斯方块

C语言俄罗斯方块 先看效果 代码如下 /************************************** 俄罗斯方块* 1. 游戏开始界面&#xff0c;显示界面* 2. 方块的产生,及判断方块产生的位置是否有方块&#xff0c;有就退出游戏* 3. 方块的移动&#xff0c;旋转&#xff0c;左右移动&#xff0c;…

C语言小游戏快速入门--弹跳小球

目录 一、前言二、弹跳小球的实现2.1、界面设置2.2、弹跳逻辑1、 game.h2、 game.c3、 test.c 三、总结 一、前言 相信很多小伙伴在学习完C语言语法之后就想要做几个小游戏&#xff0c;来练练手。弹跳小球就很适合C语言初学者&#xff0c;甚至你不需要学习到数组的知识就可以上…

【C语言】简单小游戏项目:《别踩白块儿》

序 突然喜欢惊鸿一瞥这个词&#xff0c;一见钟情太肤浅日久生情太苍白&#xff0c;别人眉来眼去&#xff0c;我只偷偷看你一眼。 嗨&#xff01;这里是狐狸~ 新的一周又开始了&#xff0c;时间过得还真快&#xff0c;不知道给大家分享点啥了&#xff0c;想发偏算法之类怕大家…

【C语言小游戏】走迷宫

偶然翻到了自己大一时候写的一些代码&#xff0c;代码冗余&#xff0c;但还是想保存下来&#xff0c;以作纪念。 文章目录 1.运行效果2.运行环境3.完整代码 1.运行效果 2.运行环境 源码(Dev5.4.0版本下可直接(.cpp文件)运行 gcc 4.7.2) 注意&#xff1a;由于部分代码为C11标准&…

C语言小游戏------贪吃蛇----小白专用

C语言贪吃蛇小游戏 视频正在随缘策划中。。。。 废话在后面直接上程序 该程序在VS2019上可完美运行。 #include<stdio.h> #include<stdlib.h> #include<Windows.h> #include<time.h> #include<conio.h> constexpr auto maphigh 28, mapwid…

bootstrap时间控件--时间选择器

对应上面的三个时间选择器&#xff0c;写法如下&#xff1a; 首先引入css和js&#xff1a; <link href"https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel"stylesheet"> <link href"https://cdn.bootcss.com/bootstrap-…

日期时间控件

标题 开发软件使用到日期时间控件的地方很多&#xff0c;但是很多时候Html5自带的时间控件无法满足开发的需要&#xff0c;所以使用这种时间控件完全没有问题 引用 很多时候我们开发引用别人的控件时候&#xff0c;发现老是出现错误&#xff0c;是因为我们引用出现错误&#x…

时间控件(Time Control)

之前在网上看时间控件&#xff0c;看到这个http://hi.baidu.com/fxh19860822/blog/item/dd17d923343556ae4623e8e9.html&#xff0c;感觉颜色蛮好的&#xff0c;后来觉得要是时针、分针、秒针也可以供用户交互就更好了&#xff0c;不管怎样&#xff0c;有了idea就试试吧。 老规…

时间日期选择控件

这篇blog带来一个感觉不错的时间日期选择控件&#xff0c;当然&#xff0c;该控件也可以自定义选项内容。但这里主要说下时间选择的功能&#xff01; github地址 跟着大神的脚步&#xff0c;总有一天会成为神&#xff01; 效果&#xff1a; 关键点&#xff1a; 该控件可以…

jqueryUI日期控件和时间控件

日期控件用法&#xff1a; <!DOCTYPE html> <head><meta charset"utf-8"><title>日期</title><link rel"stylesheet" href"css/jquery-ui.css"><script src"js/jquery-3.3.1.min.js"><…

Timer时间控件

第一步、创建一个Windows窗体&#xff0c; 第二步、创建样式&#xff0c;在工具箱中找到TextBox和Labell、Button、timer。 第三步、改变属性的Name和 Text&#xff08;就是改写名称&#xff09; 第四步、排版按钮 1&#xff1a;使用的控制器是Label&#xff1b;name改为lbl…

web前端时间控件使用

官方参考地址&#xff1a;http://www.layui.com/laydate/ 1.首先把下载的layDate文件夹放入项目目录下 2.在需要使用的页面引入/layDate/laydate.js 3.创建input并使用js初始化input&#xff0c;获取选择时间值时只需获取input的value即可 官方实例&#xff1a; 生成效果&a…

时间日期控件的使用

在Android中&#xff0c;时间日期控件相对来说还是比较丰富的。其中&#xff0c;DatePicker用来实现日期输入设置&#xff0c;TimePicker用来实现时间输入设置。DatePickerDialog用来显示日期对话框&#xff0c;TimePickerDialog用来显示时间对话框。AnalogClock用来显示一个指…

Android中日期和时间控件的使用

本文主要讲述Android中的日期控件和时间控件的使用&#xff0c;以一个Demo的例子来展示日期和时间控件的使用&#xff0c;先看下如下效果图&#xff1a; 从效果图中可以看到该Demo是通过单击【选择日期】按钮和【选择时间】按钮弹出日期或者时间的对话框&#xff0c;然后设置日…

前端时间控件

1.My97 Datepicker js引入&input标签编写 <script type"text/javascript" src"<%request.getContextPath() %>/js/My97DatePicker/WdatePicker.js"></script> <input style"width: 80%" id"showStartDate&quo…