如何用更少的代码在俄罗斯方块中绘制块

How to draw blocks in Tetris with less code?

本文关键字:方块 绘制 俄罗斯 何用更 代码      更新时间:2023-10-16

有没有办法用更少的代码打印"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 << " ";
    }