Мне было поручено создать простой клон Сапер для класса C / C ++. Это требует некоторого использования двумерного массива 10x10 в качестве минного поля.
Мне нужно будет расположить 5 мин случайным образом на поле. Пустые пятна должны быть заполнены пробелом (''), а пятна с минами должны быть заполнены хешем ('#').
Вот код для создания 2D-массива. Массив был объявлен вне (выше) функции main (), но был инициализирован внутри функции main ():
...
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
static char minefield[10][10];
main(){
for (int row = 0; row < 10; row++){
for (int colm = 0; colm < 10; colm++){
minefield[row][colm] = ' ';
}
}
...
При этом я объявил массив и заполнил все пробелы пробелами. У меня есть код для распечатки массива, и он, кажется, содержит другие символы. Однако я не могу сказать, заполняет ли этот массив массив пробелами или чем-то еще, например, null.
Далее, часть, в которой, как мне кажется, проблема заключается: Установка мин. Мины должны быть размещены в пяти случайных местах по всему массиву, который обрабатывается циклом for. Цикл также проверяет, занято ли пространство, и будет продолжать цикл до тех пор, пока пять мин не будут успешно установлены.
...
srand(time(0)); //Defining seed for random
int randRow;
int randColm;
for (int count = 0; count < 5;){
randRow = rand() % 10;
randColm = rand() % 10;
if (minefield[randRow][randColm] != ' '){ //tests if space is occupied
continue;
}
minefield[randRow][randColm] = '#'; //planting the mine
count++;
}
...
После некоторой отладки я обнаружил, что код, кажется, останавливается / зависает в
minefield[randRow][randColm] = '#';
На этом этапе программа просто завершает работу и печатает время выполнения, равное нескольким секундам.
Кажется, моя среда IDE не сообщает об ошибках (я использую кодовые блоки).
Что я делаю не так?