基于JAVA的安卓小游戏小行星带的设计
java画图板 时间:2021-02-24 阅读:(
)
摘要:本文设计了一个简单的这种游戏,采用的语言是JAVA,在Android平台上运行,使用Eclipse制作.
[关键词]JAVAAndroidEclipse手机游戏线性布局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:线性布局是安卓开发中最常用的一种布局,习惯安卓开发的人应该会很习惯使用,但是初学时总是感觉没有绝对布局顺手,但是线性布局的嵌套实际比绝对布局,表格布局等都灵活的多.
布局文件中的按钮添加方法:按钮添加在线性布局LinearLayout中而不是直接写在布局文件中,这也是安卓应用的一般作法,安卓应用有线性布局,绝对布局,表格布局等很多布局,但最常用的还是线性布局,很多资料上也就给出了线性布局的用法,因为这种布局有很大的灵活性,可以根据需要在对应的位置添加合适的尺寸的控件,在添加控件时布局则相当于容器,这里不再赘述.
程序代码中的对应部分:finalButtonwjms=(Button)findViewById(R.
id.
wjms);wjms.
setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){//無尽模式按下Intentintent=newIntentO;intent.
setClass(Main.
this,Gamew.
class);startActivity(intent);//开始跳转}}};首先声明这个按钮,声明的名称可以和布局里的名称不一样,但是在findViewById括号里必须和布局中生命的名字一样,当然这里我保持了前后的名称,所有的名称都是wjms,其他几个按钮也类似,必须先声明才能使用,在下面部分的代码注册一个内部监听器处理按钮按下的事件一即跳转到"Gamew"Activity中,其它几个按钮也采用这种方式,只是跳转的窗口不同这里不再赘述.
在具体的游戏界面中,首先要生成若干的小行星,小行星的位置随机生成,速度根据具体的小行星设置具体的速度,使速度很大或很小的小行星都很少,主要小行星的速度都在一个合理的区间里,这样游戏才更有意义一点.
enemy0.
setY(enemy0.
getY0+2*height/720);enemy0.
getLocationInWindow(coordinate2);if(coordinate2[1]>height)2/3{enemy0.
setY(-(int)(0+Math.
random()*(height-0+)));enemy0.
setX((int)(0+Math.
random()*(width-enemy0.
getWidth0-0+1));}思路如此,因为要保证生成的小行星在屏幕内而不是屏幕外,所以我考虑了一个比较完备的算法如上,在生成小行星后通过一个循环控制小行星按一定速度下落,其实下落速度根据不同的手机具体的数值也是不一样的,我一开始做的时候把数字定的很死,但是这就造成不同的同学在测试游戏的时候,小行星下落速度不一样,有的人很快,有的人很慢,因为不同的手机分辨率,像素密度不同,所以后来我都改成了在一定的时间里下落按比例计算的屏幕距离,所以最后才定下了这个算法.
最后得要有一个判断游戏是否结束的算法,需要根据飞船和小行星的位置,算一下他们是否相撞,这个算法我从网上搜出来的,因为自己想了不少时间也没想好:if(enemy0.
getX()+enemy0.
getWidth()*2/5getXO)Ilcs.
getX()+cs.
getWidth()*2/5getX(Ollenemy0.
getY(+enemy0.
getHeight(getYOllcs.
getY(+cs.
getHeightOgetY(){}elsegameover();看起来有点长,但是上面一大部分都只占一行,在Eclipse中看起来还是很清楚的,通过计算"飞船"和"小行星"四个角的相对位置,判断有没有相撞.
5结语本文设计了一个简单的射击类游戏,界面适应安卓手机的不同分辨率,作為很多程序员写游戏时喜欢用的题材,在手机上实现可以让人学到很多东西,在手机上玩游戏会比电脑上方便很多,更有潜力.
参考文献[1]Jvaa语言程序设计(第三版)[M].
中国铁,道出版社,2013.
[2]Android应用开发入门经典[M].
人民邮电出版社,2014.
[3]Android移动开发教程(项目式)[M].
人民邮电出版社,2013.
PoweredbyTCPDF(www.
tcpdf.
org)3/3
Sharktech又称SK或者鲨鱼机房,是一家主打高防产品的国外商家,成立于2003年,提供的产品包括独立服务器租用、VPS云服务器等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等。之前我们经常分享商家提供的独立服务器产品,近期主机商针对云虚拟服务器(CVS)提供优惠码,优惠后XS套餐年付最低仅33.39美元起,支持使用支付宝、PayPal、信用卡等付款方式。下面以XS套餐为例,分享产品配...
AlphaVPS是一家保加利亚本土主机商(DA International Group Ltd),提供VPS主机及独立服务器租用等,数据中心包括美国(洛杉矶/纽约)、德国、英国和保加利亚等,公司办公地点跟他们提供的保加利亚数据中心在一栋楼内,自有硬件,提供IPv4+IPv6,支持PayPal或者信用卡等方式付款。商家提供的大硬盘VPS主机,提供128GB-2TB磁盘,最低年付15欧元起,也可以选择...
RAKsmart 虽然是美国主机商,但是商家的主要客户群还是在我们国内,于是我们可以看到每次的国内节日促销活动期间商家也会发布促销。包括这次年中大促活动,RAKsmart商家也有发布为期两个月的年终活动,其中有商家擅长的独立服务器和便宜VPS主机。服务器包括站群服务器、特价服务器、高达10G带宽不限制流量的美国服务器。商家优惠活动,可以看到对应商品的优惠,同时也可以使用 优惠码 RAKBL9 同时...
java画图板为你推荐
无线路由器限速设置如何设置无线路由器局域网限速?个性qq资料`谁有最新 最有个性的QQ个性资料吴晓波频道买粉罗辑思维,晓松奇谈,鸿观,吴晓波频道,财经郎眼哪个更有深度bluestacksbluestacks到底是叫蓝手指还是叫蓝叠正则表达式javajava正则表达式神雕侠侣礼包大全神雕侠侣手游每天送的元宝买什么合适2012年正月十五2012年正月十五 几月几号iphone6上市时间苹果6什么时候在中国大陆上市小米手柄小米手柄和飞智手柄哪个好?怎么上传音乐怎样可以上传本地音乐到网上?
深圳主机租用 樊云 国外私服 paypal认证 青果网 国内加速器 浙江独立 ibox官网 权嘉云 双线主机 hinet 什么是服务器托管 服务器干什么用的 息壤代理 台湾谷歌 支持外链的相册 流媒体加速 东莞主机托管 摩尔庄园注册 阿里云个人邮箱 更多