课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现
課程設(shè)計(jì)個(gè)人報(bào)告——基于ARM實(shí)驗(yàn)箱的捕魚游戲的設(shè)計(jì)與實(shí)現(xiàn)
一、個(gè)人貢獻(xiàn)
參與課設(shè)題目討論及部分過程
資料收集
負(fù)責(zé)代碼調(diào)試
捕魚游戲相應(yīng)功能的實(shí)現(xiàn)
實(shí)驗(yàn)環(huán)境
- Eclipse軟件開發(fā)環(huán)境;
- ARM實(shí)驗(yàn)箱(HonyaS5PC100);
- windows操作系統(tǒng)。
實(shí)踐內(nèi)容
- Windows環(huán)境下ARM集成開發(fā)環(huán)境的搭建與使用;
- 安裝軟件到模擬器;
- 連接ARM實(shí)驗(yàn)箱與PC機(jī);
- 將工程代碼在ARM實(shí)驗(yàn)箱上實(shí)現(xiàn);
- 給程序增加新的功能。
實(shí)踐步驟
Windows環(huán)境下ARM集成開發(fā)環(huán)境的搭建與使用
安裝JDK和配置Java開發(fā)環(huán)境
1、安裝JDK開發(fā)環(huán)境
下載網(wǎng)站:http://www.oracle.com/
開始安裝JDK:
修改安裝目錄如下:
確定之后,單擊“下一步”。
注:當(dāng)提示安裝JRE時(shí),可以選擇不要安裝。
2、配置環(huán)境變量:
對(duì)于Java程序開發(fā)而言,主要會(huì)使用JDK的兩個(gè)命令:javac.exe、java.exe。路徑:C:\Java\jdk 1.7.0 _09\bin。但是這些命令由于不屬于windows自己的命令,所以要想使用,就需要進(jìn)行路徑配置。
單擊“計(jì)算機(jī)-屬性-高級(jí)系統(tǒng)設(shè)置”,單擊“環(huán)境變量”。在“系統(tǒng)變量”欄下單擊“新建”,創(chuàng)建新的系統(tǒng)環(huán)境變量。
(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”
3、確認(rèn)環(huán)境配置是否真確:
在控制臺(tái)分別輸入java,javac,java -version 命令,出現(xiàn)如下所示的JDK的編譯器信息,包括修改命令的語法和參數(shù)選項(xiàng)等信息。
java命令:
javac命令:
java -version命令:
4、在控制臺(tái)下驗(yàn)證第一個(gè)java程序:
public class Test {public static void main(String[] args) { System.out.println("Hello Java");} }用記事本編寫好,點(diǎn)擊“保存”,并存入C盤根目錄后,輸入javac Test.java和java Test命令,即可運(yùn)行程序(打印出結(jié)果“Hello Java”)。注:這兩個(gè)命令是在D:\java\jdk1.8.0_20\bin目錄下。
首先編寫java源代碼程序,擴(kuò)展名.java;
在命令行模式中,輸入命令:javac 源文件名.java,對(duì)源代碼進(jìn)行編譯,生成class字節(jié)碼文件;
編譯完成后,如果沒有報(bào)錯(cuò)信息,輸入命令:java HelloWorld,對(duì)class字節(jié)碼文件進(jìn)行解釋運(yùn)行,執(zhí)行時(shí)不需要添加.class擴(kuò)展名。見下圖:
下載安裝android SDK
http://www.androiddevtools.cn/
找到SDK Tools,選擇下載windows的zip格式的。
下載后在需要安裝的位置解壓,得到:
然后install
二、配置環(huán)境變量
右鍵我的電腦,打開屬性,點(diǎn)擊高級(jí)系統(tǒng)設(shè)置,打開環(huán)境變量:
1、新建一個(gè)環(huán)境變量名稱為ANDROID_HOME,變量值為當(dāng)前安裝SDK的目錄
例如SDK裝在D:\androidSDK中,則環(huán)境變量為:
2、把%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools添加到Path環(huán)境變量中。
三、檢測(cè)是否安裝成功
win+R,輸入cmd,打開命令提示符面板。
1、輸入android
2、輸入abd
二、設(shè)計(jì)中遇到的問題及解決方法
1.javac不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。
原因是因?yàn)闆]有提前安裝好JDK開發(fā)環(huán)境或環(huán)境變量配置有誤。
2.在增加捕魚功能時(shí),遇到的問題
實(shí)時(shí)調(diào)整
對(duì)概率進(jìn)行調(diào)整,收入過高時(shí)降低概率,收入過低時(shí)提高概率,則對(duì)概率進(jìn)行調(diào)整,增加實(shí)時(shí)調(diào)整參數(shù)AP(-10%<AP<10%):
則擊殺概率調(diào)整為:
當(dāng)收入過高,降低AP,降低魚擊殺率,造成玩家純收入銳減。
當(dāng)收入過低,提高AP,提高玩家收入,避免玩家流失。
游戲初期,提高AP,提高金幣產(chǎn)出,增加玩家收入,強(qiáng)化爽快感,吸引玩家持續(xù)游戲。
游戲中期,適度調(diào)高和調(diào)低AP,造成收入波峰波谷(類似股票),吸引玩家充值,同時(shí)提高游戲黏度。
游戲后期,降低AP,提高玩家沖擊高分的難度,強(qiáng)化玩家之前的比拼,吸引玩家充值,提高收入。
倍數(shù)
倍數(shù):玩家可選擇倍數(shù),提高子彈的消耗N倍,擊殺魚后獲得的金幣量N倍。
例如,1倍下,豌豆消耗1金幣,殺死魚獲得10金幣。10倍下,子彈消耗10金幣,殺死魚獲得100金幣。
倍數(shù)設(shè)置值為1倍、2倍、5倍、10倍、20倍、50倍、100倍。
玩家開啟某個(gè)倍數(shù),受其等級(jí)限制、房間上限倍數(shù)限制。
房間概率調(diào)整
我們將房間分為初級(jí)、中級(jí)、高級(jí)三種房間。根據(jù)其房間的定位,調(diào)整在該房間內(nèi),玩家擊殺僵尸的概率:
初級(jí)房:只能使用低倍數(shù),提高擊殺概率,隨便打打就可以贏錢。
中級(jí)房:可以調(diào)整高低倍數(shù),平衡擊殺概率,掌握技巧可基本收支平衡。
高級(jí)房:可以開啟最高倍數(shù),略微降低擊殺概率,賺得多賠得多。
加入房間參數(shù)RP后,擊殺概率公式被調(diào)整為
捕魚類游戲計(jì)算方式的設(shè)計(jì)思路
建議初級(jí)房的RP為+10%,中間房為0,高級(jí)房為-8%(數(shù)值可配置,具體數(shù)據(jù)以實(shí)際調(diào)整后為準(zhǔn))。
三、調(diào)試過程中遇到的主要問題及解決方法
1.領(lǐng)頭魚
首先要設(shè)計(jì)一個(gè)對(duì)魚類來說一個(gè)必須的類--領(lǐng)頭魚類~HeadFish~,這個(gè)類并不是實(shí)質(zhì)的魚,而是一個(gè)點(diǎn),這個(gè)點(diǎn)帶領(lǐng)著所有魚群游動(dòng)。該類決定了魚群的~X~,~Y~坐標(biāo),~游動(dòng)方向~,~旋轉(zhuǎn)角度~和~旋轉(zhuǎn)方向~。
public class HeadFish { private int[] fishOutlinePoint = new int[4]; //魚的外接矩形,x的最小值,最大值,Y的最小值,最大值 //控制魚移動(dòng)的線程 private FishRunThread fishRunThread; private boolean isNew = true; //是否剛生成的魚 這個(gè)參數(shù)決定著進(jìn)入屏幕時(shí)候的路線 private float fish_x; //魚當(dāng)前的X坐標(biāo) private float fish_y; //魚當(dāng)前的Y坐標(biāo) private int currentRotate; //魚當(dāng)前已旋轉(zhuǎn)的角度 private float lastX; //最后一次旋轉(zhuǎn)后的X增量 這組XY的作用是旋轉(zhuǎn)后若走直線,就以這兩個(gè)值 private float lastY; //最后一次旋轉(zhuǎn)后的Y增量 遞增就可以了 private int rotateDirection; //左轉(zhuǎn)還是右轉(zhuǎn) 這個(gè)值的用途在于,魚在旋轉(zhuǎn)后走直線時(shí),要計(jì)算最后一次旋轉(zhuǎn)后的增量,而這個(gè)記錄了上次是左轉(zhuǎn)還是右轉(zhuǎn)用于計(jì)算角度得知直線時(shí)的增量 //當(dāng)前魚群的魚,魚群的魚都已它為參照,同樣這個(gè)魚也在魚群集合里 private Fish fish; //魚群 private ArrayList<Fish> shoal = new ArrayList<Fish>(); //當(dāng)前創(chuàng)建的領(lǐng)頭魚的起始位置 private int currentFromPoint;且生成~get~、~set~方法,為后面的方法調(diào)用賦值做準(zhǔn)備。
在類~ShoalManager~中有一個(gè)生成領(lǐng)頭魚的方法:~birthHeadFish~。該方法可以創(chuàng)建一頭領(lǐng)頭魚,領(lǐng)頭魚的出現(xiàn)也就使得魚群得以出現(xiàn),創(chuàng)建完成之后,將方向設(shè)置到類屬性~currentFromPoint~上,供魚群使用。
2.豐富多彩的魚類
<?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,魚的動(dòng)作速度,魚的價(jià)值,魚的捕捉概率等,關(guān)鍵代碼如下:
private void initFishInfo(String config){ try{//如果配置信息沒有找到,拋出異常if(config==null){throw new Exception("FishManager:讀取配置文件出錯(cuò),沒有找到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();//設(shè)置最大旋轉(zhuǎn)角度XmlManager.gotoTagByTagName(xml, "integer"); fishInfo.setMaxRotate(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));//設(shè)置移動(dòng)速度XmlManager.gotoTagByTagName(xml, "integer"); fishInfo.setFishRunSpeed(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));//設(shè)置動(dòng)作速度XmlManager.gotoTagByTagName(xml, "integer"); fishInfo.setActSpeed(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));//設(shè)置魚群最大數(shù)量XmlManager.gotoTagByTagName(xml, "integer"); fishInfo.setFishShoalMax(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));//設(shè)置魚的圖層IDXmlManager.gotoTagByTagName(xml, "integer"); fishInfo.setFishInLayer(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));//設(shè)置魚的價(jià)值XmlManager.gotoTagByTagName(xml, "integer");fishInfo.setWorth(Integer.parseInt(XmlManager.getValueByCurrentTag(xml)));//設(shè)置魚的捕捉概率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添加進(jìn)去,源碼src.zip一般放在java的jdk目錄下面
4.Adb啟動(dòng)失敗
當(dāng)我們通過eclipse開發(fā)Android應(yīng)用時(shí),安卓模擬器啟動(dòng)失敗,提示這樣的錯(cuò)誤:ADB server didn’t ACK。
5.解決Android SDK Manager的Download interrupted: URL not found問題
選中“Force https : sources to be fetched using http:”復(fù)選框。設(shè)置完成后單擊 Close 按鈕關(guān)閉 Android SDK Manager - Settings 窗口返回到主界面,再依次選擇 Packages、Reload。
四、設(shè)計(jì)體會(huì)及收獲
本次設(shè)計(jì)在同組小伙伴的共同努力和老師的悉心指導(dǎo)下順利完成。我們小組的課題是基于ARM實(shí)驗(yàn)箱實(shí)現(xiàn)捕魚游戲,最主要的部分就是環(huán)境配置以及對(duì)實(shí)驗(yàn)代碼的理解。課題的重點(diǎn)和難點(diǎn)在于ARM實(shí)驗(yàn)箱的操作,首先需要將PC機(jī)與ARM實(shí)驗(yàn)箱連接,才能將工程成功的在ARM實(shí)驗(yàn)箱上運(yùn)行顯示以及執(zhí)行相應(yīng)的操作。我主要是負(fù)責(zé)的代碼部分,其中包括捕魚游戲相應(yīng)功能的實(shí)現(xiàn),其中在倍數(shù)、實(shí)時(shí)調(diào)整、房間概率調(diào)整部分有了新的理解。雖然本次設(shè)計(jì)有一定的困難,但是不能因?yàn)槔щy就放棄,通過不同的方法去解決問題才是最終的目的,也是我覺得最重要的東西。
五、參考資料(圖書、網(wǎng)址…)
https://www.cnblogs.com/smyhvae/p/3788534.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
轉(zhuǎn)載于:https://www.cnblogs.com/wang5324/p/9129814.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20180530
- 下一篇: 6.Django与Ajax