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


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

    一、个人贡献

    • 实验环境的搭建
    • 代码调试
    • 在电脑上成功运行
    • 实现了arm的配置
    • 实现了游戏在arm游戏实验箱上的使用
    • 理解游戏的整体思路与各模块的大致功能

    二、实验环境

    • Eclipse软件开发环境;
    • windows操作系统。
    • arm实验箱的配置。

    三、实践内容

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

    四、第一周进展

    本周计划完成实验环境搭载和电脑模拟器对捕鱼游戏的实现。
    本周实际完成了下载安装了jdk,并在本机上设置好了环境变量,下载并安装了eclipse,然后下载了adt插件并引入到了eclipse上。最后下载安装了sdk,配置好了环境变量,在eclipse上打开avd,打开了安卓模拟器。完成了一个安卓helloworld的实现和老师的代码实现,即成功打开捕鱼游戏在电脑上能玩。

    遇到的问题:

    • 1,本周自己开始课设较晚,开始之后就加快脚步的学习和完成。
    • 2,一开始jdk安装成了32位的,虽然配置好了环境变量,但是与后面eclipse的64位不兼容,导致无法使用,后面重新下载了jdk64位的,才能继续使用。
    • 3,安装adt的时候一开始一直解压导致,install new software 一直出错,后面直接导入压缩包就能继续使用,并成功将插件导入到eclipse中。
    • 4,安装sdk时下载,电脑出现Failed to rename directory,通过网上百度
    • 1)将temp文件夹下的ToolPackage.new01改名为tools;
    • 2)将(1)中得到的tools文件夹拷到SDK的根目录下,覆盖原来的tools文件夹;
    • 3)重启SDK Manager.exe,再进行更新即可.
    • 5,安装sdk中的安卓版本一开始安装的是版本9,在avd上无法实现,后面出现下载了安卓4.4就能成功打开avd。
    • 6,是因为下载了28的buildtools与其不兼容,重现下来25.0.3的版本就能正常使用。
    • 7,后面发现是jdk安装成12版本导致后面用不了,最后百度查询,必须安装1.8的版本才能正常使用,最后成功实现了安卓模拟器上的hello world和捕鱼达人的游戏开启。

    第二周进展

    本周计划完成对arm实验箱的原游戏的卸载及游戏的载入和运行。对整个游戏代码原理有个全面的认识与理解,对代码能够修改其功能。
    本周实际完成了对arm实验箱的原游戏的卸载及游戏的载入和运行。对整个游戏代码原理有了个全面的认识与部分理解,一开始尝试着增加一个用户的登录功能,涉及到数据库的搭建以及数据库的连接了,但是我们水平有限未能做出来。后面经过讨论又尝试了一个简单的游戏程序名的修改,成功实现了游戏程序名的修改,这个比较的容易实现。后面又尝试增加了游戏登陆时选择难易的按钮和功能,还在实现更改中。

    我们将游戏分为初级、中级、高级三种。根据其选择的定位,调整在该游戏内,玩家捕鱼的概率:

    初级房:只能使用低倍数,提高击杀概率,随便打打就可以赢钱。
    中级房:可以调整高低倍数,平衡击杀概率,掌握技巧可基本收支平衡。
    高级房:可以开启最高倍数,略微降低击杀概率,赚得多赔得多。

    本周遇到了问题

    弹出框Application Install提示:Do you want tounistall?
    这个一般是指在移动设备中已经有一个和当前要运行的程序一样名字的apk软件了,如果要运行这个软件,则要卸载设备中原有的apk。但是当我点击是,它却提示失败:
    Installation error! The package already exists.
    Launch canceled!
    这个时候有两种处理办法:

    可以用adb shell对设备中的软件进行卸载
    1) 可以直接用:adb uninstall testGame.apk
    2) 如果apk文件是只读的,则需要更改其权限:

    #adb shell
    #mount -o remount rw /system
    #rm testGame.apk
    #ls---这时就不会再有那个testGame.apk文件包了

    更改权限也可以进入cmd直接修改system的权限:adb remount,然后再进入shell去删除文件

    更改当前运行工程的包名,对设备中已有的apk无任何影响法。

    在arm导入实验箱的时候,一直失败,后面通过四步解决了
    第一步:先把原来已经存在的相同包名的APK删除,如:adb shell rm system/app/OutdoorMeter/OutdoorMeter.apk
    第二步:将data/data/目录下该应用的包名的目录删除掉,如:adb shell rm -rf data/data/com.runbo.outdoormeter/
    第三步:重启Android手机? adb reboot
    第四步:再重新安装该APK

    第三周进展

    一、本周计划完成的内容:
    在能够成功运行游戏的基础上,理解代码并尝试增加新功能或修改其原有功能。
    二、实际完成情况:
    已在arm实验箱上实现,可修改部分原有功能,新功能正在尝试实现中。
    三、本周遇到的问题与解决过程
    经过考虑本组实际情况,选择了先对捕鱼概率部分代码进行了解并修改概率,基本没有什么问题。后发现原游戏没有退出功能,
    想要退出游戏只能退回到桌面然后从后台关闭程序,就想试试能否加入一个退出选项,但是发现界面部分的代码难以改动,成功的希望不算太大。

    五、实践步骤

    • 3.1.1 安装JDK和配置Java开发环境

    1. 把准备好的Eclipse和JDK安装到本机上(最好安装在全英文路径下),并给JDK配置环境变量,其中JDK的变量值为JDK安装路径的根目
    2. 安装完成后利用以下步骤检查安装是否成功:打开Windows命令窗口,在命令窗口输入如果出现版本信息如图,说明Java环境变量已经配置好了。

    3.1.2 Eclipse的安装

    JDK安装成功后可以直接安装Eclipse。直接将资料里的eclipse文件拷到电脑上,执行其中的eclipse.exe文件进行安装,Eclipse可以自动找到用户前期安装的JDK路径。

    3.1.3 安装ADT插件:

    1. 打开已安装好的Eclipse,选择菜单栏上的“Help”->在弹出的下拉框中单击选择“Install new software...”;
    2. 在新打开的对话框中我们完全可以直接在Work with中输入:https://dl-ssl.google.com/android/eclipse/在线安装ADT插件,但由于Google的服务器搭建在国外,所以通过这种方式安装起来会比较慢,而且可能会出现人品差死活装不上的情况,所以不推荐在线安装。
    3. 我推荐直接通过下载好的ADT插件压缩包进行安装(此种方式可以在离线环境下进行)。具体步骤是:在新打开的对话框中点击Add按钮->在打开的对话框中点击Archive按钮选择之前已经下载好保存在本地硬盘的ADT插件压缩包,至于上面的Name可以随便取,这只是一个代号而已,没什么实际作用。
    4. 在上一步中点击Ok按钮后我们会发现中间的空白处出现了两行复选框,单击Select All按钮选中所有的复选框,这步过后一路Next,需要Accept的就选中Accept,直到点击Finish结束,这样ADT插件就安装好了。整个过程需要的时间视机器性能而定。安装好ADT插件后,Eclipse的工具栏会出现一排Android的图标,如图:

    3.1.4 安装SDK

    • Android SDK目录介绍:
      • add-ons:Android开发需要的第三方文件
      • docs:Android的文档。包括开发指南、API等
      • extras:附件文档
      • platforms:一系列Android平台版本
      • platform-tools:开发工具,在平台更新时可能会更新
      • samples:例子
      • temp:缓存目录
      • tools:独立于Android平台的开发工具,这里的程序可能随时更新
    1. 把下载好的Android SDK安装到本机上(最好安装在全英文路径下),并为Android SDK配置环境变量。Android SDK的环境变量值为SDK安装目录下的platform-tools文件夹和tools文件夹子目录路径在变量值中,两个路径用逗号隔开。

    1. 打开命令提示符(cmd),分别输入命令,显示如下图则说明Android SDK环境变量已经配置好了。
    2. 打开Android SDK的安装目录,双击 SDK Manager,在打开的窗口中先选择你需要安装的SDK版本,其中Status表示该SDK包是否安装,如我选的是Android4.4(API 19)(我的之前已经安装过了,所以StatusInstalled),再点击Install packages...按钮,在弹出来的窗口中最好选Accept All这样才能安装你刚才选的所有的包,最后点Install按钮就开始安装了,整个过程会很慢,这需要你的耐心。
    • 另外我们还可以通过在Eclipse上的工具栏中点击下图指示的图标打开“SDK Manager”然后进行安装,这样和上面的SDK安装方式一样,就不累述了。
    • 最后再选择Eclipes主菜单上的Windows选择preferrnces
    • 在弹出来的对话框中选中左边栏的Android->通过右侧的Browse...按钮选择SDK的安装路径根目录点击最下方的Ok按钮,这样SDK就在Eclipse上加载成功了。

    3.1.5 创建Android模拟器(AVD)

    1. 打开Eclipse->在Eclipse的工具栏上单击下图指示的图标打开Android Virsual Device Manager窗口;
    2. Android Virsual Device Manager窗口单击New按钮,在弹出来的窗口中Name可以随便取;Target指模拟器的系统版本;SD Cardsize是指手机存储卡的大小,只要你不在模拟器上装太多的应用,一般给个二三十MB就够了;Skin是指屏幕的分辨率大小。一切设置好后点击OK,这时一个模拟器就创建好了。如果有必要,我们可以创建多个模拟器用于测试时使用。
    3. 新创建一个设备,测试运行AVD,选中这个设备点击Start,这时会弹出设置屏幕参数,选中Scale display to real size,再点击Lanuch
    • 虚拟设备启动完成后会出现下图:

    至此为止,在Eclipse上就已经成功搭建Android开发环境了,下面让我们看看如何新建第一个Android项目,通过老师建议实现一个helloworld。

    1. 将Android项目导入Eclipse中:1、启动Eclipse,选择File--Import...菜单,展开General项,选择Existing Projects into Workspace导入项目到工作区;2、点击Next按钮,进入选择项目文件目录,选择好项目目录后,点击Finish按钮,等待导入完成即可,如果需要将项目文件一起拷贝到工作区,就需要选择Copy project into workspace复选框,成功导入捕鱼游戏,并在本机实现。

    在Eclipse中点击项目运行之后会出现设备选择,上面是安卓模拟器,下面是开发板FS4412。

    六、实践过程中质疑记载:

    • 这里面鱼是怎么移动的?
    • 答:这里面是通过鱼的一个run()方法实现的,因为鱼的类继承了Thread类,所以只要将鱼的对象fish.start()便可以调用run()方法,而在该方法中,每过一段时间(这个时间很短,Thread.sleep(1000/20)),鱼的横左边就会减去它当前的速度,然后用repaint方法将鱼移动后的形态重画出来,鱼就移动了。
    • 鱼的游动效果是怎样实现的?参考:捕鱼达人的鱼儿游泳动画
    • 答:我们先将该一种鱼的每个游动形态的图片加载到一个BufferedImage的一个数组中,然后在鱼儿的run()方法中,鱼每次移动一次,就将鱼的图片换成数组中的一张图片,循环下去,鱼就游动了。
    • 鱼是怎么被捕到的?参考:如何设计捕鱼达人游戏中的死亡概率?
    • 答:鱼的图片是有大小的,而渔网我们看做是一个点,只要渔网的中心点在鱼图片的范围之内,且点击鼠标左键,鱼儿就会扣血,当然扣血量的大小按当前渔网的power值来扣。当鱼的血量小于零的时候,鱼就会捕到了,然后调用写好的getOut()方法将鱼送出来,还要将鱼的血量重新赋值,使鱼又可以进来鱼池中。

    七、设计体会及收获

    • 本次课程设计历时四周,我们小组从对Java编程的不熟悉到深入了解,以及对ARM开发板的完全陌生到熟练连接运用,通过本次课程设计,让我门意识到自己能力上的不足,到自己操作的时候就总是眼高手低,不知如何下手,但最终我通过去图书馆查找相关资料以及在网上找相关问题的解决办法,最终解决了在开发过程中,从需求分析到功能实现的一些问题,完成了这个项目。
    • 刚开始的时候遇到问题是一筹莫展,但是随着一个个问题的解决,我的能力也在慢慢提高。本来老师都让我放弃这个题目了,但是毕竟做了这么久,而且最后就面临一个问题,被解决的希望还是特别大的,所以我坚持了下去。终于功夫不负有心人,在各种查资料之后终于解决了这个大难题,使得游戏成功实现了,特别有成就感。本次课程设计从开始到结束都是自己一个人在做,所以我觉得能有最后的成功是对自己今后的学习生活最大的鼓励。
    • 在开发过程中,我们也查找了不少资料,从实际出发几次修改了需求分析,使最终开发出的游戏具有一定趣味性,并且基本实现需求。通过本次课设我意识到,我们对知识的学习,不能光停留在书本上,还要开拓眼界,主动学习,才能让自己跟得上时代的步伐。

    参考资料

  • 相关阅读:
    2020-10-03:java中satb和tlab有什么区别?
    2020-10-02:golang如何写一个插件?
    2020-10-01:谈谈golang的空结构体。
    2020-09-30:谈谈内存对齐。
    2020-09-29:介绍volatile功能。
    2020-09-28:内存屏障的汇编指令是啥?
    2020-09-27:总线锁的副作用是什么?
    2020-09-26:请问rust中的&和c++中的&有哪些区别?
    自定义刷新控件的实现原理
    scrollView的bounds
  • 原文地址:https://www.cnblogs.com/hjwzzj/p/10853769.html
Copyright © 2020-2023  润新知