论文部分内容阅读
【摘 要】本软件使用Android Studio进行开发,选择Android的FrameLayout(帧布局)作为游戏主布局;使用自定义View来实现图形的绘制,通过重写父类的onDrow()方法来绘制以及invalidate()方法来实现刷新;通过Handler的postDalayed()方法来实现计时器,从而实现定时刷新游戏界面;通过onTouch()方法来实现屏幕点击事件的监听,并在其中进行碰撞检测,根据结果进行数据的存储,通过ListView进行显示。
【关键词】Android;Intent;Handler;View
随着移动网络的全面覆盖以及网速的提高,智能移动终端设备已成为人们生活中必不可少的一部分。Android是Google在2008年推出的开源智能手机操作系统,凭借着其优秀的人机交互和开放性,受广大手机生产的重视。Android已改变了智能手机市场的格局。手机不再仅仅是通讯设备,更多的是娱乐、购物、社交等等。因此手机的应用服务存在的很大的发展空间,游戏APP就是其中很大的一部分。
一、问题定义
本游戏拟实现功能:当玩家进入游戏之后,屏幕中间有一个旋转的圆盘,玩者需要做的,就是将自己手中的“针”,全部插进旋转的圆盘上其它针的缝隙中。相邻的针是不能有接触的,否者就显示游戏失败。从软件工程的角度产生3个问题:针的旋转;针的插入;针的碰撞检测。
二、总体设计
首先,通过自定义View来实现针的旋转,重写父类的onDrow()方法来绘制以及invalidate()方法来实现刷新,产生旋转的效果。共分为3个自定义View类:中心圆盘、圆盘上的针、剩余个数。
其次,将圆盘上的针作为一个类,通过直接操作这个类的实例来实现针的动态改变,然后将针的实例传给相应的自定义View类,从而实现针的动态插入。
最后是碰撞检测,在屏幕点击事件触发时,将每次插入的针与针实例中已有的针进行比较,小于某个角度即判定为发生碰撞。
三、详细设计
1.针的旋转
圆盘上的针(自定义View类)获取针类实例化对象内的数据来实现针的绘制,针类对象有5个属性,圆盘上的所有针数、每个针所对应的角度、针所对应的数字、关卡等级(用来初始化针)、初始针个数。通过操作针类对象中的角度来实现针的旋转,在这个角度的基础上加一个旋转角,使用三角函数来确定其具体的位置,改变旋转角的同时对自定义View类进行重绘,从而实现旋转。
由于Android不允许子线程直接更新UI的, 当一个程序第一次启动时,Android会同时启动一个对应的主UI线程,也就是ActivityThread。主要负责处理与UI相关的事件,如用户的按键点击、用户触摸屏幕以及屏幕绘图等。系统不会为每个组件单独创建一个线程,在同一个进程里的UI组件都会在UI线程里实例化,系统对每一个组件的调用都从UI线程分发出去。这里使用Handler机制来处理子线程去更新UI控件。
2.碰撞检测
碰撞检测采用最简单的遍历,将每次插入的针与针实例中已有的针进行比较,小于10角度即判定为发生碰撞。
for(int b=0;b ball.invalidate(small,i);//圆盘上针绘制
handler.removeCallbacks(runnable); //关闭计时器
return false;}}
四、小結
在研究Android平台的过程中,主要对Android的四大组件Activity、Service、BroadcatReceiver、CotetProvider进行解析,以及Intent和重要API的机制。在此基础上,开发基于Android的见缝插针小游戏,由此更进一步了解Android智能手机操作系统。在开发过程中尤其注重Intent机制的学习。
参考文献
[1]郭霖. 第一行代码——Android[M]. 北京:人民邮电出版社,2014:40-109.
[2]李刚. 疯狂 Android 讲义[M]. 北京:电子工业出版社,2013:25-42.
[3]杨云君. Android 的设计与实现[M]. 北京:机械工业出版社,2013:45-49.
【关键词】Android;Intent;Handler;View
随着移动网络的全面覆盖以及网速的提高,智能移动终端设备已成为人们生活中必不可少的一部分。Android是Google在2008年推出的开源智能手机操作系统,凭借着其优秀的人机交互和开放性,受广大手机生产的重视。Android已改变了智能手机市场的格局。手机不再仅仅是通讯设备,更多的是娱乐、购物、社交等等。因此手机的应用服务存在的很大的发展空间,游戏APP就是其中很大的一部分。
一、问题定义
本游戏拟实现功能:当玩家进入游戏之后,屏幕中间有一个旋转的圆盘,玩者需要做的,就是将自己手中的“针”,全部插进旋转的圆盘上其它针的缝隙中。相邻的针是不能有接触的,否者就显示游戏失败。从软件工程的角度产生3个问题:针的旋转;针的插入;针的碰撞检测。
二、总体设计
首先,通过自定义View来实现针的旋转,重写父类的onDrow()方法来绘制以及invalidate()方法来实现刷新,产生旋转的效果。共分为3个自定义View类:中心圆盘、圆盘上的针、剩余个数。
其次,将圆盘上的针作为一个类,通过直接操作这个类的实例来实现针的动态改变,然后将针的实例传给相应的自定义View类,从而实现针的动态插入。
最后是碰撞检测,在屏幕点击事件触发时,将每次插入的针与针实例中已有的针进行比较,小于某个角度即判定为发生碰撞。
三、详细设计
1.针的旋转
圆盘上的针(自定义View类)获取针类实例化对象内的数据来实现针的绘制,针类对象有5个属性,圆盘上的所有针数、每个针所对应的角度、针所对应的数字、关卡等级(用来初始化针)、初始针个数。通过操作针类对象中的角度来实现针的旋转,在这个角度的基础上加一个旋转角,使用三角函数来确定其具体的位置,改变旋转角的同时对自定义View类进行重绘,从而实现旋转。
由于Android不允许子线程直接更新UI的, 当一个程序第一次启动时,Android会同时启动一个对应的主UI线程,也就是ActivityThread。主要负责处理与UI相关的事件,如用户的按键点击、用户触摸屏幕以及屏幕绘图等。系统不会为每个组件单独创建一个线程,在同一个进程里的UI组件都会在UI线程里实例化,系统对每一个组件的调用都从UI线程分发出去。这里使用Handler机制来处理子线程去更新UI控件。
2.碰撞检测
碰撞检测采用最简单的遍历,将每次插入的针与针实例中已有的针进行比较,小于10角度即判定为发生碰撞。
for(int b=0;b
handler.removeCallbacks(runnable); //关闭计时器
return false;}}
四、小結
在研究Android平台的过程中,主要对Android的四大组件Activity、Service、BroadcatReceiver、CotetProvider进行解析,以及Intent和重要API的机制。在此基础上,开发基于Android的见缝插针小游戏,由此更进一步了解Android智能手机操作系统。在开发过程中尤其注重Intent机制的学习。
参考文献
[1]郭霖. 第一行代码——Android[M]. 北京:人民邮电出版社,2014:40-109.
[2]李刚. 疯狂 Android 讲义[M]. 北京:电子工业出版社,2013:25-42.
[3]杨云君. Android 的设计与实现[M]. 北京:机械工业出版社,2013:45-49.