Top0.1 项目设计简介(Deprecated)

原创 2012年05月15日 15:38:19

0.简介

“不是陀螺”是Android平台下基于中国传统陀螺的休闲游戏,玩家通过手划屏幕模拟真实对陀螺的鞭打,从而使陀螺加速旋转和移动(不多说,以后再补充,至于名字的由来以后再说吧)。


1.参考资料

(如果想知道游戏的实现或者看不懂什么SurfaceView的先看游戏编程的这一类书)

基本上我们能找到的2D游戏源代码的结构都是一样的,看一下Android游戏编程这一类书的实例就能有大概了解了,自己写确实有些问题没考虑到。所以这次重写了游戏框架,基本上是抄《Android编程典型实例与项目开发》的“Q版疯狂大炮”项目的,书里也有更详细的介绍。


2.设计模式

先要说这个,因为我在游戏框架里两次用到了工厂模式(分别是Environment包和SurfaceView包),这样写的话源文件是多了,但是为后期的拓展提供了很大很大的便利(我个人感觉这样架构是比较巧妙的)。如果不知道我在说什么,可以看一下《大话设计模式》等书,不然很难理解这种设计的思路。


3.游戏元素

暂时只有手划陀螺这种游戏模式,而游戏的元素(大家不要抓字眼,就是说游戏由几部份组成)只有两个:Top(放在Top包内)和Environment(放在Environment内)。解释一下,Top就是屏幕上的陀螺,我们这种模式只有一个陀螺,所以整个程序只有一个Top对象,简单吧。至于Environment指陀螺所处的环境,在这里可以设置难度和场景,玩过之前的Demo应该知道有什么“飓风模式”或者“暴雪模式”,它的原理就是通过改变Top对象的属性来增减游戏的难度,然后实现不同绘图函数实现不同的场景。然后,与Environment关联的Top就叫做DependentTop,毫无疑问是继承Top类的,因为前期的Top类与外界的耦合度不能太大所以保留下来了,因此,陀螺的很多属性和方法都放在Top.java,而实际上游戏中的陀螺是一个DependentTop对象。


4.包(package)结构

不同功能的类应该放在不同的包里,包名建议用网络域名(如www.google.com)的倒写,所以我写的包名都是com.gg开头的,没问题吧?一共5个包:device包放有关具体手机的信息,因为不同手机的屏幕尺寸什么的是不一样的,为了日后的兼容性而保留下来,现在只有Constant类,而且只有屏幕长宽两个属性。environment包放各种Environment(通过上面应该知道Environment是游戏的两个元素之一吧),从命名基本可以知道每个类的功能,而且这些文件的代码绝大部分是一样,只是参数不同,比较特殊的是EnvironmentFactory.java,就是所说的工厂类(想弄懂的看一下设计模式)。Top包放陀螺的类,就Top类和DependentTop类,前面也有介绍。utility包放各种工具类,这些东西不会直接出现在界面上,不过会被其他类用到,例如Top里面就有一个Circle对象来显示成圆盘。view包放各种界面和调用这些界面的Activity,也是用工厂模式,不同的SurfaceView注册到SurfaceViewFactory就可以直接用了。强调一下,比较重要的是Top类,包含了陀螺的旋转和碰撞等属性行为,还有GameSurfaceView类负责游戏进行界面的绘制,还有GameActivity类负责不同游戏状态下界面的切换。


5.补充

这个版本与我之前给大家的源代码比较大的区别是没有了login包和game包,因为之前是想以不同的界面分不同的包,也就是把登录的SurfaceView和Activity放一个包,游戏的放另一个包。后来看书发现一般游戏都只有一个Activity,再搭配多个SurfaceView,我看过几本书里游戏项目的源代码都是这样的,果断就改了。不过逻辑部分重点还是在Top类和GameSurfaceView类里面,所以不想斟酌全部代码而只要实现部分功能的可以不用管其他那么多的文件。


----------------------------------------------------希望看完对整个项目有大致的了解-------------------------------------------------


五子棋AI设计-简介

我对AI十分感兴趣,加上一位师兄给了我一些意见和指导,所以我尝试去实现一个五子棋AI。在此,我是以个人经历来写这篇文章而且是第一次写博客,目的在于加深自己对五子棋AI的理解和锻炼自己的表达能力,因此,...
  • litt1e_ccc
  • litt1e_ccc
  • 2016年10月12日 18:15
  • 175

中国象棋程序的设计与实现(一)--项目截图

上周一发表了,中国象棋程序的设计与实现(原始版)(包含源码) ,在一周的时间里,有22次下载,700次访问,还是挺让我欣喜的。 本周和下周,将陆续发表中国象棋程序的设计与实现(高级版),包括 项目截...
  • FansUnion
  • FansUnion
  • 2013年09月16日 00:46
  • 7338

Java注释中的@deprecated与源代码中的@Deprecated

Java注释中的@deprecated与源代码中的@Deprecated     用 @Deprecated注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被...
  • hugoshine
  • hugoshine
  • 2013年08月02日 11:13
  • 945

安卓新闻客户端实战(一):项目简介

最近实验室要上新的项目,需要进行一些准备给研一“鲜肉”进行一些简单的培训,需要有一个尽量两周时间可以完成的项目并能够具备使他们加入项目组所需要的一些基本技能,因此我打算最近一段时间实现一个简单的新闻客...
  • SuoMaLiXiongMao
  • SuoMaLiXiongMao
  • 2016年04月18日 08:15
  • 1110

人工智能项目(介绍)

人工智能(Artificial Intelligence),英文缩写为AI。百度百科是这样介绍的:它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。下面我将用技...
  • ZhangYu_AD
  • ZhangYu_AD
  • 2017年02月23日 15:19
  • 799

掌上快递 APP 项目之概述篇

概述 学习Android开发也有一段时间了,利用业余时间独立制作的一款快递类APP软件,自己将其定位为“集快递信息追踪、附近快递点查询、 快递公司投诉功能为一体的便民生活类快递 app”。难度不是很大...
  • XSF50717
  • XSF50717
  • 2015年08月01日 23:10
  • 2646

iOS 多媒体编程(二)——视频(AVPlayer)

和音频播放一样,ios也提供个很多的API。如mediaPlayer.framework下的MPMediaPlayerController、AVFounditon.framework下的AVPlaye...
  • chy555chy
  • chy555chy
  • 2016年06月27日 18:03
  • 2391

MQTT协议设计简介

简介 MQTT协议全称是MQ Telemetry Transport
  • u013040181
  • u013040181
  • 2014年10月26日 18:07
  • 1340

所做项目介绍

开头的话:下面介绍的一些项目大部分是自己在学校课余时间所做,所以在项目的时间说明上可能不是很准确。 2013.3~至今(2013.3.18) 出租车打车项目(java) 2012.12...
  • DLUTXIE
  • DLUTXIE
  • 2013年03月18日 20:16
  • 3400

ZooKeeper简介、设计原理、主要配置及集群

一、Zookeeper的一些概念和理解 1、数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都...
  • zollty
  • zollty
  • 2016年12月31日 22:04
  • 402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Top0.1 项目设计简介(Deprecated)
举报原因:
原因补充:

(最多只允许输入30个字)