首 页 | 报价 | 活动 | 硬件 | 数码 | 整机 | 手机 | 新闻 | DIY | 导购 | 学院 | 专题 | 市场地图 | 商家名录 | 商情 | 论坛 | 下载 | 电视 | 算命 | 读心术 | 游戏
您现在的位置: 首页>学院>开发平台>VC/C#>正文
走迷宫C#版(一)
文章来源: 文章作者: 发布时间:2006-03-28



  //迷宫类相关

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;

namespace MazeDemo
{
///
/// 迷宫类
///

public class CMaze
{
bool[,] mg; //地图格子
Stack stack; //堆栈
Point in_p; //入口点
Point out_p; //出口点
Point start_p; //绘制迷时候的起始点
Size boxsize; //每个格子的大小
int step_count; //共走多少步

public CMaze()
{
stack=new Stack();
this.start_p=new Point(0,0);
this.boxsize=new Size(50,50);
step_count=0;
}

public CMaze(bool[,] _mg):this()
{
this.mg=_mg;
}

public CMaze(bool[,] _mg,Point _in,Point _out):this()
{
this.mg=_mg;
this.in_p=_in;
this.out_p=_out;
Stack way=this.Test(this.in_p,_in);
stack.Push(new CCoor(this.in_p,way));
this.step_count ;
}


///
/// 绘制迷宫时窗口的起始坐标
///

public Point StartPoint
{
set{this.start_p=value;}
get{return this.start_p;}
}

///
/// 当前迷宫共走多少步
///

public int StepCount
{
get{return this.step_count;}
}

///
/// 迷宫格子大小
///

public Size BoxSize
{
set{this.boxsize=value;}
get{return this.boxsize;}
}

///
/// 堆栈数据个数
///

public int StackCount
{
get{return this.stack.Count;}
}

///
/// 绘制迷宫
///

///
public void DrawBox(Graphics g)
{
for(int i=0;i {
for(int j=0;j {
Point pp=new Point((j*BoxSize.Width) StartPoint.X,(i*BoxSize.Height) StartPoint.Y); //位置
SolidBrush brush;
Rectangle rect=new Rectangle(pp,BoxSize);

if(mg[i,j])
brush=new SolidBrush(Color.Green);
else
brush=new SolidBrush(Color.Red);
g.FillRectangle(brush,rect);
}
}
}

///
/// 绘制所走线路
///

///
public void DrawPath(Graphics g)
{
IEnumerator myEnumerator = stack.GetEnumerator();
while ( myEnumerator.MoveNext() )
{
CCoor c=new CCoor();
c=(CCoor)myEnumerator.Current;
Point pp=new Point((c.CurrentPoint.Y*BoxSize.Width) StartPoint.X,(c.CurrentPoint.X*BoxSize.Height) StartPoint.Y);
SolidBrush brush=new SolidBrush(Color.Blue);
Rectangle rect=new Rectangle(pp,BoxSize);
g.FillRectangle(brush,rect);
}
}

///
/// 绘制当前位置的可行路径
///

///
public void DrawNextPath(Graphics g)
{
CCoor c=(CCoor)this.stack.Peek();
Stack s=c.WayPath;
IEnumerator myEnumerator=s.GetEnumerator();
while(myEnumerator.MoveNext())
{
Point p=(Point)myEnumerator.Current;
Point pp=new Point((p.Y*BoxSize.Width) StartPoint.X,(p.X*BoxSize.Height) StartPoint.Y);
SolidBrush brush=new SolidBrush(Color.Yellow);
Rectangle rect=new Rectangle(pp,BoxSize);
g.FillRectangle(brush,rect);
}
}

///
/// 判断迷宫是否走完
///

///
public bool IsEnd()
{
CCoor coor=(CCoor)this.stack.Peek(); //当前位置信息
if( coor.CurrentPoint.X==this.out_p.X


上一篇:走进C#(我的C#学习之旅) 之四(3)
下一篇:怎样通过Visual C#.net创建一个DTS任务
精彩推荐     
关于我们 | 广告服务 | 建站服务 | 招贤纳士 | 会员服务 | 网站地图 | RSS订阅 | 联系我们

实名:中原硅谷网、电脑报价、电脑硬件报价 客服电话:0371-63659150

中原硅谷网 WWW.ZZIT.COM.CN&WWW.ZZ-IT.COM
2003-2007 版权所有