Форум программистов, компьютерный форум CyberForum.ru

консольный морской бой - размещение кораблей - C++

Восстановить пароль Регистрация
 
ViT(Vet@l)
27 / 26 / 2
Регистрация: 13.12.2010
Сообщений: 333
29.11.2011, 19:25     консольный морской бой - размещение кораблей #1
Доброго времени суток!
Взялся за консольный морской бой. Сейчас на стадии расстановки компьютером кораблей.
Одним из условий является то, что нельзя ставить два корабля впритык. То есть, вокруг него должны быть свободные клетки.
C++
1
2
3
4
5
while(b[cifra1][cifra_bukva1] != ' ' || b[cifra1 + 1][cifra_bukva1] != ' ' || b[cifra1 - 1][cifra_bukva1] != ' ' || b[cifra1][cifra_bukva1+1] != ' ' || b[cifra1 ][cifra_bukva1-1] != ' ' || b[cifra1+1][cifra_bukva1+1] != ' ' || b[cifra1-1][cifra_bukva1-1] != ' ' || b[cifra1-1][cifra_bukva1+1] != ' ' || b[cifra1+1][cifra_bukva1-1] != ' ')
        {
            cifra1 = 1 + rand() % 10;
            cifra_bukva1 = 1 + rand() % 8;
        }
Делаем проверку всех клеток вокруг корабля. Если где-нибудь в центре поля, то все ок. Но если мы поставим, например, в верхний левый угол, то происходит зацикливание.
Вероятно из-за того, что мы хотим проверить клетки левее и выше (а выше и левее нету - использовано двумерный массив и выходит, что верхний левый элемент [0][0] и если отнимим -1, то будем искать непонятно где)
Посоветуйте, пожалуйста, как бы избежать подобную ошибку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 19:25     консольный морской бой - размещение кораблей
Посмотрите здесь:

C++ Консольный морской бой
C++ Морской бой. Ф-ция автоматической рассатновки кораблей.
Консольный морской бой. Расстановка кораблей C++
C++ Консольный морской бой
Расстановка кораблей (морской бой) C++
C++ Консольный морской бой, реализация циклами
Морской бой: расставляется кораблей больше, чем положено C++
Морской бой - программа зацикливается на расстановке кораблей C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru