扫雷小程序(非界面)

Java实现简单的扫雷小程序 前两天看了个扫雷的视频,于是自己跟着做了下,感觉还不是很难初学Java的同学可以尝试自己操作下Java小程序这样子才能提高自己的理解能力和编程水平不用多说了,直接上代码吧!具体代码操作如下:import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.GridLayou... 阅读详情



import java.util.Random;

import java.util.Scanner;


public class MineSweeperMoFang {
public static int gameDlCount=10; //地雷数量
public static int n=9; //地图大小
public static char [][]DlMaps; //地雷地图
public static char [][]GameMaps; //游戏地图
public static final char DlBiaoShi='×'; //地雷标识
public static final char ZgBiaoShi='■'; //遮盖标识
public static final char BjBiaoShi='!'; //标记标识
public static Scanner input = new Scanner(System.in);//定义键盘扫描类
public static Random random = new Random();//定义随机类

//初始化地图
public static void into(){
DlMaps=new char[n][n];
GameMaps=new char[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
DlMaps[i][j]=' ';
GameMaps[i][j]=ZgBiaoShi;
}
}

//布雷
int count =0;
for(;count<gameDlCount;){
int i=random.nextInt(n);
int j=random.nextInt(n);
if(DlMaps[i][j]==' '){
DlMaps[i][j]=DlBiaoShi;
count++;
}
}
}
//显示
public static void show(char [][]map){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(map[i][j]+" ");
}
System.out.println();
}
}
//生成雷边的数字
public static void LbShuZi(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(DlMaps[i][j]==' '){
//周围坐标
int x0=i-1;
int x1=i+1;
int y0=j-1;
int y1=j+1;

//越界
if(x0<0)x0=0;
if(x1>=n)x1=n-1;
if(y0<0)y0=0;
if(y1>=n)y1=n-1;

//统计雷数
int count=0;
for(int x=x0;x<=x1;x++){

for(int y=y0;y<=y1;y++){
if(DlMaps[x][y]==DlBiaoShi){
count++;
}
}
}
if(count!=0){
DlMaps[i][j]=(char)('0'+count);//将整数数字变为字符数字
}
}

}
}
}
//判断是否为整数
public static int inputInt(String title){
do{
System.out.print(title);

String n=input.next();
try{
int x=Integer.parseInt(n);
return x;
}catch(Exception e){
System.out.println("输入错误!");
}
}while(true);

}
//输入行
public static int inputRow(){
int row=-1;
while(true){
row=inputInt("请输入行(1-"+n+"): ");
if(row>=1&&row<=9){
break;
}else{
System.out.println("输入错误!");
}
}
return row;
}
//输入列
public static int inputCol(){
int col=-1;
while(true){
col=inputInt("请输入列(1-"+n+"): ");
if(col>=1&&col<=9){
break;
}else{
System.out.println("输入错误!");
}
}
return col;
}
//输入标记
public static String inputBiaoJi(){
String BiaoJi1=" ";
while(true){
System.out.println("请输入扫雷(M)标记(T):");
Scanner input1 =new Scanner(System.in);
BiaoJi1=input1.nextLine();
if(BiaoJi1.equalsIgnoreCase("M")||(BiaoJi1.equalsIgnoreCase("T"))){
break;
}else{
System.out.println("输入错误!");

}
}
return BiaoJi1;
}
//扫描雷
public static void SaoMiao(int row,int col ){
int r=row-1;
int c=col-1;
if(r<0||r>=n) return;
if(c<0||c>=n) return;
if(GameMaps[r][c]==ZgBiaoShi){
GameMaps[r][c]=DlMaps[r][c];
if(DlMaps[r][c]==' '){//打开空格
/* int i0=r-1; //范围
int i1=r+1;
int j0=c-1;
int j1=c+1;
if(i0<0)i0=0; //越界
if(i1>=n)i1=n-1;
if(j0<0)j0=0;
if(j1>=n)j1=n-1;
for(int i=i0;i<=i1;i++){
for(int j=j0;j<=j1;j++){
if(!(i==r&&j==c)){
if(GameMaps[i][j]==ZgBiaoShi&&DlMaps[i][j]==DlBiaoShi){
SaoMiao(i+1,j+1);
}
}
}
}
*/

//扫正上
SaoMiao(r-1+1,c+1);
//上左
SaoMiao(r-1+1,c-1+1);
//上右
SaoMiao(r-1+1,c+1+1);
//左
SaoMiao(r+1,c-1+1);
//右
SaoMiao(r+1,c+1+1);
//下左
SaoMiao(r+1+1,c-1+1);
//下
SaoMiao(r+1+1,c+1);
//下右
SaoMiao(r+1+1,c+1+1);

}
}

}

