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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? firlogic.java

?? 非常好的JAVA編程的例子
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):


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("請(qǐng)落子...");
            }
        }
        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);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九九精品视频在线看| 亚洲天堂精品视频| 成人污视频在线观看| 亚洲午夜久久久久| 久久精品亚洲一区二区三区浴池| 成人国产亚洲欧美成人综合网| 日韩欧美亚洲一区二区| 成人免费av在线| 成人av第一页| www..com久久爱| 91麻豆免费看| 精品视频色一区| 911精品产国品一二三产区| 国产黄色精品视频| 国产一区二三区好的| 国内外成人在线| 麻豆精品一二三| 北岛玲一区二区三区四区| 国产91丝袜在线观看| 欧美亚洲国产一区二区三区va | 在线播放91灌醉迷j高跟美女| 国产一区二区三区视频在线播放| 91国偷自产一区二区三区观看| 午夜精品久久久久久久久久| 色综合天天综合狠狠| 国产91精品露脸国语对白| 国产精品美女久久久久高潮| 国产呦精品一区二区三区网站| 欧美老年两性高潮| 韩国女主播一区二区三区| 欧美激情综合五月色丁香 | 日日欢夜夜爽一区| 偷拍一区二区三区| 中文字幕的久久| 久久综合色播五月| 欧美二区乱c少妇| 欧美日韩一级大片网址| 日本高清不卡aⅴ免费网站| 91亚洲精品久久久蜜桃网站 | 国产亚洲欧美激情| 91精品久久久久久久久99蜜臂| 国产suv一区二区三区88区| 裸体在线国模精品偷拍| 亚洲高清一区二区三区| 五月天一区二区| 韩国v欧美v亚洲v日本v| 国产经典欧美精品| 麻豆精品在线看| 国产美女一区二区| 国产一区二区91| 福利一区二区在线| 盗摄精品av一区二区三区| 久久激情五月激情| 成人一区二区在线观看| 91久久精品一区二区二区| 欧美一区二区日韩一区二区| 国产精品欧美极品| 日韩成人av影视| av成人动漫在线观看| 日韩美女视频一区二区在线观看| 国产人成亚洲第一网站在线播放| 亚洲一区二区三区精品在线| 美女高潮久久久| 在线视频中文字幕一区二区| 精品黑人一区二区三区久久 | 99久久99久久免费精品蜜臀| 色哟哟欧美精品| 欧美国产激情一区二区三区蜜月| 中文一区二区完整视频在线观看| 午夜电影一区二区| 欧美四级电影网| 91麻豆精品91久久久久久清纯| 亚洲婷婷国产精品电影人久久| 国产精品69久久久久水密桃| 欧美zozo另类异族| 免费在线看一区| 日韩亚洲欧美在线观看| 奇米777欧美一区二区| 91麻豆精品国产无毒不卡在线观看| 亚洲另类春色国产| 在线观看av一区二区| 亚瑟在线精品视频| 欧美福利电影网| 免费亚洲电影在线| 26uuu国产日韩综合| 国产69精品久久久久毛片| 精品粉嫩aⅴ一区二区三区四区| 黄色小说综合网站| 久久久精品日韩欧美| 成人晚上爱看视频| 亚洲精品va在线观看| 色婷婷一区二区三区四区| 日韩一区在线看| 日本高清视频一区二区| 午夜免费久久看| 久久一区二区三区国产精品| 精品午夜久久福利影院| 久久综合色一综合色88| 国产一区二区精品在线观看| 久久女同互慰一区二区三区| 97se亚洲国产综合自在线| 亚洲精品第一国产综合野| 91精品国产综合久久久蜜臀图片| 另类专区欧美蜜桃臀第一页| 中文字幕日韩av资源站| 日韩视频在线一区二区| 色综合色狠狠综合色| 国产美女视频一区| 午夜精品123| 亚洲电影第三页| 久久精品一区二区三区不卡牛牛| 一本一道久久a久久精品| 国产福利精品一区| 免费成人av资源网| 日韩影院在线观看| 亚洲一区二区欧美日韩 | 欧美喷水一区二区| 一本大道综合伊人精品热热| 狠狠色伊人亚洲综合成人| 亚洲免费毛片网站| 中文字幕av一区 二区| 精品国产伦理网| 欧美精品乱码久久久久久| 欧美中文字幕一二三区视频| 色域天天综合网| 色狠狠av一区二区三区| 色香色香欲天天天影视综合网| 国产精品综合久久| av在线不卡电影| 成人性视频网站| www.欧美色图| 91一区二区三区在线观看| 成人ar影院免费观看视频| 播五月开心婷婷综合| 欧洲生活片亚洲生活在线观看| 色女孩综合影院| 日韩欧美国产小视频| 国产清纯白嫩初高生在线观看91| 久久久www成人免费无遮挡大片| 国产人久久人人人人爽| 午夜伦欧美伦电影理论片| 久久99热99| 国产九九视频一区二区三区| 成人福利在线看| 欧美一区二区免费观在线| 欧美岛国在线观看| 一区二区在线看| 日韩国产高清影视| 91亚洲精华国产精华精华液| 日韩一区二区三区观看| ...xxx性欧美| 日本欧美一区二区在线观看| 日本美女一区二区三区| av电影在线观看一区| 91麻豆精品国产91久久久资源速度| 欧美成人精品福利| 亚洲成人av中文| 99久久精品国产一区| 久久丝袜美腿综合| 亚洲成人精品影院| 欧美午夜一区二区三区| 中文字幕一区视频| 国产白丝网站精品污在线入口| 日韩欧美国产麻豆| 视频精品一区二区| 欧美午夜在线一二页| 亚洲免费视频中文字幕| 国产在线不卡视频| 欧美成人在线直播| 日韩电影在线观看电影| 欧美日本一区二区| 久久国产尿小便嘘嘘尿| 久久新电视剧免费观看| 久久91精品国产91久久小草| 久久九九99视频| 色综合色综合色综合| 曰韩精品一区二区| 91精品在线免费观看| 婷婷综合五月天| 久久蜜桃av一区精品变态类天堂 | 美女视频黄 久久| 国产午夜精品久久久久久久| 欧美主播一区二区三区美女| 奇米影视7777精品一区二区| 久久久久久久综合| 91精品国产欧美一区二区18| 丁香婷婷综合五月| 免费一级片91| 亚洲第一电影网| 国产精品三级电影| 91精品国产免费久久综合| 成人免费av网站| 福利一区二区在线| 国产精品夜夜爽| 强制捆绑调教一区二区| 国产精品久久久久国产精品日日| 欧美一区二区精品在线| 91视频国产观看| 91在线播放网址| 成人深夜视频在线观看|