【发布时间】:2018-06-06 03:14:09
【问题描述】:
我在创建/绘制 tetrominos(俄罗斯方块)时遇到问题,我在 C++ 中使用 SFML 有哪些选择?
我尝试使用 switch 语句将它们绘制为凸形并给它们编号,但由于 L 和 J 形状是凹形的,所以这不起作用。
ConvexShape blocks;
blocks.setTexture(&tile);
// block generation and shape
default_random_engine randomGenerator(time(0));
uniform_int_distribution<int> blocktype(0,6);
int n = blocktype(randomGenerator);
switch (n)
{
case (0): blocks.setPointCount(4);
blocks.setPoint(0,Vector2f(0.0f,0.0f));
blocks.setPoint(1,Vector2f(18.0f,0.0f));
blocks.setPoint(2,Vector2f(18.0f,72.0f));
blocks.setPoint(3,Vector2f(0.0f,72.0f));
break;
case (1): blocks.setPointCount(4);
blocks.setPoint(0,Vector2f(0.0f,0.0f));
blocks.setPoint(1,Vector2f(36.0f,0.0f));
blocks.setPoint(2,Vector2f(36.0f,36.0f));
blocks.setPoint(3,Vector2f(0.0f,36.0f));
break;
case (2): blocks.setPointCount(8);
blocks.setPoint(0,Vector2f(0.0f,0.0f));
blocks.setPoint(1,Vector2f(18.0f,0.0f));
blocks.setPoint(2,Vector2f(18.0f,18.0f));
blocks.setPoint(3,Vector2f(36.0f,18.0f));
blocks.setPoint(4,Vector2f(36.0f,36.0f));
blocks.setPoint(5,Vector2f(18.0f,36.0f));
blocks.setPoint(6,Vector2f(18.0f,54.0f));
blocks.setPoint(7,Vector2f(0.0f,54.0f));
break;
case (3): blocks.setPointCount(8);
blocks.setPoint(0,Vector2f(0.0f,0.0f));
blocks.setPoint(1,Vector2f(18.0f,0.0f));
blocks.setPoint(2,Vector2f(18.0f,18.0f));
blocks.setPoint(3,Vector2f(36.0f,18.0f));
blocks.setPoint(4,Vector2f(36.0f,54.0f));
blocks.setPoint(5,Vector2f(18.0f,54.0f));
blocks.setPoint(6,Vector2f(18.0f,36.0f));
blocks.setPoint(7,Vector2f(0.0f,36.0f));
break;
case (4): blocks.setPointCount(8);
blocks.setPoint(0,Vector2f(0.0f,18.0f));
blocks.setPoint(1,Vector2f(18.0f,18.0f));
blocks.setPoint(2,Vector2f(18.0f,0.0f));
blocks.setPoint(3,Vector2f(36.0f,0.0f));
blocks.setPoint(4,Vector2f(36.0f,36.0f));
blocks.setPoint(5,Vector2f(18.0f,36.0f));
blocks.setPoint(6,Vector2f(18.0f,54.0f));
blocks.setPoint(7,Vector2f(0.0f,54.0f));
break;
case (5): blocks.setPointCount(6);
blocks.setPoint(0,Vector2f(0.0f,54.0f));
blocks.setPoint(1,Vector2f(0.0f,0.0f));
blocks.setPoint(2,Vector2f(18.0f,0.0f));
blocks.setPoint(3,Vector2f(18.0f,40.0f));
blocks.setPoint(4,Vector2f(36.0f,36.0f));
blocks.setPoint(5,Vector2f(36.0f,54.0f));
break;
case (6): blocks.setPointCount(6);
blocks.setPoint(0,Vector2f(0.0f,0.0f));
blocks.setPoint(1,Vector2f(54.0f,0.0f));
blocks.setPoint(2,Vector2f(54.0f,18.0f));
blocks.setPoint(3,Vector2f(36.0f,18.0f));
blocks.setPoint(4,Vector2f(36.0f,36.0f));
blocks.setPoint(5,Vector2f(18.0f,36.0f));
break;
}
【问题讨论】:
-
发布您尝试过的内容以及遇到的问题
-
是的,请贴出相关代码和switch语句。
-
@AyushGupta 我添加了你要求的东西
-
@MartinSand 在代码中添加了开关
-
@Ayush 根据您的要求更新了帖子