//标记雷
public static void BiaoJi(int row,int col ){
int r=row-1;
int c=col-1;
if(GameMaps[r][c]==ZgBiaoShi){
GameMaps[r][c]=BjBiaoShi;
}else if(GameMaps[r][c]==BjBiaoShi){
GameMaps[r][c]=ZgBiaoShi;
}

}
//操作标记和扫描
public static void CzBjSm(int row,int col,String s){
if(s.equalsIgnoreCase("M")){
SaoMiao(row,col);
}else if(s.equalsIgnoreCase("T")){
BiaoJi(row,col);
}

}
//游戏结束条件
public static boolean isOver(){
boolean r=false;
int zgcnt=0;//遮盖的个数
int bjcnt=0;//标记的个数
int lcnt=0;//雷的个数
int zqcnt=0;//正确标记的个数
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(GameMaps[i][j]==ZgBiaoShi){
zgcnt++;
}
if(GameMaps[i][j]==DlBiaoShi){
lcnt++;
}
if(GameMaps[i][j]==BjBiaoShi){
bjcnt++;
if(GameMaps[i][j]==DlBiaoShi){
zqcnt++;
}
}
}
}
if((zgcnt>0&&bjcnt>0&&lcnt>0)||
(lcnt==gameDlCount&&zgcnt==0&bjcnt==0)||
(zgcnt+bjcnt==gameDlCount&&lcnt==0)||
(zqcnt==lcnt&&zqcnt==gameDlCount)){
r=true;
}
return r;
}

//是否赢
public static boolean isWin(){
boolean r=false;
int zgcnt=0;//遮盖的个数
int bjcnt=0;//标记的个数
int lcnt=0;//雷的个数
int ok=0; //标记正确的雷
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(GameMaps[i][j]==ZgBiaoShi){
zgcnt++;
}
if(GameMaps[i][j]==DlBiaoShi){
lcnt++;
}
if(GameMaps[i][j]==BjBiaoShi){
bjcnt++;
if(GameMaps[i][j]==DlBiaoShi){
ok++;
}
}
}
}
if(
(lcnt==gameDlCount&&lcnt==0&bjcnt==0)||
(zgcnt+bjcnt==gameDlCount&&lcnt==0&&bjcnt==ok)||
(ok==bjcnt&&ok==gameDlCount)){
r=true;
}
return r;
}

//游戏主方法
public static void play(){
//获取游戏开始时的时间
long st=System.currentTimeMillis();
while(true){
int row=inputRow();
int col=inputCol();
String BiaoJi1=inputBiaoJi();
CzBjSm(row,col,BiaoJi1);
//判断是否游戏结束
if(isOver()){
break;
}
show(GameMaps);
}
//显示布雷地图
show(DlMaps);

if(isWin()){
System.out.println("游戏胜利,排雷成功");
}else{
System.out.println("游戏失败,继续努力");
}
long et=System.currentTimeMillis();
long time=0;
time=(et-st)/1000;
long m=0,f=0;;


m=time%60;
f=time/60;




System.out.println("游戏一共用时"+f+"分"+m+"秒");
}

//方法入口
public static void main(String[] args){
into();//地图初始化
LbShuZi();//初始化数字
//show(DlMaps); //显示布雷地图

show(GameMaps); //游戏界面
play();//游戏主方法
}
}

效果图





