文章来源:J2ME开发网
如果问你个问题,小时候玩的最多的是什么游戏,我想,你肯定会立刻回答,俄罗斯方块,后来随着时间的推移,各种方块类游戏层出不穷,下面笔者将要介绍的一款游戏,也可以归结到俄罗斯方块类游戏的范畴里去。由于最近看这方面的代码比较多,所以参考了一下多种方案,自己也来了个创新。
笔者把这款游戏命名为开心药丸,下面开始做简单介绍:
游戏名:开心药丸
运行平台:MIDP1.0
游戏方法介绍:
游戏屏幕上方会随机掉下由两个方块组成的方块组,每个方块从红黄蓝绿四种颜色中随机产生一种,这样共有4*4=16种组合方式,(是不是很象我们感冒时吃的胶囊!这就是名字的由来),每4个相同的颜色组合在一起的方块会自动消去,随着游戏的不断发展,速度会不断提高,直到GAMEOVER。。。。。。。。
在进行开发之前我们要画出程序的流程图:
下面我们就这个游戏来介绍以下类的结构:
笔者设计的是
SquareMIDlet:主程序,对整个游戏的生命周期进行控制。
Piece:存储各个方块组合的详细参数。
GameCanvas:这是精华所在,对这个画面的绘制和操作包含在这个类里,大家千万要注意,这是笔者自己写的GameCanvas,千万不要和MIDP2.0里的game包弄混淆。
具体实现详解:
首先从主程序入手: 在设计的时候我们不需要为这个类添加太多的功能,我们只需要在在这个类里面加入适当的控制机制,对整个游戏的生命周期进行控制,太多的代码会导致游戏结构的混乱。
我们这个系列文章将会围绕这三个关键类进行描述,先看一看主程序:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class SquareMIDlet extends MIDlet
{
public void SquareMIDlet()
{
gc=new GameCanvas(this);
display=Display.getDisplay(this);
display.setCurrent(gc);
}
public void startApp()
{
gc.start();
}
public void pauseApp()
{
gc.pause();
}
public void destroyApp(boolean unconditional)
{
}
void Exit()
{
try
{
destroyApp(false);
notifyDestroyed();
}catch(Exception e){}
}
private GameCanvas gc;
private Display display;
}
在此 我们给出相应的主程序的UML图 方便读者了解整个游戏的架构!~
很明显,我们通过调用GameCanvas里的开始(start)和暂停(pause)等等方法来控制程序的状态,呵呵,主程序是不是很简单,别心急,下一篇文章,我们介绍Piece类和一些GameCanvas的实现细节。