|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.08.2012, 17:04 | #1 |
Пользователь
Регистрация: 24.10.2010
Сообщений: 67
|
Расстановка кораблей в морском бою
Я делаю игру "морской бой" но при вводе компьютера возникают проблемы вот последняя и самая печальная
Код:
Код рабочий но не эффективный в том плане, что при в воде последних кораблей он сильно часто выбирает уже занятые места и перегружает память в следствии чего выдаёт ошибку. Подскажите как исправить
Если я нарушил какие-либо правила прошу простить и сообщить...
|
20.08.2012, 16:32 | #2 |
Пользователь
Регистрация: 06.10.2008
Сообщений: 13
|
Не хочется детально разбираться в коде, тем более имхо некрасивом.
Могу посоветовать лишь идею, как можно расставить корабли случайным образом. Благо поле не большое, так что можно делать все в лоб. 1) Перебираем все типы кораблей в цикле, для каждого типа - перебираем нужно кол-во. Интуитивно хочется расставить сначала 4-палубник, потом 3-палубники и т.д. Возможно если расставлять в другом порядке, то не хватит места. 2) Перебираем в случайном порядке два направления: горизонтальное и вертикальное. 3) Для каждого очередного корабля и выбранного направления имеем массивчик пустых клеток на доске. Перемешиваем массив случайным образом и пробуем поставить корабль в очередную клетку массива, если получилось - переходим к следующему кораблю. Кажется, что такой алгоритм часто будет работать. Возможно существуют ситуации, когда расставить не получится. Тогда надо смотреть, насколько часто такие ситуации происходят. Если очень редко, то можно весь алгоритм запустить в цикле: пока (не расставим корабли нормально) {srand(clock()); алгоритм();}. Если работать будет плохо, можно попробовать какой-нибудь метод отжига или генетический алгоритм. А еще лучше погуглить на эту тему. Будут вопросы - обращайтесь. P.S. Конечно, это самая наивная случайная расстановка. По-моему вы ее и хотели реализовать. Более разумно ставить большие корабли в кучу. Достичь на компьютере этого можно присвоив каждой клетке индекс привлекательности, и при установке волнообразно увеличивать этот индекс, начиная с соседних клеток. Ну и при установке корабля учитывать это число как-нибудь. Последний раз редактировалось Nixond; 20.08.2012 в 16:41. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Расстановка кораблей в морском бою | shrek1993 | Visual C++ | 1 | 19.04.2013 00:03 |
Вопрос по Морскому бою | Stwl3 | Компоненты Delphi | 4 | 03.05.2011 20:30 |
Стратегия в морском бою | Олександр17 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 13 | 28.11.2010 12:52 |
Расстановка кораблей в игре "Морской бой" | [MI_nor] | Общие вопросы C/C++ | 1 | 23.05.2009 00:23 |
Как расставить корабли в морском бое? | Vsadnik | Общие вопросы C/C++ | 1 | 24.12.2008 16:28 |