微信小程序实现window经典的扫雷游戏 文章目录前言一、扫雷游戏规则是什么?二、开发前准备1.创建小程序项目2.开始开发2.1.实现网格地图2.2.生成雷2.3.生成雷数2.4.长按添加雷的标识2.5.点击网格事件2.6.输赢判断总结 前言 打开手机游戏列表发现了一款经典的扫雷游戏,在玩的过程中发现游戏逻辑应该不难,想着是不是能自己写写这个游戏,后来用了1天实现了整体游戏开发,于是有了这边文章来总结整体的游戏开发思路。 一、扫雷游戏规则是什么? 1、游戏为在10*10或其它排序组合网格中找雷 2、网格中隐藏着一定数量的雷,点击到雷即为输 3、 阅读详情

相关推荐

自动扫雷程序

很多人喜欢玩Windows的扫雷程序,去年11月份写了这个小程序,那时还在Infosys。以下是去年在我的MSN Sapce上写的:“这两天挺无聊的,Bob的扫雷战绩越来越令人惊叹,中级达到26秒,于此情况,我不得不使出了杀手锏——改注册表,将战绩定格为1秒,不过或许这样显得太贪心了,所以马上被识破,于是,鄙视的眼光投了过来,似乎我成了一个“卑鄙龌鹾”,用下三烂的手段获取胜利的人,一下子一种“

Zerostone Growth 3834

【C语言】扫雷小游戏的代码实现

用C语言实现小游戏扫雷的代码实现

weixin_60371270的博客 6282

扫雷小程序(C语言)

扫雷小程序(C语言)        大家还记得学校上机课无聊时玩过的扫雷吗?扫雷是我们这些90年代的青年们玩过最经典的小游戏了吧?大家有木有常对他的工作原理疑惑,那么今天我们来用我们学过的C语言实现一个简单的扫雷小游戏。        还记的扫雷的规则吗?        当你第一次点击时,永远不会踩到雷(小伙伴们有木有发现呢)        以后点击的时候,如果以点击位置为中心的3*3的格...

YeLing0119的博客 2511

微信小程序实验四 —— 扫雷游戏

实验小提醒,打开微信小程序模板时,一定要看清楚,要选js模板,不要选ts模板,因为ts中对数据类型检查更严格,同样的代码在ts中可能无法运行! 实验内容: 编写如下扫雷游戏,基本要求如下: (1)方块数为10行7列; (2)有游戏计时(计时单位为秒); (3)有一个“开始游戏”按钮,按该按钮能重新开始一局游戏。 可依据个人能力自由发挥点: (1)让玩家可以自由设定方块数; (2)让玩家可以自由设定地雷数; 实验效果: 程序优势: 1,必须点击开始游戏,才...

qq_51901495的博客 3369

扫雷-单机游戏-微信小游戏项目开发入门

适合新手做,微信小游戏,小程序开发入门,扫雷游戏实现方案

6121

最优化问题——一维搜索(一)

最优化问题——一维搜索 1. 一维搜索的引入 1.1 从非线性规划问题到一维搜索 在前面的文章中,我们提到了基于迭代的非线性规划问题的求解思路。在求解过程中,我们提到了在每一步的迭代中都需要对计算步长因子,其计算公式为: λk=minλf(xk+λp)λ_k=min_{λ}f(x_k+λp)λk​=minλ​f(xk​+λp) 我们将f(xk+λp)f(x_k+λp)f(xk​+λp)视为λ的一元函数,我们的目标就是求这个一元函数的极小值。对于这个问题,我通常的求解方式为一维搜索。 1.2 一维搜索的基本形

hei653779919的博客 7361

java的扫雷小游戏、扫雷游戏设计、扫雷小程序,附源码+文档,适合课程设计

游戏界面可以分为三个模块:菜单栏,游戏数据显示区域以及雷区。游戏数据显示区域包括地雷计数区、计时区和重新开始按钮。雷区就是玩家的游戏区域,当玩家在游戏过程中用鼠标点击某一模块,系统会自动作出相应的响应,这就是游戏中的鼠标事件。购买之后,如果需要帮忙调试安装部署(免费),直接联系作者即可,所有需要的软件都可以帮忙安装,你只需要下载一个远程工具即可。调试要求使用idea,如果不是idea,请不要购买,购买之后无法帮忙调试。整个扫雷游戏中,玩家所能进行的操作有:选择难度、开始游戏、重新开始游戏和记录查询等。

