尝试使用java创建一个网格Like this,我假设一个二维数组,我最终将把它变成跳棋游戏。制作网格非常容易,但我想知道的是我如何在视觉上表示这个数组,所以例如左边方格的第二行就像[0] [2]使每个方格对应一个数组索引。任何建议都会很棒,我完成了第一个java类,我知道这是我们下一堂课的第一个项目所以!我想弄明白,谢谢你的帮助!
答案 0 :(得分:0)
鉴于这是一个内部惯例,它完全取决于你:只需选择网格的一个角落,例如top-lef,作为 origin 。 (一般惯例是使用左上角作为原点,右下角使用[x-max] [y-max]。)
您的模型可以是单维栅格模型或二维数组,甚至是嵌套列表。模型的选择完全取决于用例和性能要求。对于你的情况 - 入门作业 - 二维阵列是一个简单而明智的选择。
要绘制到网格单元格@(i,j),您需要一个方法来获取给定网格单元格的画布坐标(x,y):
/** maps grid cell to coordinates of cell */
public Point getCoordinates(int i, int j);
这里有几个选择:你应该返回中心点吗?黑色正方形的中点,或其相对来源,例如它的左上角坐标?取决于你想要做什么。例如,如果要在每个单元格中渲染小图标,则paint api将采用您正在渲染的图像的左上角坐标,因此在这种情况下,返回原点是合理的。
您还需要确定是否需要从可视网格中的点映射到数据。例如,用户在画布中单击,您需要确定相应的数据单元格。 (你可能不需要这个)
/** maps point in canvas to a data cell - returned 'point' is (i, j) */
public Point getIndex (int x, int y);