资源简介

J2ME手机应用项目开发实践 源代码,经过本人亲自验证部分代码可用,请注意仅部分可用,部分有问题。

资源截图

代码片段和文件信息

package wzq;

/**
 * 

title:五子棋人工智能部分 


 *
 * 

Description:实现了最基本的人工智能 


 *
 * 

Copyright: Copyright (c) 2005


 *
 * 

Company: Star Group


 *
 * @author: Turbo Chen,wangyaobsz
 * @version 1.0
 */
public class AI {
    /**
     * 找到最佳下棋点。
     * 基本思路是 先计算每个点的权值,在权值最高的位置下棋
     */
    public static Point findBestLocation(Chesses chess) {
        //权值数组
        int[][] power = new int[Chesses.BOARD_SIZE][Chesses.BOARD_SIZE];
        for (short i = 0; i < Chesses.BOARD_SIZE; i++) {
            for (short j = 0; j < Chesses.BOARD_SIZE; j++) {
                // 当已有子时将该点的权值设为-1
                if (chess.getChess()[i][j] != 0) {
                    power[i][j] = -1;
                }
                // 否则计算该点权值
                else {
                    power[i][j] = (short) calcPower(i j chess.getCurrentType()
                            chess);
                }
            }
        }
        //计算完所有点的权值后 再找出其中权值最大的点
        Point bestLoc = calcMaxPowerLocation(power);
        power = null;
        return bestLoc;
    }

    /**
     * 遍历权值数组,找出权值最大点.
     * @param power
     * @return
     */
    private static Point calcMaxPowerLocation(int[][] power) {
        int max = 0;
        short x = 0 y = 0;
        for (short i = 0; i < Chesses.BOARD_SIZE; i++) {
            for (short j = 0; j < Chesses.BOARD_SIZE; j++) {
                if (power[i][j] > max) {
                    x = i;
                    y = j;
                    max = power[i][j];
                }
            }
        }
        return new Point(x y);
    }

    /**
     * 检查m,n点的权值
     * 思路是 首先假定在mn位置下棋计算4个方向经过该点同色相连的棋子数量不同的数量被赋予不同的
     * 权值将四个方向上权值相加即为该点的权值.计算完后恢复该点的状态.
     * @param m
     * @param n
     * @param currentType:当前棋子的类型
     * @param chess
     * @return
     */
    private static int calcPower(short m short n short currentType
                                 Chesses chess) {
        int p = 0;

        /*
         构造算法的权值数组power,原则是优先选择攻击点,在攻击不能制胜的前提下再选取防守点
         目前算法只向前预计一步,如果要想提高机器的智能则可以多向前预测几步,当然实现起来会复杂一些
        */
        int [] power = {10008560452015105};

        short[] arrlinks = new short[4];
        //首先模拟我方下棋,在该点预下一子预测棋局的权值分布,然后进行后续计算.
        chess.setChessFeeler(m n currentType);

        // 计算4个方向上同色相连棋子的数量.
        arrlinks = calclinkCount(m n chess.getChess());

        //如果mn是中心点 将权值加1
        if (m == Chesses.BOARD_SIZE / 2 &&
            n == Chesses.BOARD_SIZE / 2) {
            p += 1;
        }
        //计算我方在该点四个方向的权值
        for (short i = 0; i < 4; i++) {
            if (Math.abs(arrlinks[i]) == 5) {
                p += power[0];
            }
            if (arrlinks[i] == 4) {
                p += power[2];
            }
            if (arrlinks[i] == 3) {
                p += power[4];
            }
            if (arrlinks[i] == 2) {
                p +=  power[6];
        

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6513  2005-11-25 11:09  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\UML\WzqMIDlet.png~1~

     文件      11423  2005-11-15 19:35  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~10~

     文件      11423  2005-11-15 19:50  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~11~

     文件      11423  2005-11-15 19:51  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~12~

     文件      11423  2005-11-15 19:52  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~13~

     文件      11202  2005-11-17 12:15  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~14~

     文件      11591  2005-11-06 12:35  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~5~

     文件      11535  2005-11-06 12:48  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~6~

     文件      11608  2005-11-06 13:03  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~7~

     文件      11417  2005-11-06 13:05  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~8~

     文件      11385  2005-11-14 08:49  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\AI.java~9~

     文件       6711  2005-11-18 08:38  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~36~

     文件       6656  2005-11-18 08:40  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~37~

     文件       6655  2005-11-18 08:40  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~38~

     文件       6641  2005-11-18 08:41  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~39~

     文件       6639  2005-11-18 08:41  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~40~

     文件       6633  2005-11-18 08:42  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~41~

     文件       6634  2005-11-18 08:43  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~42~

     文件       6635  2005-11-18 08:43  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~43~

     文件       6636  2005-11-18 08:46  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~44~

     文件       6634  2005-11-18 08:46  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Chesses.java~45~

     文件        597  2005-11-06 10:55  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Point.java~1~

     文件        614  2005-11-06 12:44  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Point.java~2~

     文件        614  2005-11-15 19:50  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Point.java~3~

     文件       1569  2005-11-15 19:00  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Splash.java~18~

     文件       1559  2005-11-15 19:34  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Splash.java~19~

     文件       1569  2005-11-15 19:34  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Splash.java~20~

     文件       1466  2005-11-15 19:35  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Splash.java~21~

     文件       1465  2005-11-15 19:37  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Splash.java~22~

     文件       1456  2005-11-15 19:40  J2ME手机应用项目开发实践 源代码\chap04\Wzq\bak\wzq\Splash.java~23~

............此处省略956个文件信息

评论

共有 条评论