m0_66818464的博客 6676

西门子S7-1200/1500 PLC编程与应用技巧

西门子S7-1200 PLC是一款紧凑型的控制器,适用于小型到中型的自动化控制任务。紧凑设计:集成了I/O模块,减少了控制柜的空间需求。高性能:高达25µs的扫描时间,能够快速响应。模块化扩展:支持扩展输入输出模块、通信模块和智能模块,满足不同的应用需求。多种编程语言:支持Ladder图(梯形图)、功能块图(FBD)、结构化文本(ST)等多种编程语言。西门子S7-1200与S7-1500 PLC是强大且灵活的工业控制系统,适用于各种自动化应用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2673

python之扫雷小游戏(附代码)

这是之前做的一个扫雷小游戏.代码如下(有一些bug请多见谅!)。 #-*- cdoeing = utf-8 -*- #@Time : 2020-12-08 #@Author : LBOcean """ 对象: 棋盘: 属性:长, 宽, 雷, 盘面 方法: 生成盘面, 设置雷的个数、长、宽, 翻牌, 判断输赢 """ from random import randint import sys class Pan: def __init__(se.

LBOcean的博客 7699

数学建模--十大经典常用算法

数学建模十大算法:灰色预测,蒙特卡洛,遗传算法,模拟退火法,组合算法,神经网络,动态规划,聚类算法,类比法,概率算法,Floyd算法

qq_51533426的博客 5647

YOLOv11-seg改进系列 | 引入CMTFNet(TGRS2023)+TransNeXt(CVPR2024)的C3k2_MSMHSA_CGLU模块,多尺度空洞注意力扩大感受野,增强复杂背景下

本文提出一种改进YOLOv11分割模型的C3k2_MSMHSA_CGLU模块,融合多尺度多头自注意力(MSMHSA)和卷积门控线性单元(CGLU)。MSMHSA通过多尺度空洞卷积提取不同感受野特征,生成跨尺度注意力,降低计算量同时保留全局上下文。CGLU采用卷积门控机制增强特征变换能力。实验表明,改进后模型参数量仅增加7.8%,GFLOPs增加4.2%,显著提升了多尺度目标检测性能,尤其适用于遥感图像等复杂场景。该模块有效解决了原始C3k2感受野有限、缺乏全局建模能力的问题。

qq_44224801的博客 200

使用 python 的单人AI 扫雷游戏

AI玩扫雷 扫雷是一款单人益智游戏。游戏的目标是清除包含隐藏的“地雷”或炸弹的矩形板,而不引爆其中任何一个,借助每个区域中相邻地雷数量的线索。 扫雷游戏表示 class Minesweeper(): def __init__(self, height=8, width=8, mines=8): # 设置初始宽度、高度和地雷数量 self.height = height self.width = width self.mines = set() #

努力是为了站在万人之中,成为别人的光 1万+

