c#使用数组作为映射
本文关键字:映射 数组 | 更新日期: 2023-09-27 18:11:32
我对c#比较陌生,我正在创建一个基本的老派地下城任务游戏,以帮助我掌握visual studio和windows窗体。
我想使用对象的数组作为一个地图,我可以然后移动之间(请让我知道如果有一个更好的方法)。(编辑清楚)如果我从currentroom = maparray[0,1]开始,按左键会把它变成currentroom = maparray[0,0]
下面是我的数组代码: public object area_init()
{Area hall = new Area("Hall", "big hall", "null", false, 1, 2, false);
Area room = new Area("Room", "room", "null", false, 1, 2, false);
Area[,] maparray = { { hall, room, hall },
{ hall,hall,room},
{ hall,room,room}
};
object[,] maparray = new object[3,3];
我当时想指的是我目前在这样的房间(我知道这是不正确的):
txtbox_ticker.AppendText("You are in a " + maparray[0,1]);
然后更新一个'currentroom'变量来说明我在哪个房间。谁能告诉我最好的方法是什么,我哪里做错了?
区域可以被认为是连通图中的节点。边由特定节点所连接的节点定义。
你可以像这样定义你的区域类。
public class Area
{
public string Name {get;set;}
public string Left {get;set;}
public string Right {get;set;}
public string Up {get;set;}
public string Down {get;set;}
// if you really need an x-y location put it here.
}
然后在后台有一个字典来访问相关信息。字典是很好的,因为你可以使用一个房间的名字来访问它的属性,而不是一个索引。
Dictionary<string,Area> MyDungeon = new Dictionary<string,Area>();
// define two areas that are linked.
Area hall = new Area();
hall.Name = "hall"
hall.Left = "room"; // go left from here to get to the room
Area room = new Area();
room.Name = "room";
room.Right = "hall"; // go right to get to the hall
MyDungeon.Add(hall.Name,hall);
MyDungeon.Add(room.Name,room);
让用户在大厅开始。
Area CurrentArea = MyDungeon["hall"];
现在假设用户按下左箭头键,你需要处理它。您可以执行如下操作:
private void Move_PreviewKeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Left)
{
CurrentArea = MyDungeon[CurrentArea.Left];
txtbox_ticker.AppendText("You are now in " + CurrentArea.Name);
}
else if(e.Key == Key.Right)
{
CurrentArea = MyDungeon[CurrentArea.Right];
txtbox_ticker.AppendText("You are now in " + CurrentArea.Name);
}
}