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


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

    个人贡献

    • 实验环境的搭建
    • 代码调试
    • 在电脑上成功运行
    • 在ARM实验箱上成功实现
    • 给程序增加功能(没成功)
    • 研究程序代码撰写小组报告

    一、实验环境

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

    二、实践内容

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

    三、实践步骤

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

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

    1. 把准备好的Eclipse和JDK安装到本机上(最好安装在全英文路径下),并给JDK配置环境变量,其中JDK的变量值为JDK安装路径的根目录,如我的为:D:Program FilesJavajdk1.7.0_02;
    2. 安装完成后利用以下步骤检查安装是否成功:打开Windows命令窗口,在命令窗口输入java -version,如果出现版本信息如图,说明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文件夹子目录路径,如我的分别为:E:360Downloadsadt-bundle-windows-x86-20131030sdkplatform-toolsE:360Downloadsadt-bundle-windows-x86-20131030sdkplatforms,在变量值中,两个路径用逗号隔开。
    2. 打开命令提示符(cmd),分别输入android -hadb命令,显示如下图则说明Android SDK环境变量已经配置好了。
    3. 打开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项目。
    1. 将Android项目导入Eclipse中:1、启动Eclipse,选择File--Import...菜单,展开General项,选择Existing Projects into Workspace导入项目到工作区;2、点击Next按钮,进入选择项目文件目录,选择好项目目录后,点击Finish按钮,等待导入完成即可,如果需要将项目文件一起拷贝到工作区,就需要选择Copy project into workspace复选框。

    3.2 安装软件到模拟器

    1. 把apk的安装包放入sdkplatform-tools目录下和adb.exe文件同目录,如图:
    2. 运行cmd,切换到adb.exe的目录
    3. 输入adb install testGame.apk
    4. 当命令行出现Success时代表安装成功,如图:
    • 如图所示,安装失败,提示没有发现设备,是因为此时我没有打开安卓模拟器也没有连接开发板,需要将证书安装到设备上前提是有设备连接。当然我们在Eclipse中运行程序的时候Eclipse会先将证书安装到设备上,所以这一步也可以直接省略。

    3.3 连接ARM实验箱与PC机

    • 连接好串口线、电源线以及USB线,如图所示:
    • 在Eclipse中点击项目运行之后会出现设备选择,上面是安卓模拟器,下面是开发板FS4412。

    3.4 将工程代码在ARM实验箱上实现

    3.5给程序增加新的功能

    • 我们的这个捕鱼游戏相对简单,所以我想要给我们的这个程序增加一个用户的登录功能,这就涉及到数据库的搭建以及数据库的连接了。因为上学期选过数据库这门课所以想要尝试一下。首先创建一个名为game的数据库,其初始大小为5MB,最大为50MB,允许数据库自动增长,增长方式是按10%比例增长。日志文件初始为2MB,最大可增长为5MB,按1MB增长。存放位置为“D:fishgame”。
    • 建立数据库的过程如图所示:
    • 但是在连接数据库时遇到了很多问题,由于人力有限最后还是放弃了。

    四、实验中遇到的问题及解决

    问题一:windows下java jdk 环境变量设置

    java jdk环境变量的配置:简单来说就是要设置path和classpath,path是要加上bin,classpath里面是lib。
    我的电脑->属性->高级系统配置。

    1. path系统里面都有了,只要在里面加上bin的地址就可以,每个路径之间用;隔开。
      例如:C:Program FilesJavajdk1.6.0in
    2. classpath要自己新建,当然如果已经有了,在里面编辑就可以,注意classpath前面要有.;代表当前路径。
      例如:.;C:Program FilesJavajdk1.6.0libdt.jar;C:Program FilesJavajdk1.6.0lib ools.jar
    3. 为了方便书写和以后的更改,可以设置java_home变量,将其设为C:Program FilesJavajdk1.6.0,这样path和classpath里面就可以用%java_home%来替换C:Program FilesJavajdk1.6.0
      例如:path可设置为%java_home%in

    问题二:Eclipse中的source not found change at.

    解决办法:
    需要把源码src.zip添加进去,源码src.zip一般放在java的jdk目录下面

    问题三:ERROR: Application requires API version 10. Device API version is 8

    解决方法:
    修改两个配置文件:

    1. 在AndroidManifest.xml里, 找到这一行,这行是表示要执行这个应用程式所需要的最低版本,把数字改成模拟器上面的版本。(Device API)
    2. 在default.properties里 target=android-8 把target改为要运行模拟器的版本就OK了。(application requires API)

    问题四:Adb启动失败

    当我们通过eclipse开发Android应用时,安卓模拟器启动失败,提示这样的错误:ADB server didn’t ACK。
    解决办法:

    1. 在cmd中输入:adb start-server启动adb服务。这个时候会提示启动失败。
    2. 在cmd中输入:adb nodaemon server查看是否是端口绑定失败。一般会输出:cannot bind‘tcp:5037’表示端口绑定失败。
    3. 在cmd中输入:netstat –ano | findstr “5037”查看哪个服务占用了这个端口。
    4. 进入任务管理器,关闭占用端口的进程。
    5. 再次启动服务,启动成功。
    6. 关闭Eclipse,重启,再次连接模拟器。

    问题五:下载SDK时Google服务器被和谐

    解决办法:
    可以强制指向下Host,如下:

    1. 在C:WINDOWSsystem32driversetc路径下找到hosts文件并打开
    2. 把“74.125.237.1dl-ssl.google.com”添加到最后一行保存并关闭
    3. 重新打开Android SDK Manager进行下载

    问题六:Android模拟器报错emulator-5554 disconnected!

    解决办法:有两种解决方案:

    1. 打开window -> Show Views -> device,点击“Devices”选项卡右上角的下拉箭头,选择“Reset adb”。
    2. 打开Windows命令行,切换到开发工具自带的adb.exe所在的目录,输入“adb kill-server”,回车,再输入“adb start-server”,回车。

    问题七:在AVD中运行测试时,总是会弹出错误框,提示信息为:“Your project contains error(s),please fix them before running your application.”,不管是重启AVD 重启eclipse 甚至创建一个新的Android工程项目都不能运行。

    解决办法:有以下几种原因:

    1. 在不同的电脑下开发,而且文件存放路径不同,错误的主要原因是 “.classpath” 文件的载三方类库包路径错误。
    2. 也可能是SDK版本不存在或者没有。
    3. 编译的class、apk文件有问题:执行清除一下就可以了。Project→Clean→Clena Projects Selected Below 选择出错的项目就可以了。
    4. 有可能就是最重要的这一点:
      在Program提示框中会提示:“Error generating final archive: Debug Certificate expired on 12-7-25 下午7:52”
      原因分析:
      android要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,adt使用debug keystore,在 preference->android->buid中设置。debug的keystore默认有效期为一年,如果是从一年前开始完android程序,那么在一年后导入这个app的时候很可能出现debug keystore过期,导致无法生成apk文件。
      解决方法:
      进入C:Documents and SettingsAdministrator.android 删除路径下的debug.keystore及ddms.cfg。
      (不同环境下的目录可能略有不同,可在eclipse中查找此路径:Window->Preferences->Android->Build下 Default debug keystore)
      此时只要删除debug keystore就行,系统又会生成有效期为一年的私钥。debug签名的应用程序有这样两个限制:
    5. debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
      Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。
    6. debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现程序不能覆盖安装的问题。

    问题八:弹出框Application Install

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

    1. 可以用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去删除文件
    2. 更改当前运行工程的包名,对设备中已有的apk无任何影响法。

    知识点介绍:工程中每个目录的功能:

    • src目录:包含App所需的全部程序代码文件,我们大多数时候都是在这里编写我们的Java代码的
    • gen目录:只关注R.java文件,它是由ADT自动产生的,里面定义了一个R类,可以看作一个id(资源编号)的字典,包含了用户界面,图形,字符串等资源的id,而我们平时使用资源也是通过R文件来调用的,同时编译器也会看这个资源列表,没有用到的资源不会被编译进去,可以为App节省空间
    • assets目录:存放资源,而且不会再R.java文件下生成资源id,需要使用AssetsManager类进行访问
    • libs目录:存放一些jar包,比如v4,v7的兼容包,又或者是第三方的一些包
    • res资源目录:存放资源的,drawable:存放图片资源;layout:存放界面的布局文件,都是XML文件;values:包含使用XML格式的参数的描述文件,如string.xml字符串,color.xml颜色,style.xml风格样式等
    • AndroidManifest.xml配置文件:系统的控制文件,用于告诉Android系统App所包含的一些基本信息,比如组件,资源,以及需要的权限,以及兼容的最低版本的SDK等

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

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

    六、设计体会及收获

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

    参考资料

  • 相关阅读:
    数据库查询语言(DQL)
    MySQL的约束
    MySQL的数据类型
    SQL
    MySQL简介
    个人项目网址
    Nexus Repository Manager(CVE-2020-10199/10204)漏洞分析及回显利用方法的简单讨论
    Joomla 3.0.0
    Groovy 反序列化漏洞分析(CVE-2015-3253)
    PHP反序列化漏洞新攻击面(BlackHat 2018)
  • 原文地址:https://www.cnblogs.com/feng886779/p/9130008.html
Copyright © 2020-2023  润新知