一、序言
昨天在网上闲逛,发现一篇讲解用delphi实现华容道游戏的文章,颇受启发.于是,产生了将华容道游戏移植到手机中去的冲动.现在手机游戏琳琅满目,不一而足,华容道的实现版本也很多.正巧不久前笔者对j2me下了一番功夫, 正想借这个机会小试牛刀。选用j2me的原因还有一个就是目前java开发大行其到,无线增殖业务迅猛发展,j2me的应用日渐活跃起来,也希望我的这篇文章能够为j2me知识的普及和开发团队的壮大推波助澜。由于长期受iso规范的影响,这次小试牛刀我也打算遵照软件工程的要求,并采取瀑布式的开发模式来规划项目,也希望借此机会向各位没有机会参与正式项目开发的读者介绍一下软件开发的流程。
这里我们先定义项目组的人员体制(其实只有我一个人):技术调研、需求分析、概要设计、详细设计、编码、测试均有笔者一人担任;美工这里我找了个捷径,盗用网上现成的图片,然后用acdsee把它由bmp转换成png格式(我出于讲座的目的,未做商业应用,应该不算侵权吧);至于发布工作,由于缺少ota服务器,此项工作不做(但是我会介绍这步如何做)。
接下来,我们规划一下项目实现的时间表,以我个人经验,设想如下:技术调研用2天(这部分解决项目的可行性和重大技术问题,时间会长一些),需求分析用半天(毕竟有现成的东东可以参照,只要理清思路就行了,况且还有很多以前用过的设计模式和写好的代码),概要设计再用半天(有了需求,概要只不够是照方抓药),详细设计要用2天(这一步要把所有的问题想清楚,还要尽可能的准确描述出来),编码用2天(其实1天就够了,技术已经不是问题,多计划出一天来应付突发事件),测试用2天(测试应该至少占全部项目的四分之一,不过这个项目只是一个demo,也太简单了),发布也要用上半天(尽管我们不去实际发布它,但是还要花点时间搞清楚应该如何做),最后就是项目总结和开庆功会(时间待定)。
二.利其器
“公欲善其事,必先利其器”,做项目之前第一步是前期调研.我们要做的华容道这个东东随处可见,我们要调研的是两个方面:
1、游戏的内容:游戏本身很简单,就是有几个格子,曹操占据其中一个较大的格子,然后被几个格子包围,这些格子形状不一定相同,但是挡住了曹操移动的方向.游戏者需要挪动这些格子最终把曹操移动到一个指定的位置才算是过关.更具体的分析我们放在后面需求分析和概要设计中讨论。
2、技术储备:谈到技术,这里简单介绍一下j2me.java有三个版本,分别是j2me(微型版).j2se(标准版).j2ee(企业版).j2me是一个标准,采用3层结构设计.最低层是配置层(configuration)也就是设备层,其上是简表层(profile),再上是应用层(application).midp就是移动信息设备简表,目前主流手机支持midp1.0,最新的是midp2.0,它比前一个版本增加了对游戏的支持,在javax.microedition.lcdui.game包中提供了一些类来处理游戏中的技术,比如我们后面会用到的sprite类,它是用来翻转图片的.权衡再三,笔者决定使用midp2.0来做开发.首先需要安装一个j2me的模拟器,我们就用sun公司的wtk2.0,我觉得sun的东西最权威.当然你也可以使用nokia.siemens或是motolora等其他模拟器,但是他们的jdk不尽相同,写出来的程序移植是比较麻烦的.sun公司的wtk2.0可以到<a href="http://here/下">http://here/下</a>载,当然要想成功下载的前提是你要先注册成为sun的会员(其实这样对你是有好处的).当下来之后就是按照提示一步一步的安装.安装好了之后,我们用一个"hello world"程序开始你的j2me之旅.我们启动wtk2.0工具集中的ktoolbar,然后点击new project按钮,在弹出的输入框中输入project name为helloworld,midlet class name为hello,然后点击create project,开始生成项目,工具会弹出midp配置简表,这里接受生成的默认值(以后还可以修改)点击ok,工具提示我们把写好的java源程序放到[wtk_home]\apps\helloworld\src目录之下.我们编辑如下代码,并保存在上述目录之下,文件名为hello.java。
| import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class hello extends midlet { private display display; public hello(){ display =display.getdisplay(this); } public void startapp(){ textbox t = new textbox("hello","hello",256,0); display.setcurrent(t); } public void pauseapp(){ } public void destroyapp(boolean unconditional){ } } |
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 注册表 操作系统 服务器 应用服务器