微信小程序 - [wxapplib]] backgroundfetch privacy fail {“errno”:101,“errMsg”:“private_getBackgroundFetchDa

微信小程序报错之backgroundfetch privacy fail,微信小程序报错WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {“errno“:101,怎么解决?问题出现:调用wx.chooseMessageFile报错(开发者工具中正常)用户隐私协议中未声明小程序使用此功能,安卓真机调试报错:backgroundfetch privacy fail ,怎么解决?微信小程序[wxapplib]] backgrou

🏆 前端领域优质创作者 1万+

【C语言 】扫雷小程序代码实现

通过这个菜单,我们将“1"设置为 开始游戏,并将”0“作为退出游戏。 由于我们在排查时,发现当排查坐标在边缘角落时,有一些数据越界了,因此,我们将棋盘加个“边框”就能很好地解决这个问题。 通过宏定义ROW,COL方便后续进行修改 定义mine数组为布置雷的数组,show数组为展示排查的数组 3 . 打印棋盘 4 . 布置雷的位置 5 . 排查雷的位置 5. 对游戏主体进行编写(game.c

2301_81348661的博客 2635

深度学习实战103-基于KDD Cup 99数据集的搭建神经网络的检测系统(NIDS),通过对网络流量数据进行分析,提供完整代码

接下来,我们定义一个全连接神经网络模型。return x# 创建数据集和数据加载器# 初始化模型通过以上步骤,我们实现了一个基于PyTorch的简单网络入侵检测系统。这个系统使用KDD Cup 99数据集进行训练和评估。实际应用中,您可以根据需求调整模型结构、超参数以及数据预处理方法。希望对大家有所帮助!如果有任何问题或需要进一步的解释,请随时咨询。

微学AI的博客 1582

直方图均衡化原理及matlab和opencv实现代码

详细分析了直方图均衡化的数学原理,配有matlab和opencv实现代码

qq_21603315的博客 4778

微信小程序项目实例——扫雷

🎃👉《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。🎯📑1️⃣基本定式不要忘,现场推理真够呛。2️⃣鼠标点击不要快,稳定节奏把空开。3️⃣顺手标雷不要惯,积累下来记录悬。4️⃣无从下手不要愣,就近猜雷把心横。5️⃣遇到猜雷不要怕,爆了脸上不留疤。6️⃣猜雷猜错不要悔,哭天抢地也白费。7️⃣碰上好局不要慌,紧盯局部慢扩张。8️⃣痛失好局不要恨,既然有缘定有份。⛳。

ws15168689087的博客 8320

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

微信小程序 | 做一个小程序端的扫雷游戏

本文整理了一个完整的基于`vue`的小程序端扫雷游戏。我们可以从实现扫雷规则的过程中锻炼到`vue`的各类语法操作以及前端的样式调整,以及最常用的各类排版布局!

陶人超有料的博客 1934

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

扫雷游戏小程序

扫雷小程序

2202_75357702的博客 1488

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

被微软遗弃的神作《扫雷》,竟然被中国玩家玩出花?

生日快乐,扫雷!

IT界那些事儿 9019

扫雷(c语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、扫雷是什么? 二、基本思路流程介绍 1.效果显示 选择界面 主界面(下面显示雷区可屏蔽) ​ 游戏失败画面 游戏通过画面 三、代码实现 1.meau()函数以及界面test函数() 2.game函数(包含页面,设雷,扫雷) 3.棋盘InitBoard()设置 4.棋盘覆盖函数DisplayBoard() 5.Setmine()设置雷函数 ...

xutengya的博客 4404

java扫雷_Java实现简单的扫雷小程序

前两天看了个扫雷的视频,于是自己跟着做了下,感觉还不是很难初学Java的同学可以尝试自己操作下Java小程序这样子才能提高自己的理解能力和编程水平不用多说了,直接上代码吧!具体代码操作如下:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.GridLayout;i...

weixin_39964833的博客 477

从零学做简易扫雷(win32-非MFC-C语言版)

简易扫雷(win32-非MFC-纯C语言版) 起因 因转专业前后课程不一样,所以现在大二要补大一的程序设计实践,老师要求要想得高分就必须从这里面选:***,***,。。。 因为我比较喜欢玩扫雷,于是就选了扫雷。又不甘心写纯黑的控制台程序,就打算借此机会深入一下win32编程。废话不多说,开搞! 成品展示 初始界面: 游戏中: 获胜: 失败: 流程图: 制(学)作(习)过程 (点击看大图)...

画船听雨眠 2594

扫雷游戏(java实现)java小程序

学了两周的java,想着做点东西玩玩,萌生了写一个扫雷的想法,这个想法其实在学c语言时就有了,当时并不知道c也有图形库,在后来就搁置了,最近看了大概两周的java,刚好看完 java Swing图形界面,老师说应该做个小项目检验一下学习成果,想着还是扫雷吧。 写了有两天,头一天把基本的的东西做出来了,第二天主要进行了一些优化,最后鼠标右键标记雷的功能没加上,原因是在把按钮置为不可用时,居然...

hunt_er的博客 2万+

C语言小游戏——扫雷

C语言扫雷小游戏(可实现展开效果!),干货满满哦!!

NunU的博客 9745
上一篇: 很实用的一个小程序(日历)
下一篇: AngularJS入门小实例
让程序飞
博客等级 码龄10年 8831粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让程序飞

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值