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类里面,所以不想斟酌全部代码而只要实现部分功能的可以不用管其他那么多的文件。


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


处理 ActionBarDrawerToggle is Deprecated

ActionBarDrawerToggle is Deprecated 更新Android Support Library后,自动构建DrawerFragmentLayout,会发现有这样一个War...
  • dss886
  • dss886
  • 2015年10月18日 22:14
  • 726

学习笔记_hashlib

学习笔记_hashlib学习日期:2016年10月11日 学习课程:hashlib - 廖雪峰的官方网站摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 摘要...
  • weixin_35955795
  • weixin_35955795
  • 2016年10月13日 10:03
  • 143

项目设计

一个android项目,设计一定是在eclipse里新建项目之前。这是我后来才慢慢明白、慢慢接受的。 对于我来说,开发从来都不是问题。我现在的理念是“只要能设计出来,只要不被限制,没有技术达不到”。...
  • gopain
  • gopain
  • 2013年11月15日 18:46
  • 1017

javaweb项目设计文档

项目需求、分析设计
  • pengjia_
  • pengjia_
  • 2016年11月27日 15:05
  • 2445

软件项目设计文档分类

软件项目设计文档分类author:chinayaosir(jack.yao)blog:   http://blog.csdn.net/chinayaosir/QQ:    44633197声明:严禁其...
  • chinayaosir
  • chinayaosir
  • 2016年09月26日 14:53
  • 682

软件工程项目设计

软件系统名称:餐馆点菜系统
  • qq2236955150
  • qq2236955150
  • 2017年10月06日 15:18
  • 79

开源硬件介绍

相对于源代码开放的开源软件,开源硬件似乎今人费解。因为传统的硬件体系中没有数字化代码,何来开源?因此,开源硬件的开源内涵主要体现在开源文化中的开放、低成本、可二次开发与可任意裁剪上。开源硬件的开放不仅...
  • u013710265
  • u013710265
  • 2017年04月20日 15:12
  • 699

项目实施计划及总体设计报告(范例)

项目实施计划及总体设计报告(大纲)一 引言1、编写目的   说明编写这份项目实施计划及总体设计报告的目的,并指出预期的读者。2、背景说明: (1)      待开发的软件系统的名称。(2)      ...
  • SmartTony
  • SmartTony
  • 2008年01月20日 23:21
  • 4038

项目设计之一-------------策略模式应用

简单工厂模式可以结合反射进行实现,这样的解耦更好
  • ouchuquan
  • ouchuquan
  • 2014年06月27日 00:25
  • 351

OO设计思想

OO基础:抽象,封装,多态,继承OO原则: 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 为交互对象之间的松耦合设计而努力 对扩展开放,...
  • xiemengguilin
  • xiemengguilin
  • 2015年05月05日 08:28
  • 568
收藏助手
不良信息举报
您举报文章:Top0.1 项目设计简介(Deprecated)
举报原因:
原因补充:

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