1. 程式人生 > >20162302 實驗五《數據結構綜合應用》實驗報告

20162302 實驗五《數據結構綜合應用》實驗報告

關閉 結束 idea ima 關卡 set start 箱子 game

實 驗 報 告

課程:程序設計與數據結構

姓名:楊京典

班級:1623

學號:20162302

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

實驗器材:裝有IdeaU的聯想拯救者15ISK


實驗目的與要求:

1.編譯運行測試
2.代碼修改
3.代碼分析

實驗內容、步驟與體會:

實驗內容:


編譯運行測試

  • 點擊紅色圈出來的地方
    技術分享圖片
  • 選擇虛擬機也可以選擇連在usb上的物理機,在這裏就選擇虛擬機
    技術分享圖片
  • 運行成功
    技術分享圖片
    技術分享圖片
  • 測試按下方向鍵會向不同方向移動,並記錄按鍵步數
    技術分享圖片
  • 把箱子推到指定位置會出現過關畫面並播放一小段音樂
    技術分享圖片

代碼修改

  • 增加按鍵效果
    原來的代碼是

        choose.setOnClickListener
    (new View.OnTouchListener() { @Override public void onTouch(View v) { Intent intent = new Intent(MainActivity.this, GameOption.class); startActivity(intent); } })

    setOnClickListener改為setOnTouchListener以獲取點擊擡起來的事件。在按下的時候更換圖片,在擡起來後更換新的圖片。

        choose.setOnTouchListener
    (new View.OnTouchListener() { @Override //設置監聽事件 public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { //更改為按下時的背景圖片 v.setBackgroundResource(R.mipmap.chooes1); } else if (event.getAction
    () == MotionEvent.ACTION_UP) { //改為擡起時的圖片 v.setBackgroundResource(R.mipmap.chooes); //新建一個本活動到排行榜界面的intent Intent intent = new Intent(MainActivity.this, GameOption.class); //啟動這個intent startActivity(intent); } return false; } });
  • 增加新的關卡
    這一更改相對來說要簡單得多,關卡以二維數組的形式存儲在GameLevels裏面,增加關卡首先要增加一個二維數組。

    public static final int [][] LEVEL_11 = {
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0,0 ,0 ,0 ,0, 0, 0,  0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,5 ,1 ,4 ,1 ,1 ,1, 2, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0 ,0, 0 ,0 ,0 ,0 ,0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    };

    然後把這一關卡加到list裏面

    OriginalLevels.add(LEVEL_11);

    運行結果
    技術分享圖片

代碼分析

  • 主界面是MainActivity上面有四個按鍵是到各個界面的樞紐。
  • SysApplication類實現了對活動的管理,把所有的活動都放到list裏面,在結束活動的時候可以逐一結束所有活動。
  • 選項按鈕連接到GameOption活動,可以實現對於音樂的打開和關閉。
  • 開始按鈕連接到GameLevelActivity界面,這個按鈕是選關按鈕,這個界面使用ArrayAdapter自動生成相應關卡數目的按鈕。
  • 這一方法調用GameLevels類,這個類是用來儲存關卡的,可以獲取所點擊到的相應的關卡數。
  • 然後將獲取的二維數組傳遞到下一活動GameActivity,這一活動是負責關卡的核心,調用GameState進行矩陣運算實時生成新的矩陣。
  • GameBitmaps類負責將矩陣實時轉換成圖像界面。

20162302 實驗五《數據結構綜合應用》實驗報告