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

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

?? gobang.cs

?? 人工智能 五子棋的實現(xiàn)。AI算法比較高
?? CS
字號:
?using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;

namespace gobang
{
    public partial class GoBang : Form
    {
        Socket m_socWorker;
        chess_color color;
        private bool myTurn;
        int[][] chess_board;
        int[][] chess_board_record;
        byte[] mes1;
        byte[] mes4;
        byte[] chess_info;
        bool isRequireStart = false, isRequireOrder = false;
        int[][] posx;
        int[][] posy;
        private Bitmap map;
        byte md;
        int i = 0;

        public GoBang()
        {
            InitializeComponent();
            map = new Bitmap(455, 455);
            this.pictureBox1.Image = (Image)map;
        }
        private void initial()
        {
            mes1 = new byte[1];
            mes4 = new byte[4];
            chess_info = new byte[8];
            chess_board = new int[15][];
            chess_board_record = new int[15][];
            posx = new int[15][];
            posy = new int[15][];
            for (int i = 0; i < 15; i++)
            {
                chess_board[i] = new int[15];
                chess_board_record[i] = new int[15];
                posx[i] = new int[15];
                posy[i] = new int[15];
            }
            int x = 17, y = 17;
            for (int i = 0; i < 15; i++)
            {
                for (int j = 0; j < 15; j++)
                {
                    posx[i][j] = x;
                    posy[i][j] = y;
                    x += 30;
                }
                x = 17;
                y += 30;
            }
            try
            {
                //create a new client socket ...
                m_socWorker = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
                String szIPSelected = "127.0.0.1";
                String szPort = "9527";
                int alPort = System.Convert.ToInt16(szPort, 10);

                System.Net.IPAddress remoteIPAddress = System.Net.IPAddress.Parse(szIPSelected);
                System.Net.IPEndPoint remoteEndPoint = new System.Net.IPEndPoint(remoteIPAddress, alPort);
                m_socWorker.Connect(remoteEndPoint);
            }
            catch (System.Net.Sockets.SocketException se)
            {
                MessageBox.Show(se.Message);
            }
        }

        private void sendData(byte[] require)
        {
            try
            {
                m_socWorker.Send(require);
            }
            catch (System.Net.Sockets.SocketException se)
            {
                MessageBox.Show(se.Message);
            }
        }

        private void start_Click(object sender, EventArgs e)
        {
            md = MessageDefine.COMM_MSG_FIRST;
            start.Enabled = false;
            startse.Enabled = false;
            initial();
            gameUnstarted();
        }

        private void startse_Click(object sender, EventArgs e)
        {
            md = MessageDefine.COMM_MSG_SECOND;
            start.Enabled = false;
            startse.Enabled = false;
            initial();
            gameUnstarted();
        }

        private void gameUnstarted()
        {
            bool notBegin = true;
            while (notBegin)
            {
                for (int i = 0; i < 15; i++)
                {
                    for (int j = 0; j < 15; j++)
                    {
                        chess_board_record[i][j] = 0;
                    }
                }
                m_socWorker.Receive(mes1);
                switch (mes1[0])
                {
                    case MessageDefine.COMM_MSG_FIRST:
                        myTurn = true;
                        color = chess_color.Chess_Clr_Black;
                        pictureBox2.Image = global::gobang.Properties.Resources.dib4;
                        break;
                    case MessageDefine.COMM_MSG_SECOND:
                        myTurn = false;
                        color = chess_color.Chess_Clr_White;
                        pictureBox2.Image = global::gobang.Properties.Resources.dib2;
                        break;
                    case MessageDefine.COMM_MSG_REJECTED:
                        m_socWorker.Receive(mes4);
                        break;
                    case MessageDefine.COMM_MSG_GAME_START:
                        notBegin = false;
                        break;
                }
                if (!isRequireOrder && !isRequireStart)
                {
                    byte[] mes = new byte[1];
                    mes[0] = md;
                    m_socWorker.Send(mes);
                    isRequireOrder = true;
                }
                else if (isRequireOrder && !isRequireStart)
                {
                    byte[] mes = new byte[1];
                    mes[0] = MessageDefine.COMM_MSG_GAME_REQUIRE_START;
                    m_socWorker.Send(mes);
                    isRequireStart = true;
                }
            }
            gameStarted();
        }

