Я начинаю на C, и мне просто нужно создать простую программу на CM-DOS, похожую на Bejeweled.«Сдвиг» элементов 2D-массива в пустые пространства внутри массива
Я почти закончил с кодировкой, но есть только одна проблема:
В Bejeweled, когда совпадения найдены, выше этих матчей элементы заменят пустые пространства, созданные с помощью спичек (так называемый «Pull Down»).
У меня возникли проблемы с ним, потому что программа просто игнорирует мой код для сноса и
просто выводят пустое пространство, как есть.
Помогите?
Моя программа представляет собой 2D-массив из [6] [6].
Инициализация (b); это функция, которая проверяет, имеет ли сгенерированный алфавит какие-либо совпадения с существующими алфавитами. Если да, то он будет перегруппировать сгенерированный алфавит в другой, пока не будет соответствовать.
Он в основном заполняет случайные алфавиты от «A» до «D» в b [8] [8], затем преобразует b [8] [8] в a [6] [6], затем печатает сетку.
Вот мой проблематичный снос код:
void pull(char a[6][6], char b[8][8])
{
int j=0,i=0,loop=0;
while(loop){
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= 5; j++)
{
if(a[i][j]==' ')
{
a[i][j]=a[i-1][j];
loop=1;
}
else if (a[i][j] == a[0][j])
{
a[i][j] = rand()%4 + 'A';
initialize(b);
}
}
}
}
}
Это то, что я хочу (для примера)
C A B C D C
A B C D B D
D C D !A A A! // Match Found
A B D C B C
B D C A C D
C D C B C C
Тогда
C A B C D C
A B C D B D
D C D ? ? ? // ? = space
A B D C B C
B D C A C D
C D C B C C
Тогда
C A B C D C
A B C ? ? ? // ? = space gets swapped upward
D C D D B D
A B D C B C
B D C A C D
C D C B C C
А потом
C A B ? ? ?
A B C C D C
D C D D B D
A B D C B C
B D C A C D
C D C B C C
Если? достигает максимальной высоты, он генерирует новые случайные алфавиты в?
C A B A* C* B* // *New Alphabets
A B C C D C
D C D D B D
A B D C B C
B D C A C D
C D C B C C
Для массива размера N ** **, действительные индексы массива являются ** 0 ** ** до N-1 **. – Mahesh
Причина, по которой я положил i = 1 до тех пор, пока i <= 5 не захочет? чтобы быть замененным вверх до i = 0, тогда код пойдет для моего оператора «else if», который будет работать только тогда, когда i = 0 –