我正在为学校进步设计一款基于文本的冒险游戏。我将每个“级别”设置为一个类,并将每个可探索区域(节点)设置为相应类中的方法。
让我困惑的是从一个节点移动到另一个节点的代码。由于每个节点最多连接到四个其他节点,因此我必须在每个方法中重复极其相似的代码块。
我更喜欢做的是在每个节点的开头包含一系列方法,如下所示:
public static void zero()
{
... adjacentNodes[] = {one(), two(), three(), four()};
}
然后将该数组发送到通用方法,并将玩家发送到正确的节点:
public static void move(...[] adjacentNodes, int index)
{
adjacentNodes[index];
}
我简化了我的代码,但这就是总体思路。这可能吗?
每当您想到函数指针时,您都会使用适配器模式(或其变体)将其转换为 Java。它会是这样的:
public class Node {
...
public void goNorth() { ... }
public void goSouth() { ... }
public void goEast() { ... }
public void goWest() { ... }
interface MoveAction {
void move();
}
private MoveAction[] moveActions = new MoveAction[] {
new MoveAction() { public void move() { goNorth(); } },
new MoveAction() { public void move() { goSouth(); } },
new MoveAction() { public void move() { goEast(); } },
new MoveAction() { public void move() { goWest(); } },
};
public void move(int index) {
moveActions[index].move();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)