1. 程式人生 > >20162329 實驗五:數據結構綜合應用

20162329 實驗五:數據結構綜合應用

選擇 方法 抄襲 應用 編譯運行 嵌套 raw clone mage

實驗五:數據結構綜合應用

課程:程序設計與數據結構
班級: 1623
姓名: 張旭升
學號:20162329
指導教師:婁嘉鵬 王誌強
實驗日期:12月15日

實驗密級: 非密級
預習程度: 已預習

必修/選修: 必修
實驗序號: cs_29

實驗名稱: 數據結構綜合應用

實驗內容:

1.分析系統架構

2.編譯、運行、測試系統

3.修改系統

4.分析數據結構、排序、查找算法的應用

實驗要求


1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程

  1. 完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,註意實驗報告重點是 運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決 辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可 以得到什麽啟示,有什麽收獲,教訓等)。報告可以參考範飛龍老師的指導

  2. 嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。


一、系統架構分析

遊戲系統架構圖:

技術分享圖片

由圖看得出我們的遊戲大致實行的是一種類似線性的結構,由主界面的三個個按鈕分為三大塊

  • 選擇關卡——遊戲界面——勝利界面
  • 選項界面
  • 關於我們
    每一塊都是由上一個活動到下一個活動的類似線性連接

二、編譯,運行,測試系統

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 實驗五:數據結構綜合應用