20162329 實驗五:數據結構綜合應用
實驗五:數據結構綜合應用
課程:程序設計與數據結構
班級: 1623
姓名: 張旭升
學號:20162329
指導教師:婁嘉鵬 王誌強
實驗日期:12月15日
實驗密級: 非密級
預習程度: 已預習
必修/選修: 必修
實驗序號: cs_29
實驗名稱: 數據結構綜合應用
實驗內容:
1.分析系統架構
2.編譯、運行、測試系統
3.修改系統
4.分析數據結構、排序、查找算法的應用
實驗要求
1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程
完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,註意實驗報告重點是 運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決 辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可 以得到什麽啟示,有什麽收獲,教訓等)。報告可以參考範飛龍老師的指導
嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。
一、系統架構分析
遊戲系統架構圖:
由圖看得出我們的遊戲大致實行的是一種類似線性的結構,由主界面的三個個按鈕分為三大塊
- 選擇關卡——遊戲界面——勝利界面
- 選項界面
- 關於我們
每一塊都是由上一個活動到下一個活動的類似線性連接
二、編譯,運行,測試系統
1.克隆項目到目標文件夾:
建立自己的文件夾——打開命令行——進入目標文件夾——git clone + 目標鏈接 —— 輸入用戶名,密碼 —— 克隆成功
2.編譯,運行
打開Android Studio —— 打開項目(自動編譯) —— 運行項目
三、修改系統
1.顯示學號信息
在遊戲的選項界面的布局文件中加入一個Button,按鈕文字設置為自己名字 —— 在GameOption活動中獲取按鈕組件 —— 然後為按鈕設置監聽器 —— 當點擊按鈕時發出一條Tost消息顯示學號
2.修改界面樣式
選擇關卡原樣式
修改後樣式
四、分析數據結構,查找,排序算法的應用
實現查找的部分代碼:
int [][] labelInCells = mGameActivity.getCurrentState().getLabelInCells(); for (int r = 0; r < labelInCells.length; r++) //逐行地掃描矩陣 for (int c = 0; c < labelInCells[r].length; c++){ //對當前行r,逐列地掃描 destRect = getRect(r, c); //得到圖片在屏幕中的顯示區域 srcRect = new Rect(0, 0,GameBitmaps.FlagBitmap.getWidth(), GameBitmaps.FlagBitmap.getHeight());//獲得顯示圖片的大小 switch (labelInCells[r][c]){ case 1: canvas.drawBitmap(GameBitmaps.FloorBitmap,srcRect,destRect,null); //繪制地板 break; case 2: canvas.drawBitmap(GameBitmaps.FlagBitmap, srcRect, destRect, null); //繪制標記 break; case 3: canvas.drawBitmap(GameBitmaps.WallBitmap, srcRect, destRect, null); //繪制墻 break; case 4: canvas.drawBitmap(GameBitmaps.BoxBitmap, srcRect, destRect, null); //繪制箱子 break; case 5: canvas.drawBitmap(GameBitmaps.ManBitmap, srcRect, destRect, null); //繪制人 break; case 6: canvas.drawBitmap(GameBitmaps.ReadboxBitmap, srcRect, destRect, null); //繪制紅箱子 break; }
在以上代碼中先獲取到表示地圖的一個二位數組,然後運用一個嵌套的for循環語句對數組中元素進行蠻力法查找地板,小人,墻,箱子等的位置,然後根據查找結果繪制對應圖片。
五、實驗心得
本次實驗重在考察我們對自己項目的了解程度,主要通過項目的分析,克隆,部分修改結果,來體現,經過本次實驗,我感覺到我們組的遊戲在數據結構的運用上並不是很明顯,可能是第一次做項目經驗不足的原因,從一開始的規劃就不是很完善,導致結果並不理想,希望以後自己可以吸取這次的教訓有所提高。
20162329 實驗五:數據結構綜合應用