gpt4 book ai didi

c++ - 网格的蛇形表示

转载 作者:行者123 更新时间:2023-11-30 05:19:09 27 4
gpt4 key购买 nike

我想用 C++ 编写一个小贪吃蛇游戏,我想知道表示游戏矩阵的最佳方式是什么。

我可以使用 2DArray(类似于 vector< vector< int >>),它将包含一些代表不同对象的值(例如:0 无,1 蛇,2 墙,3 食物,...)另一方面,我可以不为网格使用数组,而为不同的游戏对象使用多个数组(例如:vector< Wall >、vector < SnakeTile >、vector < Food >,...)。

我是否也应该考虑使用 std::deque 来代表我的蛇?

感谢您的帮助。

最佳答案

我认为你应该从围绕 std vector 编写一个包装器开始,它提供基于列、行的访问:

template<typename T>
class Matrix
{
private:
std::vector<T> grid;
size_t _cols, _rows;

public:
Matrix(const size_t& cols, const size_t& rows) :
_cols(cols), _rows(rows), grid(cols*rows);
{
}

T& at(const size_t& col, const size_t& row)
{
return grid[col + row * _cols];
}
}

这将代表您的网格。类型 T(或类)可以表示将包含有关单元格的所有信息的 Cell 对象。这样您的网格数据将被紧密打包并易于访问。

您还应该全面考虑您的 Scake 如何与您的 Grid 交互,以及这样做的后果是什么(您不能把水果放在蛇所在的地方吗?)。然后你可以在你的代码中插入这些 intractions,这将决定你的 Grid 和你的 Snake 应该如何交换信息(以及它们中的哪些)。

关于c++ - 网格的蛇形表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41297908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com