課程設計我的報告——基於ARM實驗箱的捕魚遊戲的設計與實現

課程設計我的報告——基於ARM實驗箱的捕魚遊戲的設計與實現

1、我的貢獻

  • 參與課設題目討論及部分過程html

  • 資料收集java

  • 負責代碼調試android

  • 捕魚遊戲相應功能的實現windows

實驗環境

  • Eclipse軟件開發環境;
  • ARM實驗箱(HonyaS5PC100);
  • windows操做系統。

實踐內容

  • Windows環境下ARM集成開發環境的搭建與使用;
  • 安裝軟件到模擬器;
  • 鏈接ARM實驗箱與PC機;
  • 將工程代碼在ARM實驗箱上實現;
  • 給程序增長新的功能。

實踐步驟

Windows環境下ARM集成開發環境的搭建與使用oracle

安裝JDK和配置Java開發環境app

一、安裝JDK開發環境

下載網站:http://www.oracle.com/eclipse

image

image

image

開始安裝JDK:fetch

image

修改安裝目錄以下:網站

image

肯定以後,單擊「下一步」。操作系統

注:當提示安裝JRE時,能夠選擇不要安裝。

二、配置環境變量:

對於Java程序開發而言,主要會使用JDK的兩個命令:javac.exe、java.exe。路徑:C:\Java\jdk 1.7.0 _09\bin。可是這些命令因爲不屬於windows本身的命令,因此要想使用,就須要進行路徑配置。

單擊「計算機-屬性-高級系統設置」,單擊「環境變量」。在「系統變量」欄下單擊「新建」,建立新的系統環境變量。

image

(1)新建->變量名"JAVA_HOME",變量值"C:\Java\jdk1.8.0_05"(即JDK的安裝路徑)

(2)編輯->變量名"Path",在原變量值的最後面加上「;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin」

(3)新建->變量名「CLASSPATH」,變量值「.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar」

三、確認環境配置是否真確:

在控制檯分別輸入java,javac,java -version 命令,出現以下所示的JDK的編譯器信息,包括修改命令的語法和參數選項等信息。

java命令:

image

image

javac命令:

image

java -version命令:

image

四、在控制檯下驗證第一個java程序:
public class Test {
    public static void main(String[] args) {    
    System.out.println("Hello Java");
    }
}

用記事本編寫好,點擊「保存」,並存入C盤根目錄後,輸入javac Test.java和java Test命令,便可運行程序(打印出結果「Hello Java」)。注:這兩個命令是在D:\java\jdk1.8.0_20\bin目錄下。

首先編寫java源代碼程序,擴展名.java;

在命令行模式中,輸入命令:javac 源文件名.java,對源代碼進行編譯,生成class字節碼文件;

編譯完成後,若是沒有報錯信息,輸入命令:java HelloWorld,對class字節碼文件進行解釋運行,執行時不須要添加.class擴展名。見下圖:

image

下載安裝android SDK

http://www.androiddevtools.cn/

image

找到SDK Tools,選擇下載windows的zip格式的。

下載後在須要安裝的位置解壓,獲得:

image

image

image

而後install

2、配置環境變量

右鍵個人電腦,打開屬性,點擊高級系統設置,打開環境變量:

一、新建一個環境變量名稱爲ANDROID_HOME,變量值爲當前安裝SDK的目錄

例如SDK裝在D:\androidSDK中,則環境變量爲:

二、把%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools添加到Path環境變量中。

3、檢測是否安裝成功

win+R,輸入cmd,打開命令提示符面板。

一、輸入android

image

image

二、輸入abd

2、設計中遇到的問題及解決方法

1.javac不是內部或外部命令,也不是可運行的程序或批處理文件。
image

緣由是由於沒有提早安裝好JDK開發環境或環境變量配置有誤。

2.在增長捕魚功能時,遇到的問題

實時調整

對機率進行調整,收入太高時下降機率,收入太低時提升機率,則對機率進行調整,增長實時調整參數AP(-10%<AP<10%):

  則擊殺機率調整爲:

當收入太高,下降AP,下降魚擊殺率,形成玩家純收入銳減。
當收入太低,提升AP,提升玩家收入,避免玩家流失。

  1. 遊戲初期,提升AP,提升金幣產出,增長玩家收入,強化爽快感,吸引玩家持續遊戲。

  2. 遊戲中期,適度調高和調低AP,形成收入波峯波谷(相似股票),吸引玩家充值,同時提升遊戲黏度。

  3. 遊戲後期,下降AP,提升玩家衝擊高分的難度,強化玩家以前的比拼,吸引玩家充值,提升收入。

倍數

倍數:玩家可選擇倍數,提升子彈的消耗N倍,擊殺魚後得到的金幣量N倍。

  例如,1倍下,豌豆消耗1金幣,殺死魚得到10金幣。10倍下,子彈消耗10金幣,殺死魚得到100金幣。

  倍數設置值爲1倍、2倍、5倍、10倍、20倍、50倍、100倍。

  玩家開啓某個倍數,受其等級限制、房間上限倍數限制。

房間機率調整

咱們將房間分爲初級、中級、高級三種房間。根據其房間的定位,調整在該房間內,玩家擊殺殭屍的機率:
初級房:只能使用低倍數,提升擊殺機率,隨便打打就能夠贏錢。
中級房:能夠調整高低倍數,平衡擊殺機率,掌握技巧可基本收支平衡。
高級房:能夠開啓最高倍數,略微下降擊殺機率,賺得多賠得多。

  加入房間參數RP後,擊殺機率公式被調整爲

捕魚類遊戲計算方式的設計思路

  建議初級房的RP爲+10%,中間房爲0,高級房爲-8%(數值可配置,具體數據以實際調整後爲準)。

3、調試過程當中遇到的主要問題及解決方法

