• 课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现


    课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现

    一、个人贡献

    • 参与课设题目讨论及部分过程

    • 资料收集

    • 负责代码调试

    • 捕鱼游戏相应功能的实现

    实验环境

    • Eclipse软件开发环境;
    • ARM实验箱(HonyaS5PC100);
    • windows操作系统。

    实践内容

    • Windows环境下ARM集成开发环境的搭建与使用;
    • 安装软件到模拟器;
    • 连接ARM实验箱与PC机;
    • 将工程代码在ARM实验箱上实现;
    • 给程序增加新的功能。

    实践步骤

    Windows环境下ARM集成开发环境的搭建与使用

    安装JDK和配置Java开发环境

    1、安装JDK开发环境

    下载网站:http://www.oracle.com/

    image

    image

    image

    开始安装JDK:

    image

    修改安装目录如下:

    image

    确定之后,单击“下一步”。

    注:当提示安装JRE时,可以选择不要安装。

    2、配置环境变量:

    对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe、java.exe。路径:C:Javajdk 1.7.0 _09in。但是这些命令由于不属于windows自己的命令,所以要想使用,就需要进行路径配置。

    单击“计算机-属性-高级系统设置”,单击“环境变量”。在“系统变量”栏下单击“新建”,创建新的系统环境变量。

    image

    (1)新建->变量名"JAVA_HOME",变量值"C:Javajdk1.8.0_05"(即JDK的安装路径)

    (2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%in;%JAVA_HOME%jrein”

    (3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar”

    3、确认环境配置是否真确:

    在控制台分别输入java,javac,java -version 命令,出现如下所示的JDK的编译器信息,包括修改命令的语法和参数选项等信息。

    java命令:

    image

    image

    javac命令:

    image

    java -version命令:

    image

    4、在控制台下验证第一个java程序:
    public class Test {
        public static void main(String[] args) {    
        System.out.println("Hello Java");
        }
    }
    

    用记事本编写好,点击“保存”,并存入C盘根目录后,输入javac Test.java和java Test命令,即可运行程序(打印出结果“Hello Java”)。注:这两个命令是在D:javajdk1.8.0_20in目录下。

    首先编写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

    二、配置环境变量

    右键我的电脑,打开属性,点击高级系统设置,打开环境变量:

    1、新建一个环境变量名称为ANDROID_HOME,变量值为当前安装SDK的目录

    例如SDK装在D:androidSDK中,则环境变量为:

    2、把%ANDROID_SDK_HOME%platform-tools;%ANDROID_SDK_HOME% ools添加到Path环境变量中。

    三、检测是否安装成功

    win+R,输入cmd,打开命令提示符面板。

    1、输入android

    image

    image

    2、输入abd

    二、设计中遇到的问题及解决方法

    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%(数值可配置,具体数据以实际调整后为准)。

    三、调试过程中遇到的主要问题及解决方法

    1.领头鱼

    首先要设计一个对鱼类来说一个必须的类--领头鱼类HeadFish,这个类并不是实质的鱼,而是一个点,这个点带领着所有鱼群游动。该类决定了鱼群的XY坐标,游动方向旋转角度旋转方向

    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;
    

    且生成getset方法,为后面的方法调用赋值做准备。

    在类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。

    四、设计体会及收获

    本次设计在同组小伙伴的共同努力和老师的悉心指导下顺利完成。我们小组的课题是基于ARM实验箱实现捕鱼游戏,最主要的部分就是环境配置以及对实验代码的理解。课题的重点和难点在于ARM实验箱的操作,首先需要将PC机与ARM实验箱连接,才能将工程成功的在ARM实验箱上运行显示以及执行相应的操作。我主要是负责的代码部分,其中包括捕鱼游戏相应功能的实现,其中在倍数、实时调整、房间概率调整部分有了新的理解。虽然本次设计有一定的困难,但是不能因为困难就放弃,通过不同的方法去解决问题才是最终的目的,也是我觉得最重要的东西。

    五、参考资料(图书、网址…)

    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

  • 相关阅读:
    简单读取网上的文本文件
    学习官方示例 System.RunError
    上周热点回顾(9.209.26)
    上周热点回顾(9.69.12)
    中国程序员节,10月24日,你同意吗?
    上周热点回顾(9.139.19)
    博客园电子期刊2010年8月刊发布啦
    [每周特惠]敏捷软件开发(原书第2版) +敏捷开发的艺术
    Meego专题上线了
    【投票】中国程序员节选在哪天
  • 原文地址:https://www.cnblogs.com/wang5324/p/9129814.html
Copyright © 2020-2023  润新知