不确定我应该把我的方法放在哪个 class
Not sure which class I should put my method in
我目前正在开发一款简单的 2D 网格游戏。游戏的网格由单元格组成。一个牢房可以包含(除其他外)地雷或炸弹。
与我的问题相关的 classes 是: Player ; 棋盘和游戏
这就是我的 classes 在彼此之间的使用方式:
class游戏代表一个游戏的所有细节:
public class Game
{
private Board board;
private Player player;
//Currently using
public void placeMine(Player owner, int x, int y);
}
Boardclass主要是Cell
的二维数组
public class Board
{
private Cell[][] board;
}
Cellclass可以包含地雷
public class Cell
{
private boolean containsMine;
}
Playerclass代表一个玩家。玩家应该能够在棋盘上放置地雷或炸弹。
public class Player
{
//placeMine() here ?
public void placeMine(int x, int y);
}
现在的问题是:我应该把我的 placeMine()
方法放在哪里?
我的“现实生活逻辑”让我想把 placeMine()
放在 Player 中,因为从逻辑上讲,这是一个在地上放置地雷的玩家。然而,这样做意味着 Player class 必须能够访问 Board 的实例(因为地雷将被放置在板上。在更准确地登机)。
给 Player class 一个 Board 的实例听起来很糟糕,因为玩家不“拥有” 董事会。 Board 的实例可以作为参数提供给 placeMine()
方法,但我不太确定这样做的感受。
我目前正在使用的另一种选择是 游戏 中有 placeMine()
。我相信以这种方式使它工作更容易并且更容易理解。与我每次都必须通过整个董事会相比,感觉更像是一个通过节日的实例。
但这并不符合我对整个事情的直觉(即 Player 放置地雷,而不是 Game 放置地雷一个地雷)。
如果重点是拥有一个清晰、易于理解、可扩展的架构,那么最好的方法是什么?
placeMine()
方法属于 Game
class。
您的游戏架构在逻辑上分为(模型-视图-控制器):
- 型号:电路板/电芯
- 控制器:游戏
- Helper classes: Player(如果它有其他属性,我的可能是另一个)
模型包含游戏的状态。控制器负责管理游戏的每一轮,并相应地更新状态。游戏的动作由控制器处理。虽然玩家是一个回合的'owner',也许是一个单元格的所有者等,但游戏代表玩家在任何给定的回合放置地雷,并相应地更新状态。
我目前正在开发一款简单的 2D 网格游戏。游戏的网格由单元格组成。一个牢房可以包含(除其他外)地雷或炸弹。 与我的问题相关的 classes 是: Player ; 棋盘和游戏
这就是我的 classes 在彼此之间的使用方式:
class游戏代表一个游戏的所有细节:
public class Game
{
private Board board;
private Player player;
//Currently using
public void placeMine(Player owner, int x, int y);
}
Boardclass主要是Cell
的二维数组public class Board
{
private Cell[][] board;
}
Cellclass可以包含地雷
public class Cell
{
private boolean containsMine;
}
Playerclass代表一个玩家。玩家应该能够在棋盘上放置地雷或炸弹。
public class Player
{
//placeMine() here ?
public void placeMine(int x, int y);
}
现在的问题是:我应该把我的 placeMine()
方法放在哪里?
我的“现实生活逻辑”让我想把 placeMine()
放在 Player 中,因为从逻辑上讲,这是一个在地上放置地雷的玩家。然而,这样做意味着 Player class 必须能够访问 Board 的实例(因为地雷将被放置在板上。在更准确地登机)。
给 Player class 一个 Board 的实例听起来很糟糕,因为玩家不“拥有” 董事会。 Board 的实例可以作为参数提供给 placeMine()
方法,但我不太确定这样做的感受。
我目前正在使用的另一种选择是 游戏 中有 placeMine()
。我相信以这种方式使它工作更容易并且更容易理解。与我每次都必须通过整个董事会相比,感觉更像是一个通过节日的实例。
但这并不符合我对整个事情的直觉(即 Player 放置地雷,而不是 Game 放置地雷一个地雷)。
如果重点是拥有一个清晰、易于理解、可扩展的架构,那么最好的方法是什么?
placeMine()
方法属于 Game
class。
您的游戏架构在逻辑上分为(模型-视图-控制器):
- 型号:电路板/电芯
- 控制器:游戏
- Helper classes: Player(如果它有其他属性,我的可能是另一个)
模型包含游戏的状态。控制器负责管理游戏的每一轮,并相应地更新状态。游戏的动作由控制器处理。虽然玩家是一个回合的'owner',也许是一个单元格的所有者等,但游戏代表玩家在任何给定的回合放置地雷,并相应地更新状态。