大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java游戲項目的練習(xí)題有哪些

Java游戲項目的練習(xí)題有哪些

更新時間:2020-08-28 15:35:34 來源:動力節(jié)點(diǎn) 瀏覽2596次

一、游戲功能

游戲由障礙、空地、箱子、終點(diǎn)與玩家組成。

通過上下左右控制玩家推動箱子。當(dāng)箱子的推動方向沒有障礙時,向前移動到新的位置,玩家也向前移動一步。

當(dāng)所有箱子都處于終點(diǎn)時,游戲勝利,按回車鍵進(jìn)入下一關(guān)。當(dāng)完成所有關(guān)卡時,按回車鍵結(jié)束游戲。

在游戲中按R建重新開始本關(guān)。

二、素材準(zhǔn)備

從網(wǎng)上下載推箱子游戲的地圖素材與背景音樂。

三、游戲的大致框架

首先最容易想到的是一個管理地圖信息的Map類,其中應(yīng)該包括一個關(guān)卡地圖中的所有信息。

其次應(yīng)該有一個DataManager類來從文件中讀取地圖、讀取圖片,并能根據(jù)讀入的地圖文件與關(guān)卡編號創(chuàng)造出所需的Map類的對象。

還需要有一個SoundManager類來播放音樂。

游戲中最不能缺少的是GameManager類,用于管理游戲的所有邏輯。

最后是一個窗口,用于綜合所有的管理類,將輸入傳入GameManager類以及顯示游戲畫面。

四、地圖類的設(shè)計

因此設(shè)計出Map類,其中有4個私有成員:二維數(shù)組byte map[][]儲存地圖上的元素,int level儲存當(dāng)前地圖的等級,manX、manY表示玩家當(dāng)前所在的位置。

private int manX,manY;//主角所在位置的坐標(biāo)

private byte map[][];//二維地圖元素數(shù)組

private int level;//當(dāng)前地圖的等級

對于每一種地圖元素,我們都需要用一個數(shù)字來表示。因此我們定義一些byte類型的常量。

/** 地圖元素含義表 */
public final static byte WALL = 1, BOX = 2, BOX_ON_END = 3, END = 4,?
MAN_DOWN = 5, MAN_LEFT = 6, MAN_RIGHT = 7, MAN_UP = 8, GRASS = 9,?
MAN_DOWN_ON_END = 10, MAN_LEFT_ON_END = 11,MAN_RIGHT_ON_END = 12, MAN_UP_ON_END = 13;

考慮到進(jìn)入下一個關(guān)卡與重置本關(guān)都要新建一個Map對象,因此構(gòu)造方法有兩種,一種傳入level,一種則不需要。

/** 構(gòu)造一個地圖對象,不設(shè)定等級 */
public Map(byte map[][]){
this.init(map);
}

/** 構(gòu)造一個地圖對象并指定等級 */
public Map(byte map[][],int level) {
this.init(map);
this.level = level;
}

構(gòu)造Map時,我們只需要傳入表示地圖元素的二維數(shù)組與等級即可,玩家的位置可以由地圖計算得到。

這里沒有判斷地圖的合法性,即主角是否只有一個、箱子與終點(diǎn)是否對應(yīng)以及謎題是否有解。因為這里的地圖是事先寫入文件中的,在寫入時就應(yīng)該保證合法性。

/** 初始化一個地圖對象 */
public void init(byte map[][]){
this.map = new byte[map.length][map[0].length];
for (int i=0;i
for (int j=0;j
this.map[i][j] = map[i][j];
}
}
findMan();
}

// 判斷類型k是否為主角
private boolean isMan(byte k){
boolean res = false;
if (k>=5&&k<=13&&k!=9) res = true;
return res;
}

/** 計算主角在地圖中的位置 */
public void findMan(){
bk:for (int i=0;i
for (int j=0;j
if (isMan(map[i][j])){
manX = i;
manY = j;
break bk;
}
}
}
}

在實際使用中,我們需要有公有方法來獲得地圖的一些信息。

/** 獲取地圖的行數(shù) */
public int getRow(){
return map.length;
}

/** 獲取地圖的列數(shù) */
public int getColumn(){
return map[0].length;
}

/** 設(shè)置主角的位置 */
public void setMan(int x, int y){
manX = x;
manY = y;
}

/** 獲取主角在地圖中的X坐標(biāo) */
public int getManX(){
return manX;
}

/** 獲取主角在地圖中的y坐標(biāo) */
public int getMaxY(){
return manY;
}

/** 獲取(i,j)在地圖中的元素 */
public byte getMap(int i,int j){
return map[i][j];
}

/** 設(shè)置(i,j)的元素類型 */
public void setMap(int i,int j,byte t){
map[i][j]=t;
}

/** 獲取當(dāng)前等級 */
public int getLevel(){
return level;
}

/** 判斷(i,j)是否為空地 */
public boolean isGrassOrEnd(int i,int j){
if (map[i][j]==4||map[i][j]==9) return true;
return false;
}

/** 判斷(i,j)為箱子 */
public boolean isBox(int x,int y){
if (map[x][y]==2||map[x][y]==3) return true;
return false;
}

/** 判斷(i,j)是否在地圖上 */
public boolean inMap(int x,int y){
if (x>=0&&x=0&&y0) return true;
return false;
}

此時,游戲基礎(chǔ)的地圖類就完成了。

以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java游戲項目的練習(xí)題有哪些”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 99在线在线视频免费视频观看 | 国产精品久久久久久久久久直 | 国产精品久久毛片 | 四虎影院在线视频 | 国产精品一区二区不卡 | 国产三级黄色录像 | www成人免费视频 | 久久久成人啪啪免费网站 | 97精品国产97久久久久久 | 日本在线观看www | 91麻豆精品国产91久久久久 | 亚洲国产97在线精品一区 | 黄色成人毛片 | 国产成人精品日本亚洲网站 | 伊人色视频 | 久久99国产亚洲精品 | 老司机午夜免费福利 | 日本高清一道本 | 国产精品激情综合久久 | 国产一区二区三区成人久久片 | 曰本一级毛片免费 | 国产精品你懂的在线播放 | 亚洲国产欧美国产第一区二区三区 | 大陆一级毛片免费视频观看i | 久久两性 | 九九精品免视看国产成人 | 五月天 亚洲 | 欧美z0o| 99r在线精品| 毛片免费观看视频 | 久久91精品国产91久久跳舞 | 91久久亚洲精品一区二区 | 国产精品福利尤物youwu | 日本免费一区二区三区毛片 | a集毛片 | 不卡免费在线视频 | 久久狠狠婷婷丁香香蕉 | 国产国语一级a毛片高清视频 | 久久精品在线 | 爱爱免费视频网站 | 久久精品这里只有精品 |