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

📄 form1.cs

📁 a game simulate the horse chess (about artificial intelligence)
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;

namespace maxy
{
    public partial class Form1 : Form
    {
        int x = 0;
        int y = 0;
        int m =5;
        int n =5;
        int style = 1;
        int size = 50;
        int[,] S;
        Stack<PIX> mystack;
        PIX[] path;
        bool huitu = false;
        public Form1()
        {
            InitializeComponent();
            S = new int[m, n];
            for(int i=0;i<m;i++)
            {
                for(int j=0;j<n;j++)
                {
                    S[i, j] = -1;
                }
            }
        }

        private void buttonf_Click(object sender, EventArgs e)
        {
            try
            {
                int temp1 = int.Parse(textBox3.Text.Trim());
                int temp2 = int.Parse(textBox4.Text.Trim());
                m = temp1;
                n = temp2;
                S = new int[m, n];
                for (int i = 0; i < m; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        S[i, j] = -1;
                    }
                }
            }
            catch
            {
                MessageBox.Show("输入不合法!棋盘规模仍是5*5");
            }
            listBox1.Items.Clear();
            huitu = false;
            mystack = new Stack<PIX>();
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    S[i, j] = -1;
                }
            }
           
            x = int.Parse(textBox1.Text.Trim());
            y = int.Parse(textBox2.Text.Trim());
            PIX pix = new PIX();
            pix.x = x;
            pix.y = y;
            mystack.Push(pix);
            
           

            tryget(x, y);

            if (!testS())
            {
                MessageBox.Show("没有解!");
                path = mystack.ToArray();
                for (int i = path.Length - 1; i >= 0; i--)
                {
                    listBox1.Items.Add(i.ToString()+":  (" + path[i].x.ToString() + "," + path[i].y.ToString() + ")");
                }
                
            }
            

        }
        private bool tryget(int x, int y)
        {
            S[x, y] = 1;
            if (testS())
            {
                path = mystack.ToArray();
                int pace = 1;
                for (int i = path.Length-1; i >=0 ; i--)
                {
                    listBox1.Items.Add("第 "+pace. ToString()+" 个位置:  ("+path[i].x.ToString() + "," + path[i].y.ToString() + ")");
                    pace++;
                }
                this.button1.Enabled = true;
                return true;
            }
            bool tag = false;







            //---------------------------------------------------------------------选择优先执行的一段
            if (x >= 2 && y < n - 1&&style==1)//-------------------1
            {
                if (S[x - 2, y + 1] < 0)
                {

                    S[x - 2, y + 1] = 1;

                    PIX pix = new PIX();
                    pix.x = x - 2;
                    pix.y = y + 1;
                    mystack.Push(pix);


                    tag = tryget(x - 2, y + 1);
                }
            }
            if (x > 0 && y < n - 2&&style==2)//--------------------2
            {
                if (S[x - 1, y + 2] < 0)
                {

                    S[x - 1, y + 2] = 1;

                    PIX pix = new PIX();
                    pix.x = x - 1;
                    pix.y = y + 2;
                    mystack.Push(pix);


                    tag = tryget(x - 1, y + 2);
                }
            }
            if (x < m - 1 && y < n - 2&&style==3)//---------------3
            {
                if (S[x + 1, y + 2] < 0)
                {

                    S[x + 1, y + 2] = 1;

                    PIX pix = new PIX();
                    pix.x = x + 1;
                    pix.y = y + 2;
                    mystack.Push(pix);


                    tag = tryget(x + 1, y + 2);
                }
            }
            if (x < m - 2 && y < n - 1&&style==4)//---------------4
            {
                if (S[x + 2, y + 1] < 0)
                {

                    S[x + 2, y + 1] = 1;

                    PIX pix = new PIX();
                    pix.x = x + 2;
                    pix.y = y + 1;
                    mystack.Push(pix);


                    tag = tryget(x + 2, y + 1);
                }
            }
            if (x < m - 2 && y >= 1&&style==5)//-------------------5
            {
                if (S[x + 2, y - 1] < 0)
                {

                    S[x + 2, y - 1] = 1;

                    PIX pix = new PIX();
                    pix.x = x + 2;
                    pix.y = y - 1;
                    mystack.Push(pix);


                    tag = tryget(x + 2, y - 1);
                }
            }
            if (x < m - 1 && y >= 2&&style==6)//------------------6
            {
                if (S[x + 1, y - 2] < 0)
                {

                    S[x + 1, y - 2] = 1;

                    PIX pix = new PIX();
                    pix.x = x + 1;
                    pix.y = y - 2;
                    mystack.Push(pix);


                    tag = tryget(x + 1, y - 2);
                }
            }
            if (x > 0 && y >= 2&&style==7)//----------------------7
            {
                if (S[x - 1, y - 2] < 0)
                {

                    S[x - 1, y - 2] = 1;

                    PIX pix = new PIX();
                    pix.x = x - 1;
                    pix.y = y - 2;
                    mystack.Push(pix);


                    tag = tryget(x - 1, y - 2);
                }
            }
            if (x >= 2 && y >= 1&&style==8)//---------------------8
            {
                if (S[x - 2, y - 1] < 0)
                {

                    S[x - 2, y - 1] = 1;

                    PIX pix = new PIX();
                    pix.x = x - 2;
                    pix.y = y - 1;
                    mystack.Push(pix);


                    tag = tryget(x - 2, y - 1);
                }
            }
            //------------------------------------------------------------------------|选择优先执行的一段|













            
            if (x >= 2 && y < n - 1&&style!=1)//-------------------1
            {
                if (S[x - 2, y + 1] < 0)
                {
                    
                    S[x - 2, y + 1] = 1;

                    PIX pix=new PIX();
                    pix.x=x-2;
                    pix.y=y+1;
                    mystack.Push(pix);
               

                    tag =tryget(x - 2, y + 1);
                }
            }
            if (x > 0 && y < n - 2&&style!=2)//--------------------2
            {
                if (S[x - 1, y + 2] < 0)
                {
                    
                    S[x - 1, y + 2] = 1;

                    PIX pix = new PIX();
                    pix.x = x - 1;
                    pix.y = y + 2;
                    mystack.Push(pix);
                  

                    tag =tryget(x - 1, y + 2);
                }
            }

⌨️ 快捷键说明

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