日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java實現掃雷游戲控制臺版

瀏覽:20日期:2022-09-02 14:15:58

本文實例為大家分享了java實現掃雷游戲控制臺版,供大家參考,具體內容如下

掃雷游戲

a、游戲的分析

在游戲中需要存在對象包含哪些。格子對象(Grid):屬性:內容(content)、狀態(type)

b、工程架構

設計工程包結構bean:存放實體類core:游戲核心類(游戲操作)test:掃雷玩的測試類

c、編寫類

Grid(屬性:content、type)Core類?游戲核心類(雷區創建、顯示雷區、布雷、踩雷)Test類?測試類

d、核心類設計

1、格子對象創建方法定義2、顯示雷區方法定義3、布雷方法定義

隨機數工具:

Random r=new Random();//獲得整數類型的隨機數int x=r.nextInt(參數);參數表示隨機值范圍?>9

4、八個方向對象的方法定義

Point類:java中提供的坐標對象類 x,y

5、設置雷數的方法

通過遍歷所有格子對象獲取雷數的添加

6、踩雷

遞歸調用:在一個類的方法中實現當前方法調用自己的操作方式1)、通過傳入一個坐標獲取當前坐標位置的格子對象內容,判斷內容的類型完成游戲操作1)、內容為雷 -->游戲結束2)、內容位數字 -->顯示當前格子內容3)、內容為空白 -->通過當前位置實現空白的輻射操作(遞歸調用)

7、游戲勝利

1)、方法的返回類型2)、test類中循環的結構(break)

掃雷實體類

