📄 map.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace PathFinder
{
class Map
{
private int width, height;
public int Height
{
get { return height; }
set { height = value; }
}
public int Width
{
get { return width; }
set { width = value; }
}
public int[,] map; //地图各点代价
public Point[] direction = { new Point(1, 0), new Point(0, 1), new Point(0, -1), new Point(-1, 0) };//方向
public Map(int h, int w)
{
Height = h;
width = w;
map = new int[width, Height];
iniMap();
}
public void iniMap()
{
Random ran = new Random();
for (int i = 0; i < Width; i++)
{
for (int j = 0; j < Height; j++)
{
map[i, j] = ran.Next(1, 5);
}
}
}
public bool isIn(Point location)
{
return (((location.X >= 0 && location.X < Width) && (location.Y >= 0 && location.Y < Height)) ? true : false);
}
public bool canGo(Point location)
{
return ((isIn(location) && (map[location.X, location.Y] < 4)) ? true : false);
}
public void draw(Stack<Point> path)
{
if (path != null && path.Count > 0)
{
string str;
int[,] drawmap = new int[Width, Height];
Point aPoint = path.Pop();
str = aPoint.ToString();
drawmap[aPoint.X, aPoint.Y] = 2;
while (path.Count > 1)
{
aPoint = path.Pop();
str += "\n" + aPoint.ToString();
drawmap[aPoint.X, aPoint.Y] = 1;
}
if (path.Count > 0)
{
aPoint = path.Pop();
str += "\n" + aPoint.ToString();
drawmap[aPoint.X, aPoint.Y] = 3;
}
for (int i = 0; i < Height; i++)
{
for (int j = 0; j < Width; j++)
{
switch (drawmap[j, i])
{
case 0:
if (map[j, i] == 4)
{
Console.Write(" .");
}
else
Console.Write(" " + map[j, i]);
break;
case 1:
Console.Write("*" + map[j, i]);
break;
case 2:
Console.Write(" S");
break;
case 3:
Console.Write(" T");
break;
}
}
Console.WriteLine();
}
//Console.WriteLine(str);
}
else Console.WriteLine("No Way~~");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -