gpt4 book ai didi

c++ - 俄罗斯方 block 旋转 C++

转载 作者:行者123 更新时间:2023-11-28 06:21:47 24 4
gpt4 key购买 nike

我目前正在用 Qt C++ 编写俄罗斯方 block 。游戏即将完成,我唯一需要添加的是旋转。现在我正在努力解决的是轮换背后的理论。俄罗斯方 block 有 7 种不同的石头(I、S、Z、L、J、T、O)。不同形状的旋转是否有任何算法或类似的东西?

我不想做的是为 7 种不同的形状设置一个开关盒来处理旋转。此外,如果像 L 这样的形状旋转,它有 4 个不同的位置,必须以不同的方式处理。

所以我唯一想到的就是先问形状再问位置。这将授予我一些开关,否则如果在开关中...意味着需要输入很多内容并需要检查编译器。

附言我的石头结构看起来像这样:(Steine = 石头的德语,Art = 形状)

struct position
{
int X;
int Y;
};

struct Steine
{
struct position* Position;
int Art;
};

最佳答案

您可以为每个形状使用 bool 表示的二维数组。然后当你旋转一些特定的数组时,你旋转那个形状(也许在初始化时有代码生成所有旋转)并检查是否有任何像素在俄罗斯方 block 边界之外或者旋转的形状是否不应该旋转因为它的一些像素会与之前形状中的一些已经存在的像素位于相同的位置。

编辑:是的,就像你自己说的,最好是在纸上/油漆上试一下(关于旋转的中间点)。对于每种形状,您最终都会得到 3x3 或 4x4。对于 3x3,您围绕它的中点旋转,对于 4x4,例如围绕 1x1(其中索引从 0 到 3)。大约 9 年前,我就是这样玩俄罗斯方 block 的。

关于c++ - 俄罗斯方 block 旋转 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29194469/

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