⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evalue.cs

📁 人工智能 五子棋的实现。AI算法比较高
💻 CS
📖 第 1 页 / 共 3 页
字号:
using System;
using System.Collections.Generic;
using System.Text;





namespace gobang
{
    class Evalue
    {
        private int va(int i, int j)
        {
            if ((i >= 0) && (j >= 0) && (i < 15) && (j < 15))
                return 1;
            else return 0;
        }
        public int[] evalue(int[][] chess_board)
        {
            int[] test = new int[7];
            int[] res = new int[2];
            int maxvalue = -90000;
            int maxi = 0;
            int value;
            {
                for (int i = 0; i < 15; i++)
                {
                    for (int j = 4; j < 15; j++)

                        if ((chess_board[i][j] != 2) && (chess_board[i][j - 1] != 2) && (chess_board[i][j - 2] != 2)
                            && (chess_board[i][j - 3] != 2) && (chess_board[i][j - 4] != 2))
                        {
                            value = 0;
                            int k;
                            for (k = 0; k < 5; k++)
                            {
                                if (chess_board[i][j - k] == 1)
                                    value++;
                                test[1 + k] = chess_board[i][j - k];
                            }


                            k = -1;
                            if (va(i, j - k) == 1)
                                test[1 + k] = chess_board[i][j - k];
                            else test[1 + k] = 2;
                            /* k=5;
                            if (va(i,j-k))
                                test[1+k]=chess_board[i][j-k];
                            else test[1+k]=2;

                            */
                            if (value == 5)
                                value = 90000;

                            if (value == 4)
                            {



                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 1000;
                            }
                            if (value == 3)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 100;
                            }

                            if (value == 2)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 50;
                                else value = 10;
                            }

                            if (value == 1)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 3;

                            }
                            if (value == maxvalue)
                                maxi++;
                            if (value > maxvalue)
                            {
                                maxi = 1;
                                maxvalue = value;
                                //	  cout<<1<<endl;
                                //	  cout<<i<<' '<<j<<endl;
                            }


                        }
                }
            }
            {
                for (int i1 = 0; i1 < 15; i1++)
                    for (int j = 4; j < 15; j++)
                        if ((chess_board[j][i1] != 2) && (chess_board[j - 1][i1] != 2)
                        && (chess_board[j - 2][i1] != 2) && (chess_board[j - 3][i1] != 2) && (chess_board[j - 4][i1] != 2))
                        {
                            value = 0;
                            int k;
                            for (k = 0; k < 5; k++)
                            {
                                if (chess_board[j - k][i1] == 1)
                                    value++;
                                test[1 + k] = chess_board[j - k][i1];
                            }

                            k = -1;
                            if (va(j - k, i1) == 1)
                                test[1 + k] = chess_board[j - k][i1];
                            else test[1 + k] = 2;
                            /* k=5;
                            if (va(j-k,i1))
                                test[1+k]=chess_board[j-k][i1];
                            else test[1+k]=2;


                  */
                            if (value == 5)
                                value = 90000;


                            if (value == 4)
                            {

                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 1000;
                            }
                            if (value == 3)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 100;
                            }
                            if (value == 2)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 50;
                                else value = 10;
                            }

                            if (value == 1)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 3;

                            }

                            if (value == maxvalue)
                                maxi++;
                            if (value > maxvalue)
                            {
                                maxi = 1;
                                maxvalue = value;
                                //		  cout<<2;
                            }
                        }
            }
            {
                for (int j = 4; j < 15; j++)
                    for (int i2 = 0; i2 <= j - 4; i2++)
                        if ((chess_board[i2][j - i2] != 2) && (chess_board[i2 + 1][j - i2 - 1] != 2)
                        && (chess_board[i2 + 2][j - i2 - 2] != 2) && (chess_board[i2 + 3][j - i2 - 3] != 2) && (chess_board[i2 + 4][j - i2 - 4] != 2))
                        {
                            value = 0;
                            int k;
                            for (k = 0; k < 5; k++)
                            {
                                if (chess_board[i2 + k][j - i2 - k] == 1)
                                    value++;
                                test[1 + k] = chess_board[i2 + k][j - i2 - k];
                            }


                            k = -1;
                            if (va(i2 + k, j - i2 - k) == 1)
                                test[1 + k] = chess_board[i2 + k][j - i2 - k];
                            else test[1 + k] = 2;
                            /* k=5;
                            if (va(i2+k,j-i2-k))
                                test[1+k]=chess_board[i2+k][j-i2-k];
                            else test[1+k]=2;


                  */
                            if (value == 5)
                                value = 90000;
                            if (value == 4)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 1000;
                            }
                            if (value == 3)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 100;
                            }
                            if (value == 2)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 50;
                                else value = 10;
                            }

                            if (value == 1)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 3;

                            }

                            if (value == maxvalue)
                                maxi++;
                            if (value > maxvalue)
                            {
                                maxi = 1;
                                maxvalue = value;
                                //		  cout<<3;
                            }
                        }
            }

            {
                for (int i3 = 1; i3 <=10; i3++)
                    for (int j = 0; j <= 10 - i3; j++)
                        if ((chess_board[i3 + j][14 - j] != 2) && (chess_board[i3 + j + 1][13 - j] != 2)
                        && (chess_board[i3 + j + 2][12 - j] != 2) && (chess_board[i3 + j + 3][11 - j] != 2) && (chess_board[i3 + j + 4][10 - j] != 2))
                        {
                            value = 0;
                            int k;
                            for (k = 0; k < 5; k++)
                            {
                                if (chess_board[i3 + j + k][14 - j - k] == 1)
                                    value++;
                                test[1 + k] = chess_board[i3 + j + k][14 - j - k];
                            }


                            k = -1;
                            if (va(i3 + j + k, 14 - j - k) == 1)
                                test[1 + k] = chess_board[i3 + j + k][14 - j - k];
                            else test[1 + k] = 2;
                            /* k=5;
                            if (va(i3+j+k,14-j-k))
                                test[1+k]=chess_board[i3+j+k][14-j-k];
                            else test[1+k]=2;


                  */
                            if (value == 5)
                                value = 90000;
                            if (value == 4)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 1000;
                            }
                            if (value == 3)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 5000;
                                else value = 100;
                            }
                            if (value == 2)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 50;
                                else value = 10;
                            }

                            if (value == 1)
                            {
                                if ((test[0] == 0) && (test[5] == 0))
                                    value = 3;

                            }

                            if (value == maxvalue)
                                maxi++;
                            if (value > maxvalue)
                            {
                                maxi = 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -