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

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

本文简介:

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

现在我们已经有一能够接收用户输入事件的Button类了,下面我们应该考虑如何实现游戏中相关的逻辑,猜数字中的游戏逻辑都比较简单,主要是产生一个4位随机数字且不能重复,其次是根据输入返回给用户结果。我们提供一个Engine类来完成这个工作。
package com.j2medev.numbergame;

import java.util.Random;

public class Engine
{
    private int[] answer = new int[4];

    private Random random = new Random();

    public void init()
    {
        int[] number = new int[10];
        for (int i = 0; i < number.length; i++)
        {
            number[i] = i;
        }

        int n = 10;
        for (int index = 0; index < answer.length; index++)
        {
            int r = Math.abs(random.nextInt() % n);
            answer[index] = number[r];
            number[r] = number[n - 1];
            n--;
        }
    }

    public int[] getAnswer()
    {
        return answer;
    }

    public int[] queryResult(int[] input)
    {
        int[] state = new int[2];
        int a = 0;
        int b = 0;
        for (int i = 0; i < answer.length; i++)
        {
            for (int j = 0; j < answer.length; j++)
            {

                if ((input[j] ^ answer[i]) == 0)
                {
                    if (i == j)
                    {
                        a++;
                    } else
                    {
                        b++;
                    }

                }
            }
        }
        state[0] = a;
        state[1] = b;
        return state;
    }
}

    在游戏的运行中,我们有时候需要提示用户它的操作有误,比如输入数字为空,或者显示给用户已经答对了,一个庆祝的界面。当然这些你可以通过MIDP中提供的Alert来完成,我在这里实现了一个简单的界面类,这是一个抽象类,扩展了FullCanvas但是并没有实现paint()方法,把这个方法留给他的字类来实现。
/*
 * Created on 2004-12-21
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.j2medev.numbergame;

import java.util.Timer;
import java.util.TimerTask;

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;

import com.nokia.mid.ui.FullCanvas;

本文关键:基于Nokia S40的猜数字游戏之二
 

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

go top