【问题标题】:Generation of vector Grid For a Game为游戏生成矢量网格
【发布时间】:2012-10-16 16:56:21
【问题描述】:

我正在处理一个 c++ 项目,但我遇到了困难。我正在尝试从包含网格中哪些元素的向量生成一个网格。最初,向量将包含类似 (3,3) 的内容,我将简单地创建一个看起来像 XXX 的网格。如果是 (3,2,1),它将是 XX|X。括号中的第一个数字表示我的网格中 X 的总数(即使在删除 X 之后),随后的数字表示每列的 X 的数量,如上所示。

我遇到的问题是创建一个网格,该网格还跟踪已删除的 X,因此当我想重新创建它时,已删除 X 的空间就在那里并且不会被覆盖。

例如:初始网格 = XXX|XX =>(5,3,2) 后期网格 = OOX|XX => (3,1,2)

从“初始网格”生成网格很简单,但生成以后的网格很难(对我来说)。例如,我的新向量将为“Later Grid”保留 (3,1,2)。如果我想使用 (3,1,2) 表示生成“Later Grid”,我应该怎么做。任何帮助是极大的赞赏。

这不是家庭作业,这是我正在做的副业。

【问题讨论】:

  • 您在这方面做了哪些尝试?请发布一些代码并解释其输出是什么以及它与您想要的有何不同。
  • 你的问题很难理解。 (3,1,2) 不会唯一标识 OOX|XX,除非删除背后有某种逻辑。

标签: c++


【解决方案1】:

二维数组对您的程序来说不够用吗?假设您声明了一个最大地图大小的二维数组,然后使用两个自变量来表示之后的最大网格大小?

char Map[15][15] = {//...}
int Width = 15;
int Height = 15;

//Map decreases in size...
Width--;
Height--;
//all calculations are now based off of width and height(not the initial size of the array)

if(xpos < Width)
//do stuff 

【讨论】:

    【解决方案2】:

    听起来您正在解决持久性问题。我可能不完全理解您要做什么,但听起来您将阅读 (x:int, y:int, z:int)
    形式的一系列元组 在哪里

    x = total number of 'X' 
    y = 'X' before vertical bar
    z = 'X' after vertical bar 
    

    然后你想用'O'填充缺失的'X'。

    问题似乎是您丢失了有关网格初始状态的信息,因此不知道要填充多少“O”。

    如果我是你,我会添加另一个值来跟踪初始状态。这个值永远不会改变,并且会在第一次生成网格时填充“X”的初始数字。

    所以在你的例子中你有:

    初始网格 = XXX|XX =>(5,3,2) 后期网格 = OOX|XX => (3,1,2)

    尝试像这样向元组添加初始状态值

    初始网格 = XXX|XX =>(5,3,2,5) 后期网格 = OOX|XX => ( 3,1,2,5)

    现在你有一个 (x:int, y:int, z:int, n:int) 形式的元组

    x = total number of 'X' 
    y = 'X' before vertical bar
    z = 'X' after vertical bar 
    n = 'X' in initial state
    

    现在我们可以通过评估来确定要填充的“O”的数量

    n - x = number of 'O' to pad with 
    

    假设“X”的初始数量因元组而异,您还需要跟踪初始“X”状态。跟踪“X”的初始数量将允许您始终辨别每次连续迭代网格需要填充多少“O”

    【讨论】:

    • 我想到了。所以几分钟前我尝试使用一个向量来存储我的网格的初始状态,例如当调用函数时,向量用 1 实例化。当我从原始网格中删除一个 X 时,我更改了我刚刚创建的向量.我只是希望能够知道 O 在哪里重新创建网格。
    • @k.ken 我认为你想多了。如果你想为网格建模,那么为什么不使用字符串向量,即{"OOX", "XX"}
    • 是的,这取决于您要做什么,我认为 jrok 的想法很成功
    • jrok,当我的程序启动时,它会创建一个网格,即 vector 网格。网格的重新生成由递归工作的函数完成。感谢您的建议
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    相关资源
    最近更新 更多