哪个类有责任在Board(2d矩阵)上设置Piece的像素?件或板?

dev*_*ium 9 c# java oop

所以,我目前有一个BoardPieces 组成的课程.每个Piece都有一个颜色和一个描述作品类型的字符串.它还有一个2d矩阵,其位设置为开或关,这使我可以知道哪些像素用所需颜色绘制.

我的问题是,哪个班级应该负责在棋盘上绘制作品?一方面,我会说Piece班级应该这样做.但要做到这一点,我必须传递一个Board作为参考PieceDraw()方法,虽然它并不可怕但我发现它有点尴尬.这引起了Piece将"知道"Board类的问题.

另一方面,我可以Piece拥有一个

Boolean[,] IsPixelSet(int x, int y)
Run Code Online (Sandbox Code Playgroud)

然后董事会将采用以下形式的方法:

void DrawPieceOnBoard() {
    for (int y = 0; y < height; ++y) {
        for (int x = 0; x < width; ++x) {
            if (piece.IsPixelSet(x, y) {
                board.DrawPixelAt(x, y, piece.GetColor());
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你会怎么做?为什么?我无法在任何这些方法中看到明显的赢家.

谢谢

编辑

我不是在谈论实际在屏幕上绘制东西.会发生的事情是我正在实施俄罗斯方块游戏(目前没有GUI),我需要随时将棋盘上不同位置的像素设置为落地.该板基本上只有(x,y)点中的每一个都有一个存取器和一个mutator.我们现在说我想在棋盘上绘制一个Square(一种棋子).如果该板块知道该板块及其Draw()方法是否对板块进行了更改,或者板块是否应该访问Piece的getter方法并自行完成?

pas*_*cal 2

我想说这件作品很吸引人。例如,您的函数不允许增强片段以允许它们具有多种颜色。

Piece 不必知道所有的 Board,只需知道一些方法(可能是接口的一部分)Draw(x,y,color)