我正在制作基于文本的游戏,我希望我的英雄能够在3x3网格内移动。我试着用二维数组很容易做到这一点。我遇到的问题是我想为英雄所在的每个网格调用一个方法。所以如果英雄在网格0,0然后我会调用atHouse()方法,如果他去了0,1我打电话atTree()方法。每种方法都会给出该区域的描述,其中的项目等......
所以,由于我无法在数组中存储方法,所以我想可能采取另一种方式。我只是不知道哪种方式可能是最好的。有没有人以高质量的方式建立一个比我描述的更好的世界?
答案 0 :(得分:1)
我认为一个基类的数组,用location
方法调用它describe()
将是最好的方法。然后,您可以继承house
类和tree
类。
或者您可以创建location
的实例并设置描述属性。
答案 1 :(得分:1)
不是将对象存储在数组中,而是可以定义一个将位置作为参数的方法。 说位置1表示英雄在0,0,位置2表示英雄在0,1。 您可以将方法定义为:
public void heroMoved(int position){
switch(position){
case 1:
call method associated
break;
case 2:
call method associated
break;
.
.
so on
}
}
答案 2 :(得分:1)
最简单的解决方案是创建工厂方法:
我建议使用一个带有每个位置名称的二维数组:
[
["House", "Tree", "etc"],
["etc", "etc", "etc"],
["etc", "etc", "etc"]
]
然后,您将该位置传递给您的工厂方法,该方法将获取要在交换机中使用的函数名称。显然,这个解决方案不是最好的,因为你必须明确定义每个方法调用。
public void runMethod(int row, int col)
{
string mName = myArray[row][col];
switch(mName)
{
case "House":
atHouse();
break;
//etc
}
}