        private void gameStarted()
        {
            byte[] index = { 0, 0 };
            bool isNotEnd = true;
            while (isNotEnd)
            {
                if (myTurn == true)
                {
                    if (i == 16)
                        i = 0;
                repeat:
                    index = getIndex();
                    if (index == null)
                        return;
                    chess_info[1] = (byte)(color - 1);
                    chess_info[2] = index[0];
                    chess_info[3] = index[1];
                    mes1[0] = MessageDefine.COMM_MSG_CHESS;
                    m_socWorker.Send(mes1);
                    m_socWorker.Send(chess_info);
                    m_socWorker.Receive(mes1);
                    switch (mes1[0])
                    {
                        case MessageDefine.COMM_MSG_ACCEPT:
                            break;
                        case MessageDefine.COMM_MSG_REJECTED:
                            m_socWorker.Receive(mes4);
                            if (mes4[1] == MessageDefine.SOLUTION_ACTION_REPEAT)
                            {
                                chess_board_record[index[0]][index[1]] = -1;
                                goto repeat;
                            }
                            break;
                        case MessageDefine.COMM_MSG_LOSE:
                            label2.Text = "status: Lose";
                            isNotEnd = false;
                            break;
                        case MessageDefine.COMM_MSG_WIN:
                            label2.Text = "status: Win";
                            isNotEnd = false;
                            break;
                        case MessageDefine.COMM_MSG_DRAW:
                            label2.Text = "status: Draw";
                            isNotEnd = false;
                            break;
                        case MessageDefine.COMM_MSG_TIMEOUT:
                            label2.Text = "status:Time Out, Lose";
                            m_socWorker.Receive(mes1);
                            isNotEnd = false;
                            break;
                        default:
                            MessageBox.Show("1:" + mes1[0].ToString());
                            break;

                    }
                    i++;
                }
                if (isNotEnd == false)
                    continue;
                m_socWorker.Receive(mes1);
                switch (mes1[0])
                {
                    case MessageDefine.COMM_MSG_REJECTED:
                        m_socWorker.Receive(mes4);
                        break;
                    case MessageDefine.COMM_MSG_LOSE:
                        label2.Text = "status: Lose";
                        isNotEnd = false;
                        break;
                    case MessageDefine.COMM_MSG_WIN:
                        label2.Text = "status: Win";
                        isNotEnd = false;
                        break;
                    case MessageDefine.COMM_MSG_DRAW:
                        label2.Text = "status: Draw";
                        isNotEnd = false;
                        break;
                    case MessageDefine.COMM_MSG_CHESS:
                        m_socWorker.Receive(chess_info);
                        chess_board[chess_info[2]][chess_info[3]] = chess_info[1] + 1;
                        Graphics g = Graphics.FromImage(this.pictureBox1.Image);
                        if (chess_info[1] == 1)
                        {
                            g.DrawImage(global::gobang.Properties.Resources.white, posx[chess_info[2]][chess_info[3]] - 15, posy[chess_info[2]][chess_info[3]] - 15);
                        }
                        else
                        {
                            g.DrawImage(global::gobang.Properties.Resources.black, posx[chess_info[2]][chess_info[3]] - 15, posy[chess_info[2]][chess_info[3]] - 15);
                        }
                        this.Refresh();
                        myTurn = (myTurn == true) ? false : true;
                        break;
                    default:
                        MessageBox.Show(mes1[0].ToString());
                        break;
                }
            }
        }
        // the most important part
        private int va(int i, int j)
        {
            if ((i >= 0) && (j >= 0) && (i < 15) && (j < 15))
                return 1;
            else return 0;
        }
        private bool check(int[][] board, int i, int j)
        {
            int x, y;
            for (x = -3; x < 4; x++)
                for (y = -3; y < 4; y++)
                {
                    if ((System.Math.Abs(x) + System.Math.Abs(y) <= 4) && (!(x == 0 && y == 0)) && (va(x + i, y + j) == 1))
                    {
                        if (board[x + i][y + j] != 0)
                            return true;

                    }
                }
            return false;

        }

        private byte[] getIndex()
        {
            int[] maxo;
            byte[] res = new byte[2];

            maxo = findEndmin();

            res[0] = (byte)maxo[0];
            res[1] = (byte)maxo[1];
            return res;
        }

