如何用更少的代码在俄罗斯方块中绘制方块?
How to draw blocks in Tetris with less code?
有没有办法用更少的代码来打印“0”部分?我尝试了各种方法,但我只是疯狂地随机打印。如果我尝试使用一个带有变量的 for 循环,让 BlockX 数组在每次打印“0”时向上移动,它就会翻转。即使我将该变量限制为 3。
TIA
编辑: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 << " ";
}
有没有办法用更少的代码来打印“0”部分?我尝试了各种方法,但我只是疯狂地随机打印。如果我尝试使用一个带有变量的 for 循环,让 BlockX 数组在每次打印“0”时向上移动,它就会翻转。即使我将该变量限制为 3。
TIA
编辑: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 << " ";
}