1.領頭魚

首先要設計一個對魚類來講一個必須的類--領頭魚類~HeadFish~,這個類並非實質的魚,而是一個點,這個點帶領着全部魚羣遊動。該類決定了魚羣的~X~,~Y~座標,~遊動方向~,~旋轉角度~和~旋轉方向~。

public class HeadFish {
private int[] fishOutlinePoint = new int[4];        //魚的外接矩形,x的最小值,最大值,Y的最小值,最大值
//控制魚移動的線程
private FishRunThread fishRunThread;        
private boolean isNew = true;                       //是否剛生成的魚   這個參數決定着進入屏幕時候的路線
private float fish_x;                               //魚當前的X座標
private float fish_y;                               //魚當前的Y座標
private int currentRotate;                          //魚當前已旋轉的角度
private float lastX;                                //最後一次旋轉後的X增量   這組XY的做用是旋轉後若走直線,就以這兩個值
private float lastY;                                //最後一次旋轉後的Y增量   遞增就能夠了
private int rotateDirection;                        //左轉仍是右轉    這個值的用途在於,魚在旋轉後走直線時,要計算最後一次旋轉後的增量,而這個記錄了上次是左轉仍是右轉用於計算角度得知直線時的增量
//當前魚羣的魚,魚羣的魚都已它爲參照,一樣這個魚也在魚羣集合裏
private Fish fish;
//魚羣
private ArrayList<Fish> shoal = new ArrayList<Fish>();
//當前建立的領頭魚的起始位置
private int currentFromPoint;

且生成~get~、~set~方法,爲後面的方法調用賦值作準備。

在類~ShoalManager~中有一個生成領頭魚的方法:~birthHeadFish~。該方法能夠建立一頭領頭魚,領頭魚的出現也就使得魚羣得以出現,建立完成以後,將方向設置到類屬性~currentFromPoint~上,供魚羣使用。

2.豐富多彩的魚類

image

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<key>fishActConfig</key>
<string>fish/fish;fish/fish2;fish/fish3;fish/seamaid</string>
<key>fishInfoConfig</key>
<string>fish/FishInfo</string>
</plist>

initFishInfo方法初始化了魚的配置信息,如魚的圖層ID,魚的動做速度,魚的價值,魚的捕捉機率等,關鍵代碼以下:

private void initFishInfo(String config){
try{
    //若是配置信息沒有找到,拋出異常
    if(config==null){
        throw new Exception("FishManager:讀取配置文件出錯,沒有找到fishInfoConfig信息");
    }
    //加載魚的基本信息配置文件
    XmlPullParser xml = XmlManager.getXmlParser(config, "UTF-8");
    //解析全部的魚的基本信息
while(GamingInfo.getGamingInfo().isGaming()&&XmlManager.gotoTagByTagName(xml, "key")){
        XmlManager.gotoTagByTagName(xml, "string");
        String fishName = XmlManager.getValueByCurrentTag(xml);
        FishInfo fishInfo = new FishInfo();
        //設置最大旋轉角度
        XmlManager.gotoTagByTagName(xml, "integer");            fishInfo.setMaxRotate(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));
        //設置移動速度
        XmlManager.gotoTagByTagName(xml, "integer");        fishInfo.setFishRunSpeed(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));
        //設置動做速度
        XmlManager.gotoTagByTagName(xml, "integer");
fishInfo.setActSpeed(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));
        //設置魚羣最大數量
        XmlManager.gotoTagByTagName(xml, "integer");        fishInfo.setFishShoalMax(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));
        //設置魚的圖層ID
        XmlManager.gotoTagByTagName(xml, "integer");
fishInfo.setFishInLayer(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));
        //設置魚的價值
        XmlManager.gotoTagByTagName(xml, "integer");
    fishInfo.setWorth(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));
        //設置魚的捕捉機率
        XmlManager.gotoTagByTagName(xml, "integer");            fishInfo.setCatchProbability(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)))
        allFishConfig.put(fishName, fishInfo);
    }
}catch(Exception e){
    e.printStackTrace();
}
}

3.Eclipse中的source not found change at.

須要把源碼src.zip添加進去,源碼src.zip通常放在java的jdk目錄下面

4.Adb啓動失敗

當咱們經過eclipse開發Android應用時,安卓模擬器啓動失敗,提示這樣的錯誤:ADB server didn’t ACK。

5.解決Android SDK Manager的Download interrupted: URL not found問題

選中「Force https : sources to be fetched using http:」複選框。設置完成後單擊 Close 按鈕關閉 Android SDK Manager - Settings 窗口返回到主界面,再依次選擇 Packages、Reload。

4、設計體會及收穫

本次設計在同組小夥伴的共同努力和老師的悉心指導下順利完成。咱們小組的課題是基於ARM實驗箱實現捕魚遊戲,最主要的部分就是環境配置以及對實驗代碼的理解。課題的重點和難點在於ARM實驗箱的操做,首先須要將PC機與ARM實驗箱鏈接,才能將工程成功的在ARM實驗箱上運行顯示以及執行相應的操做。我主要是負責的代碼部分,其中包括捕魚遊戲相應功能的實現,其中在倍數、實時調整、房間機率調整部分有了新的理解。雖然本次設計有必定的困難,可是不能由於困難就放棄,經過不一樣的方法去解決問題纔是最終的目的,也是我以爲最重要的東西。

5、參考資料(圖書、網址…)

http://www.javashuo.com/article/p-byneznyf-cb.html

https://blog.csdn.net/zeternityyt/article/details/79655150

https://blog.csdn.net/mergerly/article/details/71505123

http://bbs.gameres.com/thread_463918_1_1.html

https://blog.csdn.net/gongyuan073/article/details/12580011

相關文章
相關標籤/搜索