存储麻将牌组数据的最佳方法是什么?

时间:2014-06-01 21:27:07

标签: arrays architecture data-modeling 2d-games mahjong

我正在计划一个孩子' Mahjong Solitaire的版本(从龟板布局开始,从那里开始工作)。我试图围绕如何存储Turtle布局tileset的每一层的数据。请参阅此处以获取示例:http://icarus.cs.weber.edu/~dab/cs3230/labs/lab.5/tile_layers.pdf

通常我会为每一层使用一个2D数组,并从0(最底部)到4(最顶部)使用一维数组,并允许层数超过(5,6, ...)。但是,有些瓷砖一次占据多个行和/或列。例如,在第0层(最底部)中,最左边的图块和最右边的2个图块一次占用两行,第4层(最上面)中的单个图块占据两列两列同时排。

存储此类tileset的最佳数据模型是什么?每个瓷砖是否应该有一个标志,用于将其移动到下一行和列的中途?

我在思考,有一个Tile对象,每个对象代表棋盘上144个棋子中的一个。然后,如上所述,所有图块都按层排列(每层的2D数组,所有图层都存储在一维数组中)。

注意:我正在考虑使用Javascript&这个项目的HTML5。它不会成为我向公众发布的东西,只是一个编程练习。

这是最好的方法吗?我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

我确实会像alikox建议的那样使用更精细的网格。我会使用2倍更细的网格,给每个图块一个唯一的id,所以一个常规图块现在使用四个网格的正方形,当你必须删除一个图块时,你只需要检查具有相同id的周围正方形并删除他们也是。

答案 1 :(得分:1)

实现此方法的方法不止一种,例如,您可以设置每个图块的x,y和z坐标。

class Tile {
    int x
    int y
    int z
}