基于文本的游戏运动

时间:2012-11-14 18:41:02

标签: java

我正在制作基于文本的游戏,我希望我的英雄能够在3x3网格内移动。我试着用二维数组很容易做到这一点。我遇到的问题是我想为英雄所在的每个网格调用一个方法。所以如果英雄在网格0,0然后我会调用atHouse()方法,如果他去了0,1我打电话atTree()方法。每种方法都会给出该区域的描述,其中的项目等......

所以,由于我无法在数组中存储方法,所以我想可能采取另一种方式。我只是不知道哪种方式可能是最好的。有没有人以高质量的方式建立一个比我描述的更好的世界?

3 个答案:

答案 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
    }
}