亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? firlogic.java

?? 這是我買的一本J2me手機游戲設(shè)計的一本書里的例子
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:


import java.io.PrintStream;
import java.util.*;
import javax.microedition.lcdui.Canvas;

public class FIRLogic
{
    private FIRCanvas myCanvas;
    private int boardSize;
    private boolean isComputerFirst;
    private int degree;
    public static int PLAYER_NONE = 0;
    public static int PLAYER_COMPUTER = 1;
    public static int PLAYER_MAN = 2;
    private int table[][];
    private Dot lastDot;
    private int playerCounter[];
    private Stack steps;
    private Dot triedDot;
    private static int GAIN_BY_COMPUTER = 5;
    private static int GAIN_BY_NONE = 1;
    private boolean isGameOver;
    private boolean isComputerWon;
    private boolean isThinking;
    private Random rndNum;
    public FIRLogic(FIRCanvas canvas, int boardSize, boolean isComputerFirst, int degree)
    {

    	
        this.boardSize = 15;
        isComputerFirst = true;
        degree = 1;
        myCanvas = canvas;
        this.boardSize = boardSize;

        this.isComputerFirst = isComputerFirst;
        this.degree = degree;
        table = new int[boardSize][boardSize];
        for(int r = 0; r < boardSize; r++)
        {
            for(int c = 0; c < boardSize; c++)
                table[r][c] = 0;

        }

        
        playerCounter = new int[3];
        playerCounter[0] = boardSize * boardSize;
        playerCounter[1] = 0;
        playerCounter[2] = 0;
        lastDot = new Dot(boardSize);
        steps = new Stack();
        triedDot = new Dot(-1, -1);
        isGameOver = false;
        isThinking = false;
        rndNum = new Random();
    }

    public int[][] getTable()
    {
        return table;
    }

    public Dot lastDot()
    {
        return lastDot;
    }

    public Dot triedDot()
    {
        return triedDot;
    }

    public boolean checkGameOver()
    {
        return isGameOver;
    }

    public boolean isComputerWon()
    {
        return isComputerWon;
    }

    public boolean isThinking()
    {
        return isThinking;
    }

    private boolean isGameOver()
    {
        isGameOver = false;
        for(int r = 0; r < boardSize; r++)
        {
            for(int c = 0; c < boardSize; c++)
            {
                if(table[r][c] == 0 || checkFiveInRow(r, c, 5, -1) == -1)
                    continue;
                isGameOver = true;
                isComputerWon = table[r][c] == 1;
                break;
            }

            if(isGameOver)
                break;
        }

        if(isGameOver)
            myCanvas.notifyGameEnd();
        return isGameOver;
    }

    public void manGo(int row, int col)
    {
        if(row >= 0 && row < boardSize && col >= 0 && col < boardSize && table[row][col] == 0)
        {
            goAt(row, col, 2);
            if(isGameOver())
            {
                if(isComputerWon)
                    myCanvas.setStatus("真遺憾!", 0xff0000, 2);
                else
                    myCanvas.setStatus("恭喜你!", 65280, 1);
            } else
            {
                computerGo();
            }
        }
    }

    private void goAt(int row, int col, int player)
    {
        int lastRow = lastDot.row;
        int lastCol = lastDot.col;
        table[row][col] = player;
        lastDot.setRowCol(row, col);
        myCanvas.repaintAt(lastRow, lastCol);
        myCanvas.repaintAt(row, col);
        switch(player)
        {
        case 1: 
            playerCounter[1]++;
            break;

        case 2: 
            playerCounter[2]++;
            break;
        }
        playerCounter[0]--;
        if(steps.size() > 10)
            steps.removeElementAt(0);
        steps.push(new Dot(row, col));
    }

    public boolean undo()
    {
        if(steps.size() >= 3)
        {
            Dot d = new Dot();
            d.copyFrom((Dot)steps.pop());
            table[d.row][d.col] = 0;
            myCanvas.repaintAt(d.row, d.col);
            d.copyFrom((Dot)steps.pop());
            table[d.row][d.col] = 0;
            myCanvas.repaintAt(d.row, d.col);
            d.copyFrom((Dot)steps.peek());
            lastDot.copyFrom(d);
            myCanvas.repaintAt(d.row, d.col);
            return true;
        } else
        {
            return false;
        }
    }

    public void computerGo()
    {
        myCanvas.setStatus("思考中...", 0, 0);
        myCanvas.serviceRepaints();
        think();
    }

    public void think()
    {
        isThinking = true;
        Dot dc = null;
        if((dc = to5L(1)) == null && (dc = to5L(2)) == null && (dc = to4B(1)) == null && (dc = to4B(2)) == null && (dc = toDouble4S_3B_2N1B(1, true)) == null && (dc = toDouble4S_3B_2N1B(2, true)) == null && (dc = toDouble4S_3B_2N1B(1, false)) == null && (dc = toDouble4S_3B_2N1B(2, false)) == null && (dc = toSingle4S_3B_2N1B(1)) == null)
            dc = toSingle4S_3B_2N1B(2);
        if(dc == null)
            dc = maxGainedDot();
        if(dc == null || playerCounter[0] == 0)
        {
            myCanvas.setStatus("平局!", 255, 3);
        } else
        {
            System.out.println("Gone!");
            goAt(dc.row, dc.col, 1);
            if(isGameOver())
            {
                if(isComputerWon)
                    myCanvas.setStatus("真遺憾!", 0xff0000, 2);
                else
                    myCanvas.setStatus("真厲害!", 65280, 1);
            } else
            {
                myCanvas.setStatus("請落子...");
            }
        }
        isThinking = false;
    }

    private Dot to4B(int player)
    {
        if(playerCounter[player] < 3)
            return null;
        Dot dot = null;
        int maxGain = 0;
        for(int r = 1; r < boardSize - 1; r++)
        {
            for(int c = 1; c < boardSize - 1; c++)
                if(table[r][c] == 0)
                {
                    int cd[] = connectedIn8D(player, r, c);
                    int ed[] = expandedIn8D(player, r, c);
                    for(int i = 0; i < 4; i++)
                        if(ed[i] > cd[i] && ed[i + 4] > cd[i + 4] && cd[i] + cd[i + 4] + 1 >= 4)
                        {
                            int gain = gainAt(r, c);
                            if(gain > maxGain || gain > 0 && gain == maxGain && randomTrue())
                            {
                                maxGain = gain;
                                dot = new Dot(r, c);
                            }
                        }

                }

        }

        return dot;
    }

    private Dot toSingle4S_3B_2N1B(int player)
    {
        if(playerCounter[player] < 2)
            return null;
        Dot dot = null;
        for(int r = 0; r < boardSize; r++)
        {
            for(int c = 0; c < boardSize; c++)
            {
                if(table[r][c] != 0 || find4S_3B_2N1BAt(r, c, player, -1) == -1)
                    continue;
                dot = new Dot(r, c);
                break;
            }

            if(dot != null)
                break;
        }

        return dot;
    }

    private Dot toDouble4S_3B_2N1B(int player, boolean only4S)
    {
        if(playerCounter[player] < 4)
            return null;
        Dot dot = null;
        for(int rTest = 0; rTest < boardSize; rTest++)
        {
            for(int cTest = 0; cTest < boardSize; cTest++)
            {
                if(table[rTest][cTest] != 0)
                    continue;
                int cd[] = connectedIn8D(player, rTest, cTest);
                if(cd[0] + cd[1] + cd[2] + cd[3] + cd[4] + cd[5] + cd[6] + cd[7] <= 0)
                    continue;
                triedDot.setRowCol(rTest, cTest);
                table[rTest][cTest] = player;
                boolean found = false;
                int dFirst = find4S_3B_2N1B(player, -1, rTest, cTest, only4S);
                if(dFirst != -1 && find4S_3B_2N1B(player, dFirst, rTest, cTest, false) != -1)
                    found = true;
                table[rTest][cTest] = 0;
                triedDot.setRowCol(-1, -1);
                if(!found)
                    continue;
                dot = new Dot(rTest, cTest);
                break;
            }

            if(dot != null)
                break;
        }

        return dot;
    }

