我正在设计一个C ++控制台程序,它为Shapes
的电路板建模。唯一的规则是,必须将放在棋盘上的所有Shapes
添加到现有Line
(第一步除外)。每当Shape
放置在棋盘上时,它在水平和垂直方向都有Line
,即使它是该线的唯一成员。
我已经实现了Line
和Shape
个对象。我正在努力解决的问题是如何组织这些线路。给线一个位置(如在x,y坐标中)似乎不是一个好主意,因为板是动态的并且可以在任何方向上扩展。现在每条线只有一个方向,垂直或水平。我还需要能够将电路板打印到控制台,以便用户可以指示他们想要添加的位置。
有没有人对如何有效地模拟这种情况有任何想法?
答案 0 :(得分:1)
规则是什么并不完全清楚,但是如果你担心自由扩展的网格,你可以考虑将Shape
个对象存储在地图中:
typedef std::pair<int,int> TGridPos;
typedef std::map<TGridPos,Shape> TGrid;
也许你可以详细说明游戏玩法。
答案 1 :(得分:0)
允许x和y中的负位置。这将允许电路板在所有方向上均匀扩展(除了正和负的积分值的数量减1),而不需要更改坐标。
您的问题是如何显示它。如果存储min和max x和y索引,则可以使用for循环,如
for(int x = minX; x <= maxX; ++x) {
for(int y = minY; y <= maxY; ++y) {
// display at x,y
}
}
而不是x = 0和y = 0这是常见的。这很清楚,避免通过扩展板更改任何索引值的概念,并允许您使用索引。