摘要:本文设计了一个简单的这种游戏, 采用的语言是JAVA, 在Android平台上运行, 使用Eclipse制作。
关键词:JAVA; Android; Eclipse; 手机游戏; 线性布局;
Abstract
This paper designed a simple game of this kind, using the language is JAVA, running on the Android platform, using Eclipse production.
Key words:JAVA; Android. The Eclipse; Mobile games; Linear layout;
目录
1 背景┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅1
2 游戏结构┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅2
3 设计目标┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅3
4 游戏的设计原理及实现┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ 4
5 结语┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅5
参考文献┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅6
附录(略)┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ 7
1 背景
最近几年以来, Android一直比较热门, 虽然并不是手机系统里最优秀的, 但却是大多数手机厂商都在用的, 尽管近几年小程序正在兴起, 但手机应用的开发仍有很强的活力。随着Android的不断更新, 其性能也在不断变好, 在这里做些游戏还是很有价值的。
2 游戏结构
(1) 要有进入游戏的界面, 可以选择各个模式。
(2) 有专门的游戏界面, 可以控制左右。
(3) 游戏结束后要能显示分数。
3 设计目标
(1) 在布局文件main.xml中做好主界面, 主界面提供冒险模式和时间模式两个模式的选择, 还有提供其他一些诸如音乐, 历史分数显示的功能。如图1所示。
(2) 分别用两个布局文件gamew.xml和gamet.xml表示无尽模式和时间模式两个模式的游戏界面, 因为两个界面虽然相像但是计分方式不一样, 而用算法实现有些麻烦, 所以索性建立两个布局文件。
(3) 设计计算游戏结束的算法, 在"飞行器"转到"小行星"后会提示游戏结束, 这时要根据情况弹出gameoverw.xml或gameovert.xml来显示本次得分和历史得分。
(4) 所有布局中设计的按钮, 图片框等都要写好相应的程序让它能起到相应的功能, 例如点击"无尽模式"就能打开无尽模式的游戏界面。
(5) 在所有布局界面中, 右上角都提供了音乐的开关, APP把当前音乐的状态 ("开启"还是"关闭") 写在SharedPreferences中, 当APP每次启动时会读取SharedPreferences中的数据, 初始化音乐按钮的状态。
4 游戏的设计原理及实现
游戏的界面主要通过布局文件来制作, 安卓开发中布局文件和程序代码同样重要, 合理运用布局文件可以省去很多代码, 布局文件存放在res/layout文件夹中。图片文件, 包括按钮图片, 资源图片, 还有声音, 都存放在res/drawable-hdpi文件夹中, 程序代码作为app的主要部分存放在src/com.example.AsteriodBelt文件夹中。
按钮要具备跳转功能, 点击"无尽模式"或"时间模式"任意一个按钮都能跳转到相应的界面, 需要首先在布局文件中交代按钮的位置, 然后在程序代码中写跳转的代码, 这也是安卓应用的巧妙之处, 通过合理使用布局文件是APP能兼容很多信号的屏幕, 因为手机不像电脑, 手机屏幕尺寸很多, 而应用要是不能根据屏幕尺寸适当改变, 在手机上用起来就很不方便, 这与电脑不同, 电脑屏幕足够大。具体添加按钮和添加程序的方法则较简单, 这里简单交代一下:
采用线性设计UI:线性布局是安卓开发中最常用的一种布局, 习惯安卓开发的人应该会很习惯使用, 但是初学时总是感觉没有绝对布局顺手, 但是线性布局的嵌套实际比绝对布局, 表格布局等都灵活的多。
布局文件中的按钮添加方法:
图1:主界面
按钮添加在线性布局LinearLayout中而不是直接写在布局文件中, 这也是安卓应用的一般作法, 安卓应用有线性布局, 绝对布局, 表格布局等很多布局, 但最常用的还是线性布局, 很多资料上也就给出了线性布局的用法, 因为这种布局有很大的灵活性, 可以根据需要在对应的位置添加合适的尺寸的控件, 在添加控件时布局则相当于容器, 这里不再赘述。
程序代码中的对应部分:
首先声明这个按钮, 声明的名称可以和布局里的名称不一样, 但是在findViewById括号里必须和布局中生命的名字一样, 当然这里我保持了前后的名称, 所有的名称都是wjms, 其他几个按钮也类似, 必须先声明才能使用, 在下面部分的代码注册一个内部监听器处理按钮按下的事件--即跳转到"Gamew"Activity中, 其它几个按钮也采用这种方式, 只是跳转的窗口不同这里不再赘述。
在具体的游戏界面中, 首先要生成若干的小行星, 小行星的位置随机生成, 速度根据具体的小行星设置具体的速度, 使速度很大或很小的小行星都很少, 主要小行星的速度都在一个合理的区间里, 这样游戏才更有意义一点。
思路如此, 因为要保证生成的小行星在屏幕内而不是屏幕外, 所以我考虑了一个比较完备的算法如上, 在生成小行星后通过一个循环控制小行星按一定速度下落, 其实下落速度根据不同的手机具体的数值也是不一样的, 我一开始做的时候把数字定的很死, 但是这就造成不同的同学在测试游戏的时候, 小行星下落速度不一样, 有的人很快, 有的人很慢, 因为不同的手机分辨率, 像素密度不同, 所以后来我都改成了在一定的时间里下落按比例计算的屏幕距离, 所以最后才定下了这个算法。
最后得要有一个判断游戏是否结束的算法, 需要根据飞船和小行星的位置, 算一下他们是否相撞, 这个算法我从网上搜出来的, 因为自己想了不少时间也没想好:
看起来有点长, 但是上面一大部分都只占一行, 在Eclipse中看起来还是很清楚的, 通过计算"飞船"和"小行星"四个角的相对位置, 判断有没有相撞。
5 结语
本文设计了一个简单的射击类游戏, 界面适应安卓手机的不同分辨率, 作为很多程序员写游戏时喜欢用的题材, 在手机上实现可以让人学到很多东西, 在手机上玩游戏会比电脑上方便很多, 更有潜力。
参考文献
[1] Jvaa语言程序设计 (第三版) [M].中国铁道出版社, 2013.
[2]Android应用开发入门经典[M].人民邮电出版社, 2014.
[3]Android移动开发教程 (项目式) [M].人民邮电出版社, 2013.
附录
(如您需要查看本篇毕业设计全文,请您联系客服索取)