J2ME游戏操作指南

先简单介绍一下这个游戏。玩家只能控制角色(带网兜的反派)水平移动,接住自然落下的球得分。分数达到一定程度后,球会下落得更快,直到达到最高速度。如果你没有接到球,就会有相应的惩罚,最终游戏结束。

为了避免过于单调,玩家角色并没有简单的平移,而是使用了Sprite的简单帧动画,让角色看起来有点动作。其实很方便,移动位置的时候换个图像就行了。Sprite提供了几种在NextFrame()和PrevFrame()之间切换的方法。

声音部分比较简单,只是反复播放一段事先写好的音乐,比如孙的《》。

但既然提到了,那就先简单说一下,免得后面介绍其他部分的时候有些疑惑。

J2ME的声音部分很简单,当然效果不是很好。所需的基本元素仅如下:内容部分的字节序列;一个是播放器播放器;控制部分还有一个ToneControl。代码示例如下:

tone player = Manager . create player(Manager。音调_设备_定位器);

tone player . setloopcount(-1);

tone player . realize();

tone control TC =(tone control)tone player . get control(javax . micro edition . media . control . tone control);

TC . set sequence(my sequence);

当然还需要一些初始化工作和异常处理,然后通过tonePlayer.start()/close()方法控制声音的播放和停止。

详见源代码中CanvasGetBall.java的createTonePlayer()方法。

锣鼓响了好久,主角出场的时候到了。这个游戏中的主角只有一个接球反派,但角色还有一个与之对手戏的NPC,也就是从天而降的球。这两个类都是Sprite的子类,小球因为自己的动作和Runnable接口可以自主移动。但也很简单。一般来说NPC都比较弱智,不然玩不了。谁能跟上机器?况且NPC知道的信息多。

我们先来看看主角。球员班是我们的主角。其实很简单。在所有六个班级中,除了计分的分数,它是最小的。提供一个图像实例化后,只能通过左右移动来控制。多余的方法都是和评分有关的,先跳过。

我们来看看它的构造方法:

公共球员(图像图像,中间前进,中间后退){

超级(img,fw,FH);

这一步= fw/2;

}

主要工作由它的父类Sprite完成,给出一个图像。此图像以PNG格式提供。你可能会注意到,它不是一个单一的图像,而是有点像帧动画中的几个关键帧。是的,它是。构造方法中的最后两个参数告诉Sprite如何分割这个图像。这里整个播放器***有六个关键帧,比较粗糙,呵呵,我自己截图了:)

场步用于控制主角的移动速度。为了更快,它是它宽度的一半。

接下来,让我们看看如何移动它,即通过两种方式左右移动它。

public void left() {

prev frame();

if((getX()-step)& gt;= -12 ) {

移动(-1 *步,0);

}

}

公共无效权利(){

next frame();

if((getX()+step)& lt;canvas.getWidth()) {

移动(步,0);

}

}

注意,这里只关心相对位移,主角的起始位置由setPosition设置。最好不要在运动过程中直接设定位置,这样会增加计算量,不然会显得不自然。

接下来简单说一下配角——球。球的结构和主角差不多,只是节省了摧毁物体的成本。这个物体一直存在,就是让它自己跌倒自己爬起来,根据分数来决定跌倒的速度。简单的用线程实现,没有经过精心设计。看代码就能看清楚。

我们来看看CanvasGetBall这个类,它继承自GameCanvas,实现了两个接口,CommandListener和Runnable。是整个游戏中最复杂的职业。主要工作包括以下几个部分:实例化主角、支持对象、背景对象、音乐等。,并在适当的时候绘制这些对象,在顶部绘制一些状态信息,并根据玩家的操作启动和暂停游戏,显示相应的屏幕。并通过碰撞检测判断选手是否已经接到球。