假设我创建了一个名为Grid的类,它是一个2D数组并具有函数
boolean canMove(Position fromPos, Position toPos) {
// Determines whether a we can move from fromPos to toPos
}
现在说我还有一个名为Player的类,只需在轮到他们中选择[UP,DOWN,LEFT,RIGHT]中的一个,然后调用canMove()来查看它们是否可以移动。
目前我的想法是构建每个玩家:
public Player(String name, Grid grid) {
this.name = name;
this.grid = grid;
}
当他们试图移动时,他们可以打电话:
public void move() {
//Pick a random move
...
//See if move is valid, if so make the move
if(grid.canMove(cur_pos, new_pos) {
move(cur_pos, new_pos);
}
}
我的问题是,让每个玩家引用网格是否正确?由于每个玩家总是会引用相同的网格(只有一个),有没有办法基本上使它成为网格的给定,而不必在构造函数中指定它?
答案 0 :(得分:0)
在结构化方面,每个玩家对网格的引用并没有多大意义。网格类应该有一个2d数组,其后面的播放器对象作为实例变量。
另外,canMove()不需要两个参数。您只需要一个参数。 canMove(Position newPos)将检查新位置是否有效。
答案 1 :(得分:0)
如果我们知道你的网格和移动方案是什么样的,那就更容易说了。
如果符合以下条件,您当前的设 您正在尝试将Player对象从网格上的一个tile拖动到另一个tile。 (这很不错)
如果你只想移动[向上,向下,向左,向右],为什么不让网格静态并调用Grid.movePlayer(Player p,int x,int y)之类的方法并处理那里的所有内容
答案 2 :(得分:0)
我怀疑这是任何一个正确答案,但在我看来,更好的设置将是: