使用 java制作简单的小游戏——扫雷

编程入门 行业动态 更新时间:2024-10-09 22:20:45

使用 java制作简单的<a href=https://www.elefans.com/category/jswz/34/1769974.html style=小游戏——扫雷"/>

使用 java制作简单的小游戏——扫雷

使用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制作简单的小游戏——扫雷

本文发布于:2024-02-14 02:14:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761203.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小游戏   简单   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!