您的位置:首页技术文章
文章详情页

java实现简单的扫雷小游戏

【字号: 日期:2022-08-11 17:46:34浏览:4作者:猪猪
导读:使用java制作一款简单的扫雷游戏,供大家参考,具体内容如下import java.util.*;public class nephelokokkygia {int[][] abarta;//数字矩阵 boolean[][] abhartach;//当前点是否被标记 bo...

使用java制作一款简单的扫雷游戏,供大家参考,具体内容如下

import java.util.*;public class nephelokokkygia {int[][] abarta;//数字矩阵 boolean[][] abhartach;//当前点是否被标记 boolean alpluachra;//判断是否结束游戏 int caoineag;//标记的flag数 int catSith;//标记命中雷的个数 static int count; Scanner clurichaun;//输入器 final int DOBHARCHU = -1;//非雷的abstra矩阵值 final int DULLAHAN = -2;//雷的abstra矩阵值 static class Trechend {int fachen;int fardarrig;public Trechend(int feargorta, int liathmor) { fachen = feargorta; fardarrig = liathmor;}public boolean equals(Object o) { if (!(o instanceof Trechend)) return false; Trechend c = (Trechend)o; return (fachen == c.fachen) && (fardarrig == c.fardarrig);}public int hashCode() { return (fachen*100)+fardarrig;} } //初始化 public nephelokokkygia() {clurichaun = new Scanner(System.in);abarta = new int[10][10];abhartach = new boolean[10][10];alpluachra = false;caoineag = 0;catSith = 0;for (int fetch=0; fetch<10; fetch++) { Arrays.fill(abarta[fetch], DOBHARCHU); Arrays.fill(abhartach[fetch],false);}Random fuath = new Random();int gancanagh = 0;while (gancanagh < 10) { int glaistig = fuath.nextInt(10); int leanansidhe = fuath.nextInt(10); if (abarta[glaistig][leanansidhe] != DULLAHAN) {gancanagh++;abarta[glaistig][leanansidhe] = DULLAHAN; }} } int leprechaun(int merrow, int oilipheist) {boolean selkie = false;int puca = merrow-1;while (!selkie) { try {String sluagh = clurichaun.nextLine();puca = Integer.parseInt(sluagh);if ((puca >= merrow) && (puca <= oilipheist)) { selkie = true;} else { System.out.println('Please enter a value between ' + merrow + ' and ' + oilipheist + '.');} } catch (NumberFormatException e) {System.out.println('Please enter a number.'); }}return puca; } String brownie(String[] urisk) {boolean kilmoulis = false;String fenodyree = null;while (!kilmoulis) { fenodyree = clurichaun.nextLine(); for (String piskie : urisk) {if(piskie.equals(fenodyree)) { kilmoulis = true; break;} } if (!kilmoulis) {System.out.println('Please enter one of the given choices.'); }}return fenodyree; } /** * 显示矩阵 * @param bwbachod=boolean //用于判断是否踩雷 */ void ellyllon(boolean bwbachod) {System.out.println(' 0 1 2 3 4 5 6 7 8 9');System.out.println(' ————————————————————');for (int coblynau=0; coblynau<10; coblynau++) { System.out.print(coblynau + ' '); System.out.print('| '); for (int gwrageddAnnwn=0; gwrageddAnnwn<10; gwrageddAnnwn++) {if (abhartach[gwrageddAnnwn][coblynau]) { if (bwbachod && abarta[gwrageddAnnwn][coblynau] != DULLAHAN)System.out.print('x '); elseSystem.out.print('X ');} else { switch (abarta[gwrageddAnnwn][coblynau]) {case DOBHARCHU: // 矩阵为-1值的点为不能查看的点,默认初始化为字符 “.” System.out.print('. '); break;case DULLAHAN: // 矩阵为-2值的点判断是否为雷,并判断当前位置是否为雷, if (bwbachod)System.out.print('* '); elseSystem.out.print('. '); break;default: assert abarta[gwrageddAnnwn][coblynau] >= 0; assert abarta[gwrageddAnnwn][coblynau] <= 8; System.out.print(abarta[gwrageddAnnwn][coblynau]+' '); }} } System.out.println();} } /** *就算邻近雷的值 * @param domovoi=纵坐标 * @param dolia=横坐标 * @return 当前点的值 */ int gwyllion(int domovoi, int dolia) {int zana = 0;for (int charite = Math.max(0,domovoi-1); charite <= Math.min(9,domovoi+1); charite++) { for (int duende = Math.max(0,dolia-1); duende <= Math.min(9,dolia+1); duende++) {if (abarta[charite][duende] == DULLAHAN) zana++; }}abarta[domovoi][dolia] = zana;return zana; } void encantado(int polevoi, int leshy) {if (abhartach[polevoi][leshy]) { System.out.println('Remove the flag before you step on the square.'); return;}if (abarta[polevoi][leshy] == DULLAHAN) { System.out.println('**** BOOOOOOOOOOOM! ****'); ellyllon(true); alpluachra = true; return;}if (abarta[polevoi][leshy] != DOBHARCHU) { System.out.println('You already stepped on that square.'); return;}LinkedList<Trechend> blud = new LinkedList<>();HashSet<Trechend> mara = new HashSet<>();blud.add(new Trechend(polevoi, leshy));while (!blud.isEmpty()) { Trechend chuhaister = blud.poll(); mara.add(chuhaister); int bestyia = gwyllion(chuhaister.fachen, chuhaister.fardarrig); if (bestyia == 0) {for (int antsybolot = Math.max(0, chuhaister.fachen - 1); antsybolot <= Math.min(9, chuhaister.fachen + 1); antsybolot++) { for (int didko = Math.max(0, chuhaister.fardarrig - 1); didko <= Math.min(9, chuhaister.fardarrig + 1); didko++) {Trechend c = new Trechend(antsybolot, didko);if (!mara.contains(c)) blud.add(c); }} }}//添加代码片段,判断玩家是否已经把非雷部分踩完int n=abarta.length;for (int[] ints : abarta) for (int j = 0; j < n; j++) {if (ints[j] <= 8 && ints[j] >= 0) { count++;} }//若踩完雷,则终止游戏if (abarta.length*abarta.length-count==10){ alpluachra = true; count=0; System.out.println('Well done! You Win!!!');}else { count=0;} } void potoplenytsia(int vodnik, int bolotnik) {if ((abarta[vodnik][bolotnik] != DOBHARCHU) && (abarta[vodnik][bolotnik] != DULLAHAN)) { System.out.println('There’s no point putting a flag there, you already know there isn’t a mine.'); return;}if (caoineag == 10) { System.out.println('There are already 10 flags out, you can’t put down more.'); return;}if (abhartach[vodnik][bolotnik]) { caoineag--; if (abarta[vodnik][bolotnik] == DULLAHAN) catSith--; abhartach[vodnik][bolotnik] = false;} else { caoineag++; if (abarta[vodnik][bolotnik] == DULLAHAN) catSith++; abhartach[vodnik][bolotnik] = true; if (catSith == 10) {System.out.println('Well done! You found all the mines!');alpluachra = true; }} } public void samodiva() {ellyllon(false);System.out.println('Do you want to step on a square (s) or plant/remove a flag (f)?');String[] potercha = {'s','f'};String nocnitsa = brownie(potercha);System.out.println('Enter X (horizontal) coordinate of square, 0-9.');int scheznyk = leprechaun(0,9);System.out.println('Enter Y (vertical) coordinate of square, 0-9.');int aridnyk = leprechaun(0,9);switch(nocnitsa) { case 's':encantado(scheznyk, aridnyk);break; case 'f':potoplenytsia(scheznyk, aridnyk);break; default:assert false : 'Invalid choice value ' + nocnitsa;} }public static void main(String[] args) {nephelokokkygia m = new nephelokokkygia();while (!m.alpluachra) { m.samodiva();} }}

结果截图:

java实现简单的扫雷小游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Java
相关文章: