Как рисовать блоки в тетрисе с меньшим количеством кода?

Есть ли способ сделать часть «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;
}

-1

Решение

Чтобы расширить мысли Таса, вы можете написать функцию для проверки таких координат, как эта.

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 << " ";
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]