真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java如何實(shí)現(xiàn)掃雷游戲控制臺版

小編這次要給大家分享的是java如何實(shí)現(xiàn)掃雷游戲控制臺版,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

掇刀網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

掃雷游戲

a、游戲的分析

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

b、工程架構(gòu)

設(shè)計(jì)工程包結(jié)構(gòu)
bean:存放實(shí)體類
core:游戲核心類(游戲操作)
test:掃雷玩的測試類

c、編寫類

Grid(屬性:content、type)
Core類–游戲核心類(雷區(qū)創(chuàng)建、顯示雷區(qū)、布雷、踩雷)
Test類–測試類

d、核心類設(shè)計(jì)

1、格子對象創(chuàng)建方法定義
2、顯示雷區(qū)方法定義
3、布雷方法定義

隨機(jī)數(shù)工具:

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

4、八個方向?qū)ο蟮姆椒ǘx

Point類:java中提供的坐標(biāo)對象類 x,y

5、設(shè)置雷數(shù)的方法

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

6、踩雷

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

7、游戲勝利

1)、方法的返回類型
2)、test類中循環(huán)的結(jié)構(gòu)(break)

掃雷實(shí)體類

package minersgame.bean;
/**
 * 格子實(shí)體類
 * @author 木葉
 *擁有格子的內(nèi)容和狀態(tài)屬性
 */

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 木葉
 *包含游戲核心的功能:雷區(qū)制定、布雷實(shí)現(xiàn)、踩雷操作、顯示雷區(qū)、獲取方向、設(shè)置雷數(shù)、踩雷、顯示勝利
 */
public class Core {

 //定義一個存放格子對象的二維數(shù)組完成雷區(qū)的保存
 Grid[][] grid=new Grid[9][9];
 //定義雷數(shù)的屬性
 int count=10;
 int count2 = count;
 //定義一個屬性獲取當(dāng)前狀態(tài)
 public boolean state=true;
 //定義一個創(chuàng)建格子對象的方法,完成雷區(qū)中所有格子對象的創(chuàng)建
 public void createGrid() {
 //通過二維數(shù)組實(shí)現(xiàn)每個下標(biāo)中添加格子對象
 for(int i=0;i0) ;
 
 }

 //定義顯示雷區(qū)的方法
 public void show() {
 //通過遍歷二維數(shù)組獲得所有的格子個數(shù)
 System.out.println("xy 0 1 2 3 4 5 6 7 8");
 for(int i=0;i=0&&point.x<9&&point.y>=0&&point.y<9) {
 //通過當(dāng)前方向坐標(biāo)獲取位置上的格子對象
 if( grid[point.x][point.y].getContent()=='*') {
 sum++;//雷數(shù)自增
 } 
 }
 }
 //通過雷數(shù)統(tǒng)計(jì)變量確定是否有雷存在,如果有就將當(dāng)前
 //雷數(shù)添加到當(dāng)前位置的格子對象中
 if(sum>0) {
 //在當(dāng)前格子對象中添加雷數(shù)
 grid[i][j].setContent((char)(48+sum));
 } 
 }
 }
 }
 } 
 //定義一個踩雷踩雷
 public void stampMine(int x,int y) {
 //開啟當(dāng)前格子狀態(tài)為打開
 grid[x][y].setType(true);
 //判斷當(dāng)前坐標(biāo)位置的格子內(nèi)容是否為雷,如果是雷就結(jié)束否則就繼續(xù)
 if(grid[x][y].getContent()!='*') {
 //判斷當(dāng)前格子對象是否為數(shù)字,如果為數(shù)字就不操作
 if(grid[x][y].getContent()==' ') {
 //獲得當(dāng)前格子周圍8個方向的坐標(biāo)對象
 Point[] p=this.getPoint(x, y);
 //循環(huán)遍歷8個方向獲得對應(yīng)的格子對象
 for(int k=0;k=0&&point.x<9&&point.y>=0&&point.y<9) {
 /**
 * 判斷當(dāng)前坐標(biāo)對象對應(yīng)的格子對象內(nèi)容是否為空格,
 * 如果是空格實(shí)現(xiàn)遞歸調(diào)用,如果是數(shù)字就開啟當(dāng)前格子
 */
 if(grid[point.x][point.y].getContent()==' '&&grid[point.x][point.y].isType()==false) {
 //當(dāng)前格子為空格的情況
 this.stampMine(point.x, point.y);
 }else {
 //當(dāng)前格子為數(shù)字的情況
 grid[point.x][point.y].setType(true);
 }
 }
 } 
 } 
 }else {
 System.out.println("踩雷了,游戲結(jié)束?。?!");
 //修改游戲狀態(tài)
 state=false;
 //顯示出所有格子
 for(int i=0;i

測試類

package minersgame.test;

import java.util.Scanner;

import minersgame.core.Core;

public class Test {
 public static void main(String[] args) {
 /*
 * 實(shí)現(xiàn)游戲核心
 */
 //獲得游戲核心類對象
 Core c=new Core();
 c.createGrid();
 c.setMines();
 //顯示
 c.show();
 //添加雷數(shù)
 c.setMinesNumber();
 Scanner scan=new Scanner(System.in);
 while(c.state){
 System.out.println("請輸入X坐標(biāo):");
 int x=scan.nextInt();
 System.out.println("請輸入Y坐標(biāo):");
 int y=scan.nextInt();
 //調(diào)用踩雷方法
 c.stampMine(x, y);
 //顯示雷區(qū)方法
 c.show();
 //判斷是否游戲勝利
 if(c.getVictory()) { 
 }else {
 c.show();
 break;
 }
 }
 }
}

看完這篇關(guān)于java如何實(shí)現(xiàn)掃雷游戲控制臺版的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。


網(wǎng)站欄目:java如何實(shí)現(xiàn)掃雷游戲控制臺版
網(wǎng)址分享:http://weahome.cn/article/jgspjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部