走迷宫C#版(二)

原创 2004年06月29日 15:33:00

//窗体,调用...

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;

namespace MazeDemo
{
 /// <summary>
 /// Form1 的摘要说明。
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.Button button1;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  ///
  private CMaze mymaze;
  private System.Windows.Forms.Button button2;
  private System.Windows.Forms.Button btnAbout;
  private System.Windows.Forms.Button btnRun;
  private System.Windows.Forms.Button btnReset;
  private System.Windows.Forms.Panel panel1;
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.Label label2;
  private System.Windows.Forms.Label label3;
  private System.Windows.Forms.Label label4;
  private System.Windows.Forms.Label label5;
  private System.Windows.Forms.Label label6;
  private System.Windows.Forms.Label label7;
  private System.Windows.Forms.Label label8;
  private System.Windows.Forms.Button button3;
  private System.ComponentModel.IContainer components=null;

  public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();

   //
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //
   bool[,] _mg=new bool[,]{{true,false,false,true,false,false,false},
         {true,true,true,true,true,true,true},
         {false,false,true,false,true,false,true},
         {false,false,true,false,true,false,false},
         {false,true,true,false,true,false,false},
         {true,true,false,false,true,true,false},
         {false,false,false,false,false,true,true}
           };
   mymaze=new CMaze(_mg,new Point(0,0),new Point(6,6));
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region Windows 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.button1 = new System.Windows.Forms.Button();
   this.button2 = new System.Windows.Forms.Button();
   this.btnAbout = new System.Windows.Forms.Button();
   this.btnRun = new System.Windows.Forms.Button();
   this.btnReset = new System.Windows.Forms.Button();
   this.panel1 = new System.Windows.Forms.Panel();
   this.label8 = new System.Windows.Forms.Label();
   this.label7 = new System.Windows.Forms.Label();
   this.label6 = new System.Windows.Forms.Label();
   this.label5 = new System.Windows.Forms.Label();
   this.label4 = new System.Windows.Forms.Label();
   this.label3 = new System.Windows.Forms.Label();
   this.label2 = new System.Windows.Forms.Label();
   this.label1 = new System.Windows.Forms.Label();
   this.button3 = new System.Windows.Forms.Button();
   this.panel1.SuspendLayout();
   this.SuspendLayout();
   //
   // button1
   //
   this.button1.Location = new System.Drawing.Point(360, 288);
   this.button1.Name = "button1";
   this.button1.TabIndex = 0;
   this.button1.Text = "Info";
   this.button1.Click += new System.EventHandler(this.button1_Click);
   //
   // button2
   //
   this.button2.Location = new System.Drawing.Point(360, 192);
   this.button2.Name = "button2";
   this.button2.TabIndex = 1;
   this.button2.Text = "Step";
   this.button2.Click += new System.EventHandler(this.button2_Click);
   //
   // btnAbout
   //
   this.btnAbout.Location = new System.Drawing.Point(360, 320);
   this.btnAbout.Name = "btnAbout";
   this.btnAbout.TabIndex = 2;
   this.btnAbout.Text = "About";
   this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click);
   //
   // btnRun
   //
   this.btnRun.Location = new System.Drawing.Point(360, 160);
   this.btnRun.Name = "btnRun";
   this.btnRun.TabIndex = 3;
   this.btnRun.Text = "Run";
   this.btnRun.Click += new System.EventHandler(this.btnRun_Click);
   //
   // btnReset
   //
   this.btnReset.Location = new System.Drawing.Point(360, 256);
   this.btnReset.Name = "btnReset";
   this.btnReset.TabIndex = 4;
   this.btnReset.Text = "Reset";
   this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
   //
   // panel1
   //
   this.panel1.Controls.Add(this.label8);
   this.panel1.Controls.Add(this.label7);
   this.panel1.Controls.Add(this.label6);
   this.panel1.Controls.Add(this.label5);
   this.panel1.Controls.Add(this.label4);
   this.panel1.Controls.Add(this.label3);
   this.panel1.Controls.Add(this.label2);
   this.panel1.Controls.Add(this.label1);
   this.panel1.Location = new System.Drawing.Point(360, 8);
   this.panel1.Name = "panel1";
   this.panel1.Size = new System.Drawing.Size(72, 144);
   this.panel1.TabIndex = 5;
   //
   // label8
   //
   this.label8.Location = new System.Drawing.Point(32, 120);
   this.label8.Name = "label8";
   this.label8.Size = new System.Drawing.Size(32, 16);
   this.label8.TabIndex = 7;
   this.label8.Text = "墙壁";
   //
   // label7
   //
   this.label7.BackColor = System.Drawing.Color.Red;
   this.label7.Location = new System.Drawing.Point(8, 112);
   this.label7.Name = "label7";
   this.label7.Size = new System.Drawing.Size(20, 20);
   this.label7.TabIndex = 6;
   //
   // label6
   //
   this.label6.Location = new System.Drawing.Point(32, 88);
   this.label6.Name = "label6";
   this.label6.Size = new System.Drawing.Size(32, 16);
   this.label6.TabIndex = 5;
   this.label6.Text = "已走";
   //
   // label5
   //
   this.label5.BackColor = System.Drawing.Color.Blue;
   this.label5.Location = new System.Drawing.Point(8, 80);
   this.label5.Name = "label5";
   this.label5.Size = new System.Drawing.Size(20, 20);
   this.label5.TabIndex = 4;
   //
   // label4
   //
   this.label4.Location = new System.Drawing.Point(32, 56);
   this.label4.Name = "label4";
   this.label4.Size = new System.Drawing.Size(32, 16);
   this.label4.TabIndex = 3;
   this.label4.Text = "可选方向";
   //
   // label3
   //
   this.label3.BackColor = System.Drawing.Color.Yellow;
   this.label3.Location = new System.Drawing.Point(8, 48);
   this.label3.Name = "label3";
   this.label3.Size = new System.Drawing.Size(20, 20);
   this.label3.TabIndex = 2;
   //
   // label2
   //
   this.label2.Location = new System.Drawing.Point(32, 24);
   this.label2.Name = "label2";
   this.label2.Size = new System.Drawing.Size(32, 16);
   this.label2.TabIndex = 1;
   this.label2.Text = "通路";
   //
   // label1
   //
   this.label1.BackColor = System.Drawing.Color.Green;
   this.label1.Location = new System.Drawing.Point(8, 16);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(20, 20);
   this.label1.TabIndex = 0;
   //
   // button3
   //
   this.button3.Location = new System.Drawing.Point(360, 224);
   this.button3.Name = "button3";
   this.button3.TabIndex = 6;
   this.button3.Text = "Auto";
   this.button3.Click += new System.EventHandler(this.button3_Click);
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(442, 348);
   this.Controls.Add(this.button3);
   this.Controls.Add(this.panel1);
   this.Controls.Add(this.btnReset);
   this.Controls.Add(this.btnRun);
   this.Controls.Add(this.btnAbout);
   this.Controls.Add(this.button2);
   this.Controls.Add(this.button1);
   this.MaximizeBox = false;
   this.Name = "Form1";
   this.Text = "Maze";
   this.Load += new System.EventHandler(this.Form1_Load);
   this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   this.panel1.ResumeLayout(false);
   this.ResumeLayout(false);

  }
  #endregion

  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }

  private void button1_Click(object sender, System.EventArgs e)
  {
   string msgstr="";
   msgstr+="迷宫简图:/n";
   msgstr+=mymaze.ToString();
   msgstr+="/n";
   msgstr+="堆栈信息:/n";
   msgstr+="当前数据总和:"+mymaze.StackCount.ToString()+"/n";
   msgstr+="当前所走步数:"+mymaze.StepCount.ToString()+"/n";

   MessageBox.Show(msgstr);
  }

  private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  {
   //e.Graphics.DrawRectangle(new Pen(Color.Red),0,0,10,10);
   mymaze.DrawBox(e.Graphics);
   mymaze.DrawPath(e.Graphics);
   mymaze.DrawNextPath(e.Graphics);
  }

  private void Form1_Load(object sender, System.EventArgs e)
  {

  }

  private void button2_Click(object sender, System.EventArgs e)
  {
   if(mymaze.Step()==1)
    MessageBox.Show("已到出口");
   this.Refresh();
  }

  private void btnRun_Click(object sender, System.EventArgs e)
  {
   mymaze.Run();
   this.Refresh();
  }

  private void btnReset_Click(object sender, System.EventArgs e)
  {
   mymaze.Reset();
   this.Refresh();
  }

  private void btnAbout_Click(object sender, System.EventArgs e)
  {
   MessageBox.Show("作    者: lovered (GV)/nM S N:
lovered_GV@hotmail.com/n完成日期: 04年04月04日");
  }

  private void button3_Click(object sender, System.EventArgs e)
  {
   mymaze.Reset();
   while(mymaze.Step()!=1)
   {
    this.Refresh();
    Thread.Sleep(500);
   }
   MessageBox.Show("已到出口");
  }

 }
}