package minersgame.bean;/** * 格子實體類 * @author 木葉 *擁有格子的內容和狀態屬性 */public class Grid { //定義格子的私有屬性 private char content; private boolean type; public char getContent() { return content; } public void setContent(char content) { this.content = content; } public boolean isType() { return type; } public void setType(boolean type) { this.type = type; }}

核心代碼

package minersgame.core;import java.awt.Point;import java.util.Random;import minersgame.bean.Grid;/** * 游戲核心類 * @author 木葉 *包含游戲核心的功能:雷區制定、布雷實現、踩雷操作、顯示雷區、獲取方向、設置雷數、踩雷、顯示勝利 */public class Core { //定義一個存放格子對象的二維數組完成雷區的保存 Grid[][] grid=new Grid[9][9]; //定義雷數的屬性 int count=10; int count2 = count; //定義一個屬性獲取當前狀態 public boolean state=true; //定義一個創建格子對象的方法,完成雷區中所有格子對象的創建 public void createGrid() { //通過二維數組實現每個下標中添加格子對象 for(int i=0;i<grid.length;i++) { for(int j=0;j<grid[i].length;j++) { //創建格子對象完成二維數組下標數據存放 grid[i][j]=new Grid(); //設置格子對象中的屬性內容 grid[i][j].setContent(’ ’); grid[i][j].setType(false); } } } //定義一個布雷的方法 public void setMines() { //定義隨機數工具 Random r=new Random(); //通過隨機方式獲取隨機坐標 do { //獲得x坐標 int x=r.nextInt(9); //獲得y坐標 int y=r.nextInt(9); //判斷當前隨機位置的格子對象內容是否為雷,如果是雷就進入下次循環 if(grid[x][y].getContent()!=’*’) { //通過x和y獲得當前位置的格子對象 grid[x][y].setContent(’*’); //實現數量自減 count--; } }while(count>0) ; } //定義顯示雷區的方法 public void show() { //通過遍歷二維數組獲得所有的格子個數 System.out.println('xy 0 1 2 3 4 5 6 7 8'); for(int i=0;i<grid.length;i++) { System.out.print(i+' '); for(int j=0;j<grid[i].length;j++){ // if(grid[i][j].isType() ){ System.out.print(grid[i][j].getContent()+' '); }else { System.out.print('■ '); } } System.out.println(); } } //定義坐標獲取的方法 --獲得8個方向的坐標對象方法 public Point[] getPoint(int x,int y) {//超過一個以上的返回要用數組 //定義一個坐標對象數組 Point[] point=new Point[8]; //左邊 point[0]=new Point(x-1,y); //左上 point[1]=new Point(x-1,y-1); //上邊 point[2]=new Point(x,y-1); //右上 point[3]=new Point(x+1,y-1); //右邊 point[4]=new Point(x+1,y); //右下 point[5]=new Point(x+1,y+1); //下邊 point[6]=new Point(x,y+1); //左下 point[7]=new Point(x-1,y+1); return point; }//定義一個設置雷數的方法 public void setMinesNumber() { //通過循環獲得所有的格子對象 for(int i=0;i<grid.length;i++) { for(int j=0;j<grid[i].length;j++) { //定義一個統計類屬的變量 int sum=0; //判斷當前格子對象內容是否為雷,如果是雷就進入下次獲取,否則完成雷數統計 if(grid[i][j].getContent()!=’*’) { //通過當前的坐標獲取八個方向坐標對象 Point[] p=this.getPoint(i, j); //通過坐標對象數組獲取對應下標格子對象 for(int k=0;k<p.length;k++) { //獲得每個坐標對象 Point point=p[k]; //通過判斷過去的8個方向位置是否越界 if(point.x>=0&&point.x<9&&point.y>=0&&point.y<9) { //通過當前方向坐標獲取位置上的格子對象 if( grid[point.x][point.y].getContent()==’*’) { sum++;//雷數自增 } } } //通過雷數統計變量確定是否有雷存在,如果有就將當前 //雷數添加到當前位置的格子對象中 if(sum>0) { //在當前格子對象中添加雷數 grid[i][j].setContent((char)(48+sum)); } } } } } //定義一個踩雷踩雷 public void stampMine(int x,int y) { //開啟當前格子狀態為打開 grid[x][y].setType(true); //判斷當前坐標位置的格子內容是否為雷,如果是雷就結束否則就繼續 if(grid[x][y].getContent()!=’*’) { //判斷當前格子對象是否為數字,如果為數字就不操作 if(grid[x][y].getContent()==’ ’) { //獲得當前格子周圍8個方向的坐標對象 Point[] p=this.getPoint(x, y); //循環遍歷8個方向獲得對應的格子對象 for(int k=0;k<p.length;k++) { //分別獲得的方向對象 Point point=p[k]; //判斷是否越界 if(point.x>=0&&point.x<9&&point.y>=0&&point.y<9) { /** * 判斷當前坐標對象對應的格子對象內容是否為空格, * 如果是空格實現遞歸調用,如果是數字就開啟當前格子 */ if(grid[point.x][point.y].getContent()==’ ’&&grid[point.x][point.y].isType()==false) { //當前格子為空格的情況 this.stampMine(point.x, point.y); }else { //當前格子為數字的情況 grid[point.x][point.y].setType(true); } } } } }else { System.out.println('踩雷了,游戲結束?。。?); //修改游戲狀態 state=false; //顯示出所有格子 for(int i=0;i<grid.length;i++) { for(int j=0;j<grid[i].length;j++) { grid[i][j].setType(true); } } } } //定義一個游戲勝利的方法 public boolean getVictory(){ //為打開格子數 int number=0; //使用循環得出格子總數 //使用循環得出打開格子總數 for(int i=0;i<grid.length;i++) { for(int j=0;j<grid[i].length;j++) { if(!grid[i][j].isType()) { number++; } } } //判斷未打開鴿子數師傅等于雷數,是則預習成功,不是進入下次 if(number==count2) { for(int i=0;i<grid.length;i++) { for(int j=0;j<grid[i].length;j++) { grid[i][j].setType(true); } } System.out.println('游戲勝利!!!掃雷成功!??!'); return false; }else { return true; } } }

測試類

package minersgame.test;import java.util.Scanner;import minersgame.core.Core;public class Test { public static void main(String[] args) { /* * 實現游戲核心 */ //獲得游戲核心類對象 Core c=new Core(); c.createGrid(); c.setMines(); //顯示 c.show(); //添加雷數 c.setMinesNumber(); Scanner scan=new Scanner(System.in); while(c.state){ System.out.println('請輸入X坐標:'); int x=scan.nextInt(); System.out.println('請輸入Y坐標:'); int y=scan.nextInt(); //調用踩雷方法 c.stampMine(x, y); //顯示雷區方法 c.show(); //判斷是否游戲勝利 if(c.getVictory()) { }else { c.show(); break; } } }}

更多精彩游戲,請參考專題《java經典小游戲》

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一区二区三区久久久久久久久| 日本欧美韩国一区三区| 精品一区二区三区在线观看视频| 久久三级视频| 久久久久九九精品影院| 99精品在线| 国产精品av一区二区| 亚洲特色特黄| 香蕉视频亚洲一级| 石原莉奈在线亚洲二区| 欧美韩日一区| 老牛影视精品| 日韩精品一区第一页| 日韩视频一区| 亚洲精品乱码| 久久精品一区二区三区中文字幕| 亚洲精品福利电影| 欧美一区二区性| 1024精品一区二区三区| 涩涩涩久久久成人精品| 久久福利在线| 午夜久久一区| 91av一区| 日韩国产一区二区| 在线看片日韩| 日韩欧美在线精品| 国产精品片aa在线观看 | 最新国产精品视频| 日本强好片久久久久久aaa| 午夜影院一区| 日本成人中文字幕在线视频| 亚洲风情在线资源| 蜜臀91精品一区二区三区| 高清日韩中文字幕| 日韩超碰人人爽人人做人人添| 99精品视频在线| 国产精品大片免费观看| 在线视频观看日韩| 麻豆精品99| 少妇精品久久久一区二区| 91视频一区| 国产精品中文字幕制服诱惑| 国产婷婷精品| 久久裸体视频| 久久精品国产精品亚洲毛片| 影音先锋国产精品| 欧洲一级精品| 国产一区2区| 青草国产精品久久久久久| 亚洲天堂免费电影| 蜜桃免费网站一区二区三区| 国产成人精品亚洲日本在线观看| 亚洲激情二区| 亚洲伦乱视频| 久久天堂影院| 欧美在线看片| 国产精品一区二区99| 国产精品一区三区在线观看| 欧美日韩一区二区三区不卡视频| 亚洲ww精品| 色婷婷成人网| 在线日韩电影| 99久久夜色精品国产亚洲1000部 | 亚洲精品影院在线观看| 久久婷婷av| yellow在线观看网址| 欧美日韩99| 麻豆精品久久| 九九色在线视频| 四虎影视精品| 亚洲高清二区| 亚洲精品影院在线观看| 国产精选久久| 成人国产精品一区二区网站| 精品国产午夜肉伦伦影院| 国产成人精品一区二区免费看京| 999久久久91| 五月天激情综合网| 日韩av中文字幕一区二区| 国产成人精品一区二区免费看京 | 久久久精品区| 精品国产美女a久久9999| 日韩综合一区| 亚洲大全视频| 国产精一区二区| 影音国产精品| 欧美性www| 欧洲一级精品| 日韩av黄色在线| 久久久久99| 涩涩涩久久久成人精品| 青青国产精品| 久久中文字幕一区二区三区| 三上亚洲一区二区| 91精品国产福利在线观看麻豆| 在线国产精品一区| 国产精品伊人| 亚洲a在线视频| 亚洲综合色婷婷在线观看| 国产 日韩 欧美 综合 一区| 狠狠久久婷婷| 国产一区二区三区天码| 亚洲一区二区动漫| 国产在线看片免费视频在线观看| 日本伊人久久| 国产精品久久久久久久久妇女| 亚洲天堂日韩在线| 日韩av二区在线播放| 午夜日韩在线| 精品免费av一区二区三区| 日韩一区二区三区免费视频| 久久久精品久久久久久96| 欧美一区精品| 国产三级精品三级在线观看国产| 亚洲激情黄色| 美女久久久久| 国产高清精品二区| 蜜臀国产一区二区三区在线播放| 国产成人免费精品| 亚洲天堂av资源在线观看| 99成人在线视频| 日韩在线观看不卡| 亚洲+小说+欧美+激情+另类| 在线免费观看亚洲| 91成人精品视频| 影视先锋久久| 激情久久久久久| 欧美日韩精品一区二区视频| 国产传媒在线| 激情六月综合| av综合电影网站| 中文在线资源| 一区免费在线| 激情综合亚洲| 激情久久中文字幕| 麻豆久久久久久| 九九99久久精品在免费线bt| 天堂精品久久久久| 97精品国产99久久久久久免费| 日韩高清欧美激情| 亚洲欧洲av| 欧美aaaaaa午夜精品| 国产精品日本一区二区不卡视频| 青青伊人久久| 国产欧美日韩一级| 美女久久久精品| 日韩欧美一区二区三区在线视频| 久久精品女人| 黄色在线一区| 久久国际精品| 国产成年精品| 久久成人精品| 五月精品视频| 青草久久视频| 日韩一区二区三区免费播放| 激情综合在线| 欧美黑人做爰爽爽爽| 国产精品高清一区二区| 中文字幕在线官网| 免费成人在线观看| 国产欧美大片| 麻豆精品在线| 国产在线日韩| 日本成人精品| 欧美激情视频一区二区三区免费| 欧美国产一级| 日韩区欧美区| 精品国产精品国产偷麻豆| 欧美亚洲国产精品久久| 清纯唯美亚洲综合一区| 日韩视频精品在线观看| 久久精品伊人| 日韩激情一区二区| 亚洲午夜在线| 国产精品99精品一区二区三区∴| 久久美女精品| 国产精品激情电影| 欧美日韩亚洲一区| 激情91久久| 亚洲婷婷免费| 国产精品二区不卡| 少妇精品久久久一区二区三区| 久久99偷拍| 国产精品久久久久久久久久白浆| 精精国产xxxx视频在线播放| 成人在线黄色| 国产精选久久| 国产精品一国产精品| 99久久婷婷这里只有精品| 国产精品一区二区精品视频观看| 亚洲激情av| 成人看片网站| 久久国产电影| 久久久久久久久久久妇女| 老司机免费视频一区二区| 日韩高清在线不卡| 日本不卡不码高清免费观看| 国内精品麻豆美女在线播放视频| 日韩视频一二区| 亚洲一级网站|