Java练习(模拟扫雷游戏)
要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示。如某位置为地雷,则该位置用数字-1表示,
如该位置不是地雷,则暂时用数字0表示。
编写程序完成在该二维数组中随机布雷的操作,程序读入3个参数:布雷面板的行数(r),列数(c),布置的地雷个数(n),
且要满足0<n<r*c*0.75(即布置地雷的最大密度为75%),程序运行后将n个地雷随机地布置在r*c的二维数组,布置完成后进行扫雷游戏。
import java.util.*; public class Minesweeper { public static void main(String[] args) { Scanner scn = new Scanner(System.in); //输入行和列 int r = Integer.parseInt(scn.nextLine()); int c = Integer.parseInt(scn.nextLine()); if(r<2 || c<2) { System.out.println("输入的行列无效。"); return; } //定义一个二维数组来布雷 int[][] a = new int[r][c]; Random rnd = new Random(); //随机给出雷的个数 int n = rnd.nextInt((int)(r*c*0.75)); System.out.println("雷的个数:"+n); while(n>0) { //随机的布雷,随机产生雷所在行和列 int rr = rnd.nextInt(r); int cc = rnd.nextInt(c); if(a[rr][cc]!=-1) { a[rr][cc]=-1; n--; } } //扫雷 for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { int lei=0; if(a[i][j] == 0) { if(i-1>=0 && j-1>=0 && a[i-1][j-1]==-1) lei++; if(i-1>=0 && a[i-1][j]==-1) lei++; if(j<c-1) { if(i-1>=0 && a[i-1][j+1]==-1) lei++; if(a[i][j+1]==-1) lei++; } if(j-1>=0 && a[i][j-1]==-1) lei++; if(i<r-1) { if(j-1>=0 && a[i+1][j-1]==-1) lei++; if(a[i+1][j]==-1) lei++; } if(i<r-1 && j<c-1) { if(i+1>=1 && j+1>=1 && a[i+1][j+1]==-1) lei++; } a[i][j]=lei; } } } //输出 for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { System.out.print(a[i][j]+"\t"); } System.out.println(); } } }
Java练习(模拟扫雷游戏)的更多相关文章
- java实现简单扫雷游戏
/** * 一个简单的扫雷游戏 MainFram.java */ package www.waston; import java.awt.BorderLayout; import java.awt.C ...
- Java版的扫雷游戏源码
package com.xz.sl; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; i ...
- Java实现 LeetCode 529 扫雷游戏(DFS)
529. 扫雷游戏 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没有相邻(上,下,左,右,和所有4个对角线) ...
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem B: Minesweeper(模拟扫雷)
Problem B: Minesweeper Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 29 Solved: 7[Submit][Status][W ...
- JAVA_扫雷游戏(布置地雷)
1.要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示.如某位置为地雷,则该位置用数字-1表示, 如该位置不是地雷,则暂时用数字0表示. 编写程序完成在该二维数组中随机布雷的操作,程序读 ...
- 【Android】自己动手做个扫雷游戏
1. 游戏规则 扫雷是玩法极其简单的小游戏,点击玩家认为不存在雷的区域,标记出全部地雷所在的区域,即可获得胜利.当点击不包含雷的块的时候,可能它底下存在一个数,也可能是一个空白块.当点击中有数字的块时 ...
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...
- 洛谷 P2670 扫雷游戏==Codevs 5129 扫雷游戏
题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有 ...
- 疯狂java实战演义 弹球游戏代码
package org.crazyit.ball; import java.awt.Image; import java.io.File; import javax.imageio.ImageIO; ...
随机推荐
- 关闭NetworkManager的作用
author: headsen chen date: 2017-11-21 13:34:23 个人原创 重启网卡后,会造成网卡失效,报错如下: Bringing up interface eth0 ...
- ubuntu上修改root密码
ubuntu上修改root密码 author: headsen chen 2017-10-12 10:49:28 个人原创,转载请注明作者,出处. sudo passwd 两次输入想设置的r ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记2 - 更多的bash shell命令
更多的bash shell命令 想检测进程,需要熟悉ps命令的用法.ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息.默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户 ...
- 实现Java线程安全
一个类如果想要满足线程安全的条件: 每个线程都能正常的执行原子操作,保证得到正确的结果 这个类的对象可以同时被多个线程安全的访问 在每个线程的原子操作都完成后,对象处于合理的状态 一般情况下不可变类总 ...
- 在oracle中,group by后将字符拼接,以及自定义排序
1.在oracle中,group by后将字符拼接.任务:在学生表中,有studentid和subject两个字段.要求对studentid进行group by分组,并将所选科目拼接在一起.oracl ...
- 基于jQuery/zepto的单页应用(SPA)搭建方案
这里介绍一个基于jquery或zepto的单页面应用方案,遵循尽可能简单的原则,使大家一目了然,只需配置一个路由,之后完全按照jq日常写法即可完成.可做学习使用,也可修改后用于一些业务逻辑简单的spa ...
- 【Python】排列组合itertools & 集合set
■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...
- Algorithm --> 邮票连续组合问题
邮票组合问题 有四种面值的邮票很多枚,面值分别为1,4,12,21,取五张,求取出这些邮票的最大连续组合值 代码: #include <stdio.h> #include <stri ...
- Linux下的进程与线程(二)—— 信号
Linux进程之间的通信: 本文主要讨论信号问题. 在Linux下的进程与线程(一)中提到,调度器可以用中断的方式调度进程. 然而,进程是怎么知道自己需要被调度了呢?是内核通过向进程发送信号,进程才得 ...
- 【Alpha版本】冲刺阶段 - Day3 - 逆风
今日进展 袁逸灏:右上角两个按键的添加与实现监听(5h) 刘伟康:继续借鉴其他 alpha 冲刺博客,由于我们组的App原型可以在 alpha 阶段完成,所以不需要墨刀工具展示原型(2h) 刘先润:更 ...