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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? computer.cs

?? 人工智能 五子棋的實現。AI算法比較高
?? CS
字號:
?using System;
using System.Collections.Generic;
using System.Text;

namespace gobang
{
    class Computer
    {
        /**/
        /// <summary>
        /// 正東正西檢測與m,n點棋子相同的棋子個數
        /// </summary>
        /// <param name="m"></param>
        /// <param name="n"></param>
        /// <param name="arrchessboard"></param>
        /// <returns>如果返回負值則表示改方向在無子可下</returns>
        /// 

        private const int NONE = 0;
        private const int BLACK = 1;
        private const int WHITE = 2;
        public const int win = 1;
        public const int liveFour = 2;
        public const int deadFour = 3;
        public const int liveThree = 4;
        public const int deadThree = 5;
        public const int liveTwo = 6;
        public const int deadTwo = 7;
        public const int liveOne = 8;
        public const int deadOne = 9;
        public bool checkWin(int x, int y, int[][] arrchessboard, chess_color color)
        {
            int[] adjsame = new int[8];
            for (int i = 0; i < 8; i++)
            {
                adjsame[i] = 0;
            }
            int _x, _y;

            for (_y = y - 1; _y >= 0 && arrchessboard[x][_y] == (int)color; _y--, adjsame[0]++) ;

            for (_x = x + 1, _y = y - 1; _x < 15 && _y >= 0 && arrchessboard[_x][_y] == (int)color; _x++, _y--, adjsame[1]++) ;

            for (_x = x + 1; _x < 15 && arrchessboard[_x][y] == (int)color; _x++, adjsame[2]++) ;

            for (_x = x + 1, _y = y + 1; _x < 15 && _y < 15 && arrchessboard[_x][_y] == (int)color; _x++, _y++, adjsame[3]++) ;

            for (_y = y + 1; _y < 15 && arrchessboard[x][_y] == (int)color; _y++, adjsame[4]++) ;

            for (_x = x - 1, _y = y + 1; _x >= 0 && _y < 15 && arrchessboard[_x][_y] == (int)color; _x--, _y++, adjsame[5]++) ;

            for (_x = x - 1; _x >= 0 && arrchessboard[_x][y] == (int)color; _x--, adjsame[6]++) ;

            for (_x = x - 1, _y = y - 1; _x >= 0 && _y >= 0 && arrchessboard[_x][_y] == (int)color; _x--, _y--, adjsame[7]++) ;
            for (int i = 0; i < 4; i++)
            {
                if (adjsame[i] + adjsame[i + 4] >= 4)
                    return true;
            }
            return false;
        }
        private int[] fenXi(int x, int y, int[][] arrchessboard, chess_color color)
        {
            int[] adjsame = new int[8];
            int[] adjempty = new int[8];
            int[] jumpsame = new int[8];
            int[] jumpempty = new int[8];
            int[] res = new int[4];

            for (int i = 0; i < 8; i++)
            {
                adjsame[i] = adjempty[i] = jumpsame[i] = jumpempty[i] = 0;
                if (i < 4)
                    res[i] = 0;
            }

            int _x, _y;

            for (_y = y - 1; _y >= 0 && arrchessboard[x][_y] == (int)color; _y--, adjsame[0]++) ;
            for (; _y >= 0 && arrchessboard[x][_y] == NONE; _y--, adjempty[0]++) ;
            for (; _y >= 0 && arrchessboard[x][_y] == (int)color; _y--, jumpsame[0]++) ;
            for (; _y >= 0 && arrchessboard[x][_y] == NONE; _y--, jumpempty[0]++) ;

            for (_x = x + 1, _y = y - 1; _x < 15 && _y >= 0 && arrchessboard[_x][_y] == (int)color; _x++, _y--, adjsame[1]++) ;
            for (; _x < 15 && _y >= 0 && arrchessboard[_x][_y] == NONE; _x++, _y--, adjempty[1]++) ;
            for (; _x < 15 && _y >= 0 && arrchessboard[_x][_y] == (int)color; _x++, _y--, jumpsame[1]++) ;
            for (; _x < 15 && _y >= 0 && arrchessboard[_x][_y] == NONE; _x++, _y--, jumpempty[1]++) ;

            for (_x = x + 1; _x < 15 && arrchessboard[_x][y] == (int)color; _x++, adjsame[2]++) ;
            for (; _x < 15 && arrchessboard[_x][y] == NONE; _x++, adjempty[2]++) ;
            for (; _x < 15 && arrchessboard[_x][y] == (int)color; _x++, jumpsame[2]++) ;
            for (; _x < 15 && arrchessboard[_x][y] == NONE; _x++, jumpempty[2]++) ;

            for (_x = x + 1, _y = y + 1; _x < 15 && _y < 15 && arrchessboard[_x][_y] == (int)color; _x++, _y++, adjsame[3]++) ;
            for (; _x < 15 && _y < 15 && arrchessboard[_x][_y] == NONE; _x++, _y++, adjempty[3]++) ;
            for (; _x < 15 && _y < 15 && arrchessboard[_x][_y] == (int)color; _x++, _y++, jumpsame[3]++) ;
            for (; _x < 15 && _y < 15 && arrchessboard[_x][_y] == NONE; _x++, _y++, jumpempty[3]++) ;

            for (_y = y + 1; _y < 15 && arrchessboard[x][_y] == (int)color; _y++, adjsame[4]++) ;
            for (; _y < 15 && arrchessboard[x][_y] == NONE; _y++, adjempty[4]++) ;
            for (; _y < 15 && arrchessboard[x][_y] == (int)color; _y++, jumpsame[4]++) ;
            for (; _y < 15 && arrchessboard[x][_y] == NONE; _y++, jumpempty[4]++) ;

            for (_x = x - 1, _y = y + 1; _x >= 0 && _y < 15 && arrchessboard[_x][_y] == (int)color; _x--, _y++, adjsame[5]++) ;
            for (; _x >= 0 && _y < 15 && arrchessboard[_x][_y] == NONE; _x--, _y++, adjempty[5]++) ;
            for (; _x >= 0 && _y < 15 && arrchessboard[_x][_y] == (int)color; _x--, _y++, jumpsame[5]++) ;
            for (; _x >= 0 && _y < 15 && arrchessboard[_x][_y] == NONE; _x--, _y++, jumpempty[5]++) ;

            for (_x = x - 1; _x >= 0 && arrchessboard[_x][y] == (int)color; _x--, adjsame[6]++) ;
            for (; _x >= 0 && arrchessboard[_x][y] == NONE; _x--, adjempty[6]++) ;
            for (; _x >= 0 && arrchessboard[_x][y] == (int)color; _x--, jumpsame[6]++) ;
            for (; _x >= 0 && arrchessboard[_x][y] == NONE; _x--, jumpempty[6]++) ;

            for (_x = x - 1, _y = y - 1; _x >= 0 && _y >= 0 && arrchessboard[_x][_y] == (int)color; _x--, _y--, adjsame[7]++) ;
            for (; _x >= 0 && _y >= 0 && arrchessboard[_x][_y] == NONE; _x--, _y--, adjempty[7]++) ;
            for (; _x >= 0 && _y >= 0 && arrchessboard[_x][_y] == (int)color; _x--, _y--, jumpsame[7]++) ;
            for (; _x >= 0 && _y >= 0 && arrchessboard[_x][_y] == NONE; _x--, _y--, jumpempty[7]++) ;

            for (int i = 0; i < 4; i++)
            {
                if (adjsame[i] + adjsame[i + 4] >= 4)
                {
                    res[i] = win;
                }
                else if (adjsame[i] + adjsame[i + 4] == 3)
                {
                    if (adjempty[i] != 0 && adjempty[i + 4] != 0)
                        res[i] = liveFour;
                    else if (adjempty[i] != 0 || adjempty[i + 4] != 0)
                        res[i] = deadFour;
                }
                else if ((adjsame[i] + adjsame[i + 4] + jumpsame[i] > 2 && adjempty[i] == 1) || (adjsame[i + 4] + adjsame[i] + jumpsame[i + 4] > 2 && adjempty[i + 4] == 1))
                {
                    res[i] = deadFour;
                }
                else if (adjsame[i] + adjsame[i + 4] == 2)
                {
                    if (adjempty[i] != 0 && adjempty[i + 4] != 0 && (adjempty[i] + adjempty[i + 4] > 2))
                        res[i] = liveThree;
                    else if ((adjempty[i] != 0 || adjempty[i + 4] != 0) && (adjempty[i] + adjempty[i + 4] >= 2))
                        res[i] = deadThree;
                }
                else if ((adjsame[i] + adjsame[i + 4] + jumpsame[i] > 1 && adjempty[i] == 1 && ((jumpempty[i] != 0 && adjsame[i + 4] != 0)))
                    || (adjsame[i + 4] + adjsame[i] + jumpsame[i + 4] > 1 && adjempty[i + 4] == 1 && ((jumpempty[i + 4] != 0 || adjsame[i] != 0))))
                {
                    res[i] = liveThree;
                }
                else if ((adjsame[i] + adjsame[i + 4] + jumpsame[i] > 1 && adjempty[i] == 1 && (!(jumpempty[i] == 0 || adjsame[i + 4] == 0)))
                    || (adjsame[i + 4] + adjsame[i] + jumpsame[i + 4] > 1 && adjempty[i + 4] == 1 && (!(jumpempty[i + 4] == 0 || adjsame[i] == 0))))
                {
                    res[i] = deadThree;
                }
                else if (adjsame[i] + adjsame[i + 4] == 1)
                {
                    if (adjempty[i] != 0 && adjempty[i + 4] != 0 && (adjempty[i] + adjempty[i + 4] > 3))
                        res[i] = liveTwo;
                    else if ((adjempty[i] != 0 || adjempty[i + 4] != 0) && (adjempty[i] + adjempty[i + 4] >= 3))
                        res[i] = deadTwo;
                }
                else if (adjsame[i] + adjsame[i + 4] == 0)
                {
                    if (adjempty[i] != 0 && adjempty[i + 4] != 0 && (adjempty[i] + adjempty[i + 4] > 4))
                        res[i] = liveOne;
                    else if ((adjempty[i] != 0 || adjempty[i + 4] != 0) && (adjempty[i] + adjempty[i + 4] >= 4))
                        res[i] = deadOne;
                }
            }

            return res;
        }
        public int evaluatePre(int x, int y, int[][] arrchessboard, chess_color color)
        {
            int[] my = new int[4];
            int[] mm = new int[12];
            int res = 0;
            my = fenXi(x, y, arrchessboard, color);
            for (int i = 0; i < 4; i++)
            {
                mm[i] = 0;
            }
            for (int i = 0; i < 4; i++)
            {
                mm[my[i]]++;
            }
            while (mm[win] > 0)
            {
                res = int.MaxValue - 10;
                return res;
            }
            if (mm[liveFour] > 0)
            {
                res += 15656250;
            }
            else if (mm[deadFour] > 1)
            {
                res += 9765625;
            }
            else if (mm[deadFour] > 0 && mm[liveThree] > 0)
            {
                res += 9765625;
            }
            else if (mm[liveThree] > 1)
            {
                res += 1953125;
            }
            else if (mm[deadThree] > 0 && mm[liveThree] > 0)
            {
                res += 390625;
            }
            else if (mm[liveThree] > 0)
            {
                res += 78125;
            }
            else if (mm[deadFour] > 0)
            {
                res += 15625;
            }
            else if (mm[liveTwo] > 1)
            {
                res += 3125;
            }
            else if (mm[deadThree] > 0)
            {
                res += 625;
            }
            else if (mm[liveTwo] > 0)
            {
                res += 125;
                mm[liveTwo]--;
            }
            else if (mm[deadTwo] > 0)
            {
                res += 25;
            }
            else if (mm[liveOne] > 0)
            {
                res += 5;
                mm[liveOne]--;
            }
            else if (mm[deadOne] > 0)
            {
                res += 3;
                mm[deadOne]--;
            }
            return res;
        }
        public int evaluate(int x, int y, int[][] arrchessboard, chess_color color)
        {
            int temp;
            int res = 0; 
            arrchessboard[x][y] = (int)color;
            for (int i = 0; i < 15; i++)
            {
                for (int j = 0; j < 15; j++)
                {
                    if (arrchessboard[i][j] != 0)
                    {
                        if (arrchessboard[i][j] == (int)color)
                        {
                            temp = evaluatePre(i, j, arrchessboard, color);
                            if (temp == int.MaxValue - 10)
                                return temp;
                            else res += temp;
                        }
                        else
                        {
                            temp = evaluatePre(i, j, arrchessboard, (color == chess_color.Chess_Clr_Black) ? chess_color.Chess_Clr_White : chess_color.Chess_Clr_Black);
                            if (temp == int.MaxValue - 10)
                                return int.MinValue + 10;
                            else res -= 3 * temp;
                        }
                    }
                }
            }
            arrchessboard[x][y] = 0;
            return res;
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图.com| 国产精品视频yy9299一区| 成人一二三区视频| 国产成人免费视| 国产一区啦啦啦在线观看| 蜜臀av亚洲一区中文字幕| 午夜av区久久| 日本视频在线一区| 男女激情视频一区| 国产一区欧美二区| 成人性生交大合| 成人av影视在线观看| 成人av电影在线观看| 97se亚洲国产综合在线| 91蝌蚪porny| 欧美挠脚心视频网站| 欧美va日韩va| 国产精品无码永久免费888| 国产精品不卡视频| 午夜影院在线观看欧美| 久久精品99国产精品日本| 国产一区二区三区| 波多野结衣在线一区| gogo大胆日本视频一区| 欧美色图免费看| 日韩女优视频免费观看| 国产精品毛片大码女人| 亚洲欧洲日韩在线| 日韩一区精品视频| 成人一级片在线观看| 欧美中文字幕一区二区三区亚洲| 制服丝袜成人动漫| 国产精品麻豆视频| 亚洲国产一区二区三区青草影视| 日本色综合中文字幕| 粉嫩一区二区三区在线看| av一区二区三区| 日韩一级视频免费观看在线| 日本一区二区在线不卡| 亚洲一区二区三区四区五区黄 | 国产激情视频一区二区在线观看 | 一区在线播放视频| 蜜臀99久久精品久久久久久软件| 成人免费毛片嘿嘿连载视频| 欧洲国内综合视频| 中文av一区二区| 日韩精品久久久久久| zzijzzij亚洲日本少妇熟睡| 91精品国产入口在线| 国产精品入口麻豆九色| 麻豆精品一二三| 日本道色综合久久| 精品99一区二区三区| 一区二区视频免费在线观看| 国产精品1区2区3区| 日韩一区二区三区在线| 亚洲永久免费av| 成人av高清在线| 久久久精品tv| 狠狠色丁香久久婷婷综合丁香| 欧美三级在线看| 亚洲伊人色欲综合网| 不卡一区二区中文字幕| 国产欧美一区二区精品性| 美女视频网站久久| 欧美久久久久久久久久| 亚洲综合精品久久| 91美女蜜桃在线| 国产精品麻豆欧美日韩ww| 国产福利一区二区| 国产日韩欧美综合一区| 韩国成人精品a∨在线观看| 日韩午夜激情电影| 麻豆一区二区三| 欧美喷水一区二区| 人人狠狠综合久久亚洲| 日韩午夜电影在线观看| 日本麻豆一区二区三区视频| 欧美一区二区三区爱爱| 美女精品自拍一二三四| 精品免费一区二区三区| 激情六月婷婷久久| 国产午夜精品一区二区三区嫩草 | 99久久伊人网影院| 中文字幕欧美日本乱码一线二线| 国产在线精品国自产拍免费| 精品福利在线导航| 国产成人av一区二区三区在线观看| 日韩欧美国产综合| 久久成人综合网| 久久综合色8888| 风流少妇一区二区| 亚洲欧洲一区二区三区| 色八戒一区二区三区| 亚洲精品美国一| 欧美精品三级在线观看| 久久国产三级精品| 日本一区二区成人在线| av福利精品导航| 日韩中文欧美在线| www久久久久| 91日韩精品一区| 日韩成人午夜电影| 国产午夜精品一区二区三区嫩草| 波多野洁衣一区| 日韩和欧美一区二区| 久久久久一区二区三区四区| 成人精品国产一区二区4080| 亚洲亚洲人成综合网络| 精品国产乱码久久久久久影片| 成人美女视频在线观看18| 亚洲成人午夜影院| 欧美国产日产图区| 9191成人精品久久| 99免费精品在线观看| 人人超碰91尤物精品国产| 国产精品久久三| 91精品国产欧美一区二区18| 粉嫩aⅴ一区二区三区四区| 五月综合激情网| 亚洲素人一区二区| 欧美成人a在线| 欧美亚洲丝袜传媒另类| 国产盗摄女厕一区二区三区| 亚洲国产wwwccc36天堂| 中文乱码免费一区二区| 日韩精品最新网址| 欧美综合久久久| 91污片在线观看| 久久国产生活片100| 亚洲成a人v欧美综合天堂下载| 国产亚洲精品aa| 欧美日韩三级在线| 91亚洲精华国产精华精华液| 精品一区二区免费视频| 一区二区久久久| 国产精品不卡在线观看| 国产亚洲视频系列| 精品剧情在线观看| 欧美一级欧美一级在线播放| 欧美三级电影网站| 99精品1区2区| 波多野洁衣一区| 成人av网站在线| 国产精品88av| 国产一区二区三区美女| 免费看黄色91| 免费欧美高清视频| 免费人成网站在线观看欧美高清| 亚洲国产另类精品专区| 亚洲欧美日韩电影| 一区在线观看视频| 亚洲天堂2016| 一区二区三区中文在线观看| 亚洲乱码精品一二三四区日韩在线 | 国产精品色哟哟| 国产精品久线在线观看| 国产精品午夜在线| 亚洲日本va午夜在线影院| 亚洲日本乱码在线观看| 亚洲精品视频一区二区| 亚洲精品国产视频| 日韩av电影天堂| 国产呦萝稀缺另类资源| 国产风韵犹存在线视精品| 国产91精品久久久久久久网曝门| 国产99精品视频| 99精品国产99久久久久久白柏| 91在线一区二区三区| 欧美系列日韩一区| 91精品国产91久久综合桃花| 久久综合久久鬼色| 中文字幕亚洲一区二区va在线| 亚洲精品一二三| 五月激情六月综合| 韩国女主播一区| 99精品热视频| 欧美日韩国产另类不卡| 精品不卡在线视频| 成人免费一区二区三区视频| 夜色激情一区二区| 精品中文字幕一区二区小辣椒| 国产成人aaaa| 欧美日韩国产成人在线免费| 精品国产一区二区在线观看| 亚洲欧洲三级电影| 麻豆精品在线播放| 99re亚洲国产精品| 日韩精品一区二区三区视频在线观看| 久久精品日产第一区二区三区高清版 | 国产欧美日韩三区| 亚洲无线码一区二区三区| 激情久久五月天| 欧洲国内综合视频| 中文天堂在线一区| 美国十次综合导航| 欧美视频完全免费看| 国产日韩综合av| 美女久久久精品| 欧美色手机在线观看|