基于Nokia S40的猜数字游戏之一

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

笔者刚刚开始学习写游戏,并没有什么经验,因此选择了门槛比较低的猜数字游戏。花了一天的时间,基本能够在Nokia6108上运行了,界面比较简单,为学习之用。

下面介绍一下如何实现猜数字游戏,其实这是一个比较经典的游戏。游戏的原理是:游戏开始的时候会自动产生四个不重复的随机数字比如1234,用户输入四个数字,系统通过判定返回给用户xAyB的结果,其中A代表数字正确位置也正确,B代表数字正确但是位置不正确。假如用户猜对游戏就结束了,10次内没有猜对,游戏也结束。在这里我们重点介绍为游戏而实现的组件,简单的流程控制和游戏逻辑。

首先介绍组件,这里我们提供了两个组件,一个就是Button,他可以接收用户输入的数字,并且可以响应用户的按键事件。

首先我们构造一个基本的组件,这个组件需要包括左上角顶点的坐标(x,y),宽度w,高度h以及前景色、背景色。最重要的一点是我们需要给他提供一个容器来治理他,因此提供一个Manager类。

package com.j2medev.numbergame;

import javax.microedition.lcdui.*;

import com.nokia.mid.ui.*;

//A root class for Canvas-based components.

//Because Area extends Canvas, you can actually

//use a component directly as a Canvas, although

//it's recommended you place it on Manager.

public abstract class Area extends FullCanvas

{

PRotected int x;

protected int y;

protected int w;

protected int h;

protected Font font;

protected Manager parent;

protected int backcolor = -1;

protected int forecolor = -1;

protected Area(int x, int y, int w, int h)

{

this(x, y, w, h, null);

}

protected Area(int x, int y, int w, int h, Font f)

{

this.x = x;

this.y = y;

this.w = w;

this.h = h;

this.font = f;

}

// Erase the background using backcolor

protected void eraseBackground(Graphics g)

{

g.setColor(getBackColor());

if (parent == null)

{

g.fillRect(0, 0, getCanvasWidth(), getCanvasHeight());

} else

{

g.fillRect(0, 0, w, h);

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航