Функция возрождения C

#c #arrays #shapes #spawn #tetris

#c #массивы #формы #возрождение #тетрис

Вопрос:

Я хочу, чтобы, когда x равно 19, чтобы заполнить эту позицию этим символом * и возродить другой символ * как в игре tetris, мой подход не работает, потому что я сбрасываю x на 1, но позиции x = 19 и y = 10 не заполнены этим символом *.

Вот что я пробовал до сих пор:

 #include<iostream>
#include<conio.h>

using namespace std;

char arr[20][20];

int x = 1;

int y = 10;

void spawn()
{

    for (int i = 0; i < 20; i  )
    {
        for (int j = 0; j < 20; j  )
        {
        arr[i][j] = '#';
        arr[x][y] = '*';
        }
    }
}

void draw()
{

    spawn();
    for (int i = 0; i < 20; i  )
    {
        for (int j = 0; j < 20; j  )
        {
        cout << arr[i][j];
        }
        cout << endl;
    }
}


void respawn()

{

    if (x == 19) x = 1;
}

int main()
{

    while (true)
    {
        draw();
        sleep(1);
        x  ;
        respawn();
        system("cls");
    }
    return 0;}
 

Комментарии:

1. Возможно, ваша проблема в том, что вы предполагаете, что C использует основной порядок столбцов для массивов? Это не так. Он использует основной порядок строк , поэтому вам следует поменять x местами и y и использовать arr[y][x] (что вместо этого заставило бы * отклониться вправо)

2. Кстати, почему вы ожидаете x=19 , что and y=10 будет заполнен * ? Вы делаете x , а затем немедленно вызываете respawn() which устанавливает x=1; , если x==19 так, что рисование не выполняется, когда x==19 . Также обратите внимание, что если вы заполняете крайний правый столбец ( 19 ), вам, вероятно, следует также заполнить крайний левый столбец ( 0 ).

3. Вы устанавливаете arr[x][y] = '*'; 400 раз для фиксированных значений x и y . Для чего? Ваша spawn заполняет всю доску, # а та, что находится в x, y * , — . Вы получаете именно то, что написали. Что вам нужно, так это массив, который будет содержать состояние игры. Вы будете отображать свои символы на основе этого массива. Больше не нужно стирать доску с каждым spawn .