在游戏逻辑类里有几十行的变量定义也不足为奇。特别对于j2me来说更是如此,为了节省内存空间很多人舍弃了面向对象的特性把代码挤在一块。通常的情况是自已被自已的代码给淹死了!!所以在做结构设计时我很注重这一点,总是试图让代码节省一点扩展性多一点。这件事并不算很难只要认真去推敲总可以发现一些可以优化的东西,变量就是一例。
大多数人更习惯于一个属性一个变量,举个例子假设要表示一个人物的属性你可能会这么做:
int 生命;
int 魔法;
int 金钱;
int 攻击力;
int 防御力;
int 人物所在的x轴;
int 人物所在的y轴
int 人物所在的行
int 人物所在的列
int 人物当前的动作
int 人物当前行走的方向
…..
这只是一部份,相信要为这么多的变量命名是一件困难的事,特别是英文不好的同志。大家现在可能已经看出来了使用数组是最好的办法。至少有两个好处 1 所有的变量定义变成一行 int fairy[] ,变量被收拾得干净净甚至有点对象的味道,当要写该人物相关的代码时你会不假思索地打出 fair[] 。 2 具有扩展性 。这是容易让人忽视的一点,当该人物有新的属性时你可以用 fair[x+1] 的格子来表示它一点也不受影响,当然前提是数据类型必须一致。
数组应用典型的一例是表示地图。假设我们要做一张rpg的地图大多数人的第一反应就是用二维数组表示map[行][列] 看起来似乎合情合理,但是问题来了可能我想让地图上的某些东西动起来。 这就必须加上几个变量 1 当前显示的图片,2 剩余多久切换图片。 这只是最普通的情况,可遇到的问题还更多。我们不可能给每个会动的地方都定义变量,那样太得不偿失了,为此三维数组出现了现在把地图的表示如下
int map[行][列][属性] ;
map [][][0] 表示图片类别
map [][][1] 表示图片当前播放到第几张
map [][][2] 还剩多久切换图片
map [][][3] 该位置是否可以行走
map [][][4] 是否触发对话 0 表示否 其余表示对话的id
…..
我们优雅地把地图相关的东西都很好地表示在一个数组里,想像一下如果不使用三维数组将会是什么样的状况。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器