如何用更少的代码在俄罗斯方块中绘制块
How to draw blocks in Tetris with less code?
有没有办法用更少的代码打印"0"部分?我尝试了各种方法,但我只是疯狂地随机打印。如果我尝试使用一个变量的 for 循环,让 BlockX 数组在每次打印"0"时向上移动,它就会翻转出来。即使我将该变量上限为 3。
蒂亚
编辑:BlockX和BlockY是块的坐标。坐标在其他地方定义。
void Draw()
{
system("cls");
for (int i = 0; i < height + 1; i++)
{
for (int j = 0; j < width + 1; j++)
{
if (j == 10)
{
cout << "|";
}
if (j == width)
{
cout << "|";
}
else if ((j == BlockX[0] && i == BlockY[0]) || (j == BlockX[1] && i == BlockY[1]) || (j == BlockX[2] && i == BlockY[2]) || (j == BlockX[3] && i == BlockY[3]))
{
cout << "0";
}
else
{
cout << " ";
}
}
cout << endl;
}
为了扩展Tas的想法,你可以写一个函数来检查这些坐标,就像这样。
bool isBlockCoordinate(int i, int j)
{
return ((j == BlockX[0] && i == BlockY[0]) ||
(j == BlockX[1] && i == BlockY[1]) ||
(j == BlockX[2] && i == BlockY[2]) ||
(j == BlockX[3] && i == BlockY[3]));
}
你可以在循环中像这样调用它:
if (j == width)
{
cout << "|";
}
else if (isBlockCoordinate(i, j))
{
cout << "0";
}
else
{
cout << " ";
}
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制文本问题
- 在 QT C++中绘制/操作多边形
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 在现代OpenGL中,绘制GL_TRIANGLE奇怪的z轴行为的填充圆
- 如何用更少的代码在俄罗斯方块中绘制块
- Qt中的OpenGL不绘制红色方块