我在 C#/XNA 中创建一个蛇游戏是为了好玩,但这是练习一些好的对象设计的好机会。
蛇对象
有一个蛇对象,它本质上是一个链表,每个节点都是一个带有与地图相关的 X 和 Y 坐标的向量。
还有一些属性,例如蛇是否刚刚吃完(在这种情况下,不会为这次更新删除最后一个身体节点)、蛇移动的方向等。
地图对象
地图(游戏区域)将其内容保存在 2D 整数数组中 - 使用基元数组来存储地图应该可以减少内存消耗并且比向量数组更快(并且更容易)迭代。
内容在枚举 {Empty, Wall, Snake, Food} 中定义,然后将其存储在数组中的相关坐标处。
地图中还保留了对蛇对象的引用,以便每次调用渲染都会循环通过构成蛇的节点并将其渲染到地图上的正确位置。
问题!!
我的问题是......这种耦合是否太紧,在这种情况下是否有任何建议(即观察者模式)或者这种情况是否可以......
我试图想办法让蛇从需要知道地图使用的坐标系中解耦,但想不出一种方法让它工作并保持每个节点相对于每个节点的位置-其他。
任何答案表示赞赏,干杯!