    private int find4SAt(int row, int col, int player, int exceptDirection)
    {
        int dFond = -1;
        int cd[] = connectedIn8D(player, row, col);
        int ed[] = expandedIn8D(player, row, col);
        for(int d = 0; d < 4; d++)
        {
            if(d == exceptDirection || table[row][col] != player)
                continue;
            int nConnect = cd[d] + cd[d + 4] + 1;
            int nFree1 = ed[d] - cd[d];
            int nFree2 = ed[d + 4] - cd[d + 4];
            boolean b4S = nConnect >= 4 && (nFree1 >= 1 || nFree2 >= 1);
            if(!b4S)
                continue;
            dFond = d;
            break;
        }

        return dFond;
    }

    private int find4S_3B_2N1BAt(int row, int col, int player, int exceptDirection)
    {
        int dFond = -1;
        int cd[] = connectedIn8D(player, row, col);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡中文字幕| 色综合中文字幕国产| 成人动漫一区二区在线| 欧美视频一区二区三区| 久久在线观看免费| 午夜精品久久久久久| av成人动漫在线观看| 日韩你懂的电影在线观看| 亚洲视频中文字幕| 国产91在线|亚洲| 91精品国产欧美一区二区成人| 国产精品不卡在线观看| 激情综合色播五月| 欧美日韩三级一区二区| 综合色天天鬼久久鬼色| 国产suv精品一区二区三区| 日韩欧美在线观看一区二区三区| 亚洲在线观看免费视频| 成人的网站免费观看| 久久久不卡网国产精品二区| 亚洲成人av中文| 色综合中文综合网| 日韩电影在线免费观看| 国模冰冰炮一区二区| 欧美日韩三级视频| 亚洲一区视频在线| 99久久婷婷国产综合精品| 国产亚洲精品资源在线26u| 麻豆传媒一区二区三区| 欧美日韩色综合| 亚洲v中文字幕| 欧美午夜精品久久久久久孕妇| 亚洲欧美aⅴ...| 91在线国内视频| 亚洲嫩草精品久久| 色视频成人在线观看免| 亚洲乱码中文字幕| 欧洲人成人精品| 一区二区三区不卡视频在线观看| 色婷婷精品大在线视频| 亚洲综合色视频| 欧美男男青年gay1069videost| 亚洲国产日韩av| 欧美电影影音先锋| 日本不卡一区二区三区| 精品国产自在久精品国产| 国产一区在线精品| 中文乱码免费一区二区| 9久草视频在线视频精品| 一区二区三区四区不卡视频| 欧美性色黄大片| 日本不卡一区二区三区高清视频| 日韩美女一区二区三区| 国产酒店精品激情| 亚洲日本va午夜在线电影| 欧美亚洲国产一区二区三区 | 成人sese在线| 一区二区三区在线看| 69av一区二区三区| 国产精品一二三四| 亚洲激情图片小说视频| 欧美一级日韩不卡播放免费| 国产美女视频91| 亚洲乱码国产乱码精品精可以看| 欧美女孩性生活视频| 国产乱一区二区| 亚洲一区二区三区四区不卡| 日韩美女一区二区三区| 91麻豆精品秘密| 久久精品国产77777蜜臀| 成人欧美一区二区三区| 91精品国产免费久久综合| 丰满亚洲少妇av| 视频一区视频二区在线观看| 日本一区二区在线不卡| 欧美日韩激情在线| 成人av影视在线观看| 偷窥国产亚洲免费视频| 国产精品乱码人人做人人爱| 在线播放一区二区三区| 成人污污视频在线观看| 日本免费新一区视频| 亚洲欧洲无码一区二区三区| 欧美一区二区三区免费观看视频| 成人av在线一区二区三区| 琪琪久久久久日韩精品| 亚洲视频免费看| 久久精品欧美一区二区三区不卡| 欧美三级视频在线播放| 99久久精品国产麻豆演员表| 久久99久久99小草精品免视看| 亚洲激情第一区| 国产精品久久久久久久午夜片| 日韩午夜电影在线观看| 欧美亚洲综合久久| 一本色道a无线码一区v| 国产99精品国产| 久久er精品视频| 天天综合天天做天天综合| 亚洲私人黄色宅男| 国产日韩v精品一区二区| 日韩一级精品视频在线观看| 欧美体内she精高潮| 色综合久久中文字幕| 成人午夜激情在线| 国产成人精品一区二| 国产一区在线视频| 国产精品自在在线| 激情综合亚洲精品| 狠狠色丁香婷婷综合| 久久国产精品无码网站| 奇米影视一区二区三区小说| 一区二区三区不卡在线观看| 亚洲免费观看高清完整版在线观看| 国产精品丝袜在线| 国产精品国产三级国产普通话蜜臀 | 美脚の诱脚舐め脚责91| 首页亚洲欧美制服丝腿| 日韩综合在线视频| 午夜a成v人精品| 免费成人在线网站| 精品中文av资源站在线观看| 免费成人在线播放| 国产一区 二区| 粉嫩av一区二区三区在线播放| 成人午夜伦理影院| 91免费看片在线观看| 在线这里只有精品| 欧美日韩在线播放| 日韩视频一区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 99国产精品国产精品久久| 99久久精品一区二区| 色拍拍在线精品视频8848| 欧美日韩在线不卡| 欧美成人一区二区三区片免费| 久久免费视频一区| 国产精品福利一区二区三区| 亚洲色图欧美激情| 日韩电影在线免费| 国产成人综合网| 91久久精品网| 日韩精品一区二区三区视频播放| 久久影院电视剧免费观看| 亚洲视频免费在线观看| 日韩影视精彩在线| 国产精品一二一区| 欧洲精品中文字幕| 欧美xingq一区二区| 国产精品久久看| 日韩电影一二三区| 成人午夜电影久久影院| 欧美日韩国产不卡| 久久久美女毛片| 亚洲一区二区三区自拍| 国产在线精品一区二区不卡了 | 久久久蜜桃精品| 亚洲一区电影777| 国产美女在线精品| 欧美日韩日本视频| 国产精品色在线| 琪琪一区二区三区| 在线观看免费视频综合| 26uuu国产一区二区三区| 亚洲高清免费一级二级三级| 国产精品资源在线观看| 欧美日韩精品欧美日韩精品| 国产欧美一区二区精品性色| 日日夜夜精品视频免费| 成人动漫精品一区二区| 精品蜜桃在线看| 亚洲国产精品一区二区www| 成人中文字幕电影| 精品免费国产二区三区| 亚洲成人在线免费| 91视频观看免费| 欧美极品xxx| 国产一区二区精品久久91| 91精品黄色片免费大全| 亚洲另类色综合网站| 国产suv一区二区三区88区| 精品欧美乱码久久久久久| 天天综合色天天综合| 在线免费观看成人短视频| 中文字幕一区在线| 国产精品88av| 日韩精品中文字幕在线一区| 亚洲电影中文字幕在线观看| 色综合中文字幕国产| 久久一留热品黄| 玖玖九九国产精品| 日韩女优毛片在线| 免费看欧美美女黄的网站| 在线播放日韩导航| 视频一区二区三区中文字幕| 欧美在线观看禁18| 亚洲国产精品欧美一二99| 日本久久一区二区| 亚洲韩国一区二区三区| 欧美三级日韩在线|