【正文】
c u r r e n t c e l l a s n o r m a l e m p t y c e l lS e t c u r r e n t c e l l a s t a r g e t c e l l 圖 2 系統(tǒng)結構框圖 本程序包括 5 個程序 :該文件負責 寫入 主類 。 :該文件負責 載入 推箱子 的全部內(nèi)容。 :該文件負責 推箱子的測試 。 (new Command(Exit, , 0))。 (new Command(Previous,1))。 (new CommandListener() 2設定地圖大小比例 setMap(currentMap)。i 。j map[i].length。 } for(int i = 0。i++){ for(int j = 0。j++){ 本科課程設計論文 8 if(map[i][j] == 7 ||map[i][j] == 8){ curX = i。 break。nextFirstY = curY。nextSecondY = curY。 nextSecondX = curX 2。 } case 2:{//down nextFirstX = curX + 1。 break。 nextSecondY = curY 2。 } case 4:{//right nextFirstY = curY + 1。 break。在 GameCanvas上進行繪圖代替了直接在 Canvas繪圖。使用 GameCanvas可統(tǒng)一游戲的基本框架。每一個 Layer都有位置、大小、可見性等屬性,以及更改這些屬性的方法。 LayerManager類 LayerManager類負責管理 Layer,并通過按照一定的順序在畫布上進行來實現(xiàn)分層次的自動渲染。 Sprite類 Sprite類是 Layer的一個子類,它面上的意思是 “ 精靈 ” 。這個詞 早在紅白機 1之前的游戲開發(fā)中就被使用了,并沿用至今。一個 Sprite對象一表會包含好幾幀畫面,按照一定的順序和頻率顯示這些幀來實現(xiàn)動畫的效果。 TiledLayer類 TiledLayer 類是 Layer 的另一個子類。你可能聽說過基于磚塊的游戲這一提法,它的思想是把界面的背景畫面劃分成一個二維的表格,并使用不同的圖像磚塊去填充它。實現(xiàn)一個健壯的 Tile 類需要花費一些成本,幸運的是 TiledLayer 本科課程設計論文 10 就是基于 Tile 的地圖的一個很好的實現(xiàn)。 3 設計 總 結 本次課程設計,我學到了很多東西,從實踐中體會到了學習的樂趣,在做課程設計的的過程中,遇到了很多不懂的東西,這都怪自己上課不是很認真,沒有把老師教授給我們的東西一一消化,沒有在課后認真復習上課時老師講的知 識,雖然上課聽了,可是課后沒有好好復習,學到的知識也就不是很扎實! 在做 J2ME 課程設計中,自己遇到了很多問題,通過向同學的請教和老師的幫助,得到了解決,但是還是有很多不足之處,有很多地方還不是很完善,雖然能夠完成基本功能的運行,但還不是很理想的標準,需要進一步完善! 總的來講,此次的課程設計讓自己學到了新的知識,又鞏固了以前學的東西,自己做完這個課程設計,心里還是很開心的,雖然有點累,但是覺得很值得!同時,在這里也要感謝趙老師這個學期對我的教導,沒有 王 老師對我們細心的教誨,我想我不可能在現(xiàn)在完成這個課程設 計,在這里對 王 老師說聲“謝謝”。 本科課程設計論文 11 import 。 import 。 import 。 public class BoxMan extends GameCanvas implements Runnable{ Image image,winImage,allOver。 int curX,curY,nextFirstX ,nextFirstY ,nextSecondX ,nextSecondY。//1 for up,2 for down,3 for left,4 for right TiledLayer bg。 LayerManager layerManager。 MapSet mymap = new MapSet()。 int redBoxAll = 0,redBoxNow = 0。 public BoxMan(){ super(true)。 layerManager = new LayerManager()。 try{ image = (/Game/)。 allOver = (/Game/)。 } 本科課程設計論文 12 winSprite = new Sprite(winImage)。 (getWidth()/()/2, getHeight()/()/2)。 (false)。 (allOverSprite)。 (bg)。 for(int i = 0。i++){ for(int j = 0。j++) (j, i, map[i][j])。i。jmap[i].length。curY = j。 } } } (g, 0, 0)。 ()。 if(win == false){ 本科課程設計論文 13 if((keyStates amp。 moveMan()。 } if((keyStates amp。 moveMan()。 } if((keyStates amp。 moveMan()。 } if((keyStates amp。 moveMan()。 }} else{//win == true if((keyStates amp。 if(currentMap != ()){ win = false。 } else { win = true。 (g, 0, 0)。 本科課程設計論文 14 } } } try{ (100)。 } } } public void moveMan(){ nextFirstX = curX。 nextSecondX = curX。 switch(direction){ case 1:{//up nextFirstX = curX 1。 break。 nextSecondX = curX + 2。 } case 3:{//left nextFirstY = curY 1。 break。 nextSecondY = curY + 2。 } } 本科課程設計論文 15 try{ if(map[nextFirstX][nextFirstY] == 4 || map[nextFirstX][nextFirstY] == 5){ //box is in front of the man if(map[nextSecondX][nextSecondY] == 2) map[nextSecondX][