        private int[] findEndmin()
        {
            int minval = int.MaxValue;
            int val;
            bool pass = false;
            Computer computer = new Computer();
            int[] res = new int[3];
            byte x = 7, y = 7;
            CheckForbidden checkForbidden = new CheckForbidden();
            for (byte i = 0; i < 15; i++)
            {
                for (byte j = 0; j < 15; j++)
                {
                    if (chess_board[i][j] == 0)
                    {
                        if (chess_board_record[i][j] == -1)
                            continue;
                        if (!check(chess_board, i, j))
                            continue;
                        pass = true;
                        if (computer.checkWin(i, j, chess_board, color))
                        {
                            res[0] = i;
                            res[1] = j;
                            res[2] = int.MaxValue - 10;
                            return res;
                        }
                        chess_board[i][j] = (int)color;
                        val = findEndmax();
                        chess_board[i][j] = 0;
                        if (minval > val)
                        {
                            minval = val;
                            x = i;
                            y = j;
                        }
                        else if (minval == val)
                        {
                            if (System.Math.Abs(x - 7) + System.Math.Abs(y - 7) > System.Math.Abs(i - 7) + System.Math.Abs(j - 7))
                            {
                                x = i;
                                y = j;
                            }
                        }
                    }

                }
            }
            if (!pass)
                minval = int.MinValue + 10;
            res[0] = x;
            res[1] = y;
            res[2] = minval;
            return res;
        }
        private int findEndmax()
        {
            int maxval = int.MinValue;
            int val, x = 7, y = 7;
            bool pass = false;
            Computer computer = new Computer();
            int res;
            CheckForbidden checkForbidden = new CheckForbidden();
            for (byte i = 0; i < 15; i++)
            {
                for (byte j = 0; j < 15; j++)
                {
                    if (chess_board[i][j] == 0)
                    {
                        if (!check(chess_board, i, j))
                            continue;
                        pass = true;
                        if (computer.checkWin(i, j, chess_board,(color == chess_color.Chess_Clr_White) ? chess_color.Chess_Clr_Black : chess_color.Chess_Clr_White))
                            return int.MaxValue - 10;
                        val = computer.evaluate(i, j, chess_board, (color == chess_color.Chess_Clr_White) ? chess_color.Chess_Clr_Black : chess_color.Chess_Clr_White);
                        if (maxval < val)
                        {
                            maxval = val;
                            x = i;
                            y = j;
                        }
                        else if( maxval == val)
                        {
                            if (System.Math.Abs(x - 7) + System.Math.Abs(y - 7) > System.Math.Abs(i - 7) + System.Math.Abs(j - 7))
                            {
                                x = i;
                                y = j;
                            }
                        }
                    }

                }
            }
            if (!pass)
                res = int.MinValue + 10;
            res = maxval;
            return res;
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美日韩| 精品免费国产二区三区| 亚洲免费在线电影| 99re热这里只有精品视频| 中文字幕亚洲一区二区av在线| 国产麻豆精品在线| 欧美激情中文不卡| 99精品一区二区| 亚洲最大成人综合| 在线观看91av| 九一九一国产精品| 国产拍欧美日韩视频二区| 99久久免费精品高清特色大片| 综合久久久久综合| 欧美喷潮久久久xxxxx| 日本视频中文字幕一区二区三区 | 成人免费看视频| 自拍偷拍欧美激情| 777xxx欧美| 激情五月婷婷综合网| 中文在线一区二区| 在线亚洲一区二区| 蜜桃免费网站一区二区三区| 日本一区二区三区视频视频| 色综合天天综合色综合av| 日韩综合小视频| 国产丝袜在线精品| 欧美性猛片xxxx免费看久爱| 久久福利视频一区二区| 国产精品免费久久| 欧美另类一区二区三区| 成人三级在线视频| 天堂蜜桃一区二区三区| 中文字幕欧美国产| 555www色欧美视频| 成人av网在线| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品久久久久一区二区三区共| 欧美性色综合网| 国产成人综合网站| 日韩精品1区2区3区| 国产精品国产三级国产| 日韩一级黄色片| 91免费在线视频观看| 精品一区二区三区在线观看国产 | 久久午夜老司机| 色吧成人激情小说| 久久成人18免费观看| 亚洲视频一区在线观看| 欧美精品三级在线观看| 丰满岳乱妇一区二区三区| 午夜不卡av在线| 777久久久精品| 国产精品一区二区黑丝| 亚洲国产精品欧美一二99| 久久久久9999亚洲精品| 在线精品视频一区二区三四| 国产一区二区不卡老阿姨| 亚洲一区二区三区四区在线观看| 亚洲精品在线观| 欧洲激情一区二区| 懂色av一区二区在线播放| 丝袜国产日韩另类美女| 亚洲区小说区图片区qvod| 6080国产精品一区二区| 91首页免费视频| 国产成人三级在线观看| 日本一道高清亚洲日美韩| 亚洲欧美aⅴ...| 欧美国产欧美综合| 精品国产91洋老外米糕| 欧美久久一二三四区| 色偷偷久久人人79超碰人人澡| 国产乱码精品一品二品| 免费观看在线色综合| 亚洲一区二区三区美女| 亚洲一区二区三区视频在线播放| 中文字幕日韩一区二区| 久久欧美中文字幕| 欧美成人一区二区三区在线观看 | 日本高清成人免费播放| 成人福利在线看| 国产高清在线精品| 国产精品一区在线| 久久99精品国产麻豆不卡| 亚州成人在线电影| 亚洲三级理论片| 国产精品久久久久一区二区三区 | 处破女av一区二区| 国产一区91精品张津瑜| 蓝色福利精品导航| 久久精品国产亚洲高清剧情介绍| 午夜精品福利在线| 天天免费综合色| 无吗不卡中文字幕| 日韩激情一区二区| 亚洲精品免费在线播放| 午夜激情久久久| 日韩电影在线免费| 青青草国产成人99久久| 免费人成精品欧美精品| 日韩电影在线一区二区| 毛片av一区二区| 国产在线日韩欧美| 不卡电影一区二区三区| 97se亚洲国产综合自在线不卡| 91香蕉视频污在线| 欧亚洲嫩模精品一区三区| 欧美影片第一页| 91精品国产高清一区二区三区蜜臀| 91精品中文字幕一区二区三区| 欧美一区二区三区在线| 日韩女优制服丝袜电影| 久久一区二区三区国产精品| 久久亚洲二区三区| 久久久久久久综合日本| 国产午夜精品久久| 亚洲乱码国产乱码精品精的特点| 亚洲高清在线精品| 美女视频一区二区| 国v精品久久久网| 99在线精品视频| 欧美美女一区二区| 久久精品一区八戒影视| 亚洲人亚洲人成电影网站色| 轻轻草成人在线| 成人亚洲一区二区一| 欧美亚洲国产一区二区三区| 精品剧情在线观看| 亚洲天堂精品视频| 免费观看成人av| 成人伦理片在线| 精品少妇一区二区三区在线播放| 国产婷婷色一区二区三区四区| 亚洲精品视频免费看| 麻豆国产欧美一区二区三区| 懂色av中文字幕一区二区三区| 欧美日韩专区在线| 国产亚洲成aⅴ人片在线观看| 亚洲区小说区图片区qvod| 麻豆精品精品国产自在97香蕉| 国产剧情一区二区三区| 欧美亚洲图片小说| 欧美国产日产图区| 蜜臀av一区二区在线免费观看| 懂色av一区二区三区免费看| 欧美精品少妇一区二区三区| 国产精品久久毛片a| 麻豆极品一区二区三区| 欧美性做爰猛烈叫床潮| 91精品麻豆日日躁夜夜躁| 精品电影一区二区| 亚洲一区视频在线观看视频| 国产91对白在线观看九色| 欧美电影在线免费观看| 亚洲日本中文字幕区| 久久99久久久久久久久久久| 欧美卡1卡2卡| 亚洲午夜影视影院在线观看| 国产成人午夜视频| xfplay精品久久| 图片区小说区国产精品视频| caoporen国产精品视频| 久久婷婷一区二区三区| 午夜av一区二区三区| 成人99免费视频| 日韩一区二区三区免费观看| 亚洲免费观看高清完整| 奇米精品一区二区三区四区| 欧美伊人久久大香线蕉综合69| 国产女人水真多18毛片18精品视频| 久久不见久久见免费视频1| 欧美视频一二三区| 亚洲国产日产av| 91老师片黄在线观看| 国产精品私房写真福利视频| 国产福利一区二区三区| 久久免费视频色| 国精品**一区二区三区在线蜜桃| 日韩一区二区在线观看视频播放| 性感美女久久精品| 欧美色图在线观看| 久久这里只有精品视频网| 国产suv一区二区三区88区| 久久综合狠狠综合久久激情| 黄一区二区三区| 久久理论电影网| 激情小说欧美图片| 久久精品免费在线观看| 国产精品66部| 欧美激情综合网| 99久久精品国产导航| 亚洲婷婷综合色高清在线| 99精品国产91久久久久久| 国产精品视频你懂的| 97超碰欧美中文字幕| 亚洲aⅴ怡春院| 日韩欧美成人激情| 国产传媒一区在线| 中文字幕亚洲电影|