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

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

Java游戲項目的練習題有哪些

更新時間:2020-08-28 15:35:34 來源:動力節點 瀏覽2480次

一、游戲功能

游戲由障礙、空地、箱子、終點與玩家組成。

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

當所有箱子都處于終點時,游戲勝利,按回車鍵進入下一關。當完成所有關卡時,按回車鍵結束游戲。

在游戲中按R建重新開始本關。

二、素材準備

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

三、游戲的大致框架

首先最容易想到的是一個管理地圖信息的Map類,其中應該包括一個關卡地圖中的所有信息。

其次應該有一個DataManager類來從文件中讀取地圖、讀取圖片,并能根據讀入的地圖文件與關卡編號創造出所需的Map類的對象。

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

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

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

四、地圖類的設計

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

private int manX,manY;//主角所在位置的坐標

private byte map[][];//二維地圖元素數組

private int level;//當前地圖的等級

對于每一種地圖元素,我們都需要用一個數字來表示。因此我們定義一些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;

考慮到進入下一個關卡與重置本關都要新建一個Map對象,因此構造方法有兩種,一種傳入level,一種則不需要。

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

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

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

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

/** 初始化一個地圖對象 */
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;
}
}
}
}

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

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

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

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

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

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

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

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

/** 獲取當前等級 */
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;
}

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

以上就是動力節點java培訓機構的小編針對“Java游戲項目的練習題有哪些”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美成人毛片在线视频 | 国产91在线chines看 | 最新日本一级中文字幕 | 99久久精品免费看国产免费 | 最近手机中文字幕1页 | 国产精品一级毛片不收费 | 欧美视频久久久 | 日本一区二区三区中文字幕 | 亚洲欧美精品一中文字幕 | 97国产精品视频观看一 | 久久亚洲国产成人影院 | 久久网站免费 | 国产色丁香久久综合 | 亚洲性色视频 | 成人免费一级毛片在线播放视频 | 国产高清成人mv在线观看 | 午夜禁片| 国产免费不卡 | 天天射天天色天天干 | 久久久噜久噜久久综合 | 久久这里只有精品66re99 | 天天操夜夜艹 | 最新国产一区二区精品久久 | 久久在线一区 | 国产成人经典三级在线观看 | 精品国产综合区久久久久久 | 在线私人影院 | 成人亚洲欧美 | 国产色婷婷精品综合在线观看 | 超碰v| 女人用粗大自熨喷水在线视频 | 精品午夜国产在线观看不卡 | 久久99国产精品久久 | 国产美女亚洲精品久久久久久 | 一区两区三不卡 | 波多野结衣中文一区二区免费 | 欧美japanese孕交 | 97看片吧| 久久午夜精品 | 91精品国产91久久久久久 | 成年人色视频 |