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

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

作者:mingjava  文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=142

笔者刚刚开始学习写游戏,并没有什么经验,因此选择了门槛比较低的猜数字游戏。花了一天的时间,基本能够在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);
        }
    }

    public final int getBackColor()
    {
        if (backcolor == -1)
        {
            if (parent != null)
            {
                return parent.getBackColor();
            }

            backcolor = 0xFFFFFF;
        }

        return backcolor;
    }

    protected final int getCanvasHeight()
    {
        return super.getHeight();
    }

    protected final int getCanvasWidth()
    {
        return super.getWidth();
    }

    public final int getHeight()
    {
        return h;
    }

    public final int getWidth()
    {
        return w;
    }

    public final int getX()
    {
        return x;
    }

    public final int getY()
    {
        return y;
    }

本文关键:基于Nokia S40的猜数字游戏之一
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top