走迷宫C#版(二)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 08:55
  • 122

java实现走迷宫算法

代码实现了 读取文件中迷宫地图,打印迷宫地图并找到一条出口。第一次写java代码,留着纪念。 package com.maze.path; import java.util.Stack; impor...
  • Active7
  • Active7
  • 2015年11月27日 11:47
  • 1099

纯 js 迷宫

/*一共2个文件  js 文件和 html 文件 ,ie下浏览正常*采用最短路径法编写*附效果图*//**  把js文件保存为 migong.js*//** migong.js*/ /** * @au...
  • fieldyang
  • fieldyang
  • 2009年09月03日 15:10
  • 2062

从算法学起C语言--老鼠走迷宫

转载请注明出处,谢谢~ 背景说明: 老鼠走迷宫是递回求解的基本问题,我们在二维阵列中用2表示迷宫墙壁,使用1来表示老鼠走过的路径,求出由入口到出口的路径。 大天朝白话文: 有迷宫挡在了你和妹子...
  • u011200844
  • u011200844
  • 2015年01月28日 15:37
  • 2968

【c++】利用循环和栈实现走迷宫

要求: 1、将地图的数组保存在文件中,从文件中读取行列数 2.、动态开辟空间保存地图 3.、运行结束后再地图上标出具体的走法 说明: 1、文件中第一行分别放置的是地图的行数和...
  • a1414345
  • a1414345
  • 2016年12月24日 17:42
  • 885

递归算法求老鼠走迷宫(C语言)

/*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。 解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后...
  • zhangchao3322218
  • zhangchao3322218
  • 2011年09月29日 17:32
  • 6174

老鼠走迷宫程序实例

/*--------------------------------------------------------------------------------------------//文件名称...
  • w9521423
  • w9521423
  • 2005年10月03日 20:47
  • 2359

一道走迷宫算法题python实现

前几天逛博客时看到了这样一道问题,感觉比较有趣,就自己思考了下方案顺便用python实现了一下。题目如下: 用一个二维数组表示一个简单的迷宫,用0表示通路,用1表示阻断,老鼠在每个点上可以移动相邻的东...
  • sinly100
  • sinly100
  • 2017年06月01日 16:47
  • 931

走迷宫C#版(一)

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 04:24
  • 166

Java与算法之(5) - 老鼠走迷宫(深度优先算法)

小老鼠走进了格子迷宫,如何能绕过猫以最短的路径迟到奶酪呢? 注意只能上下左右移动,不能斜着移动。 在解决迷宫问题上,深度优先的思路是沿着一条路一直走,遇到障碍或走出边界再返回尝试别的路径。 首先用一...
  • autfish
  • autfish
  • 2016年09月06日 13:47
  • 9779
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:走迷宫C#版(二)
举报原因:
原因补充:

(最多只允许输入30个字)