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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

Случайное распределение кораблей по полю в игре "морской бой" - C++

15.08.2014, 22:16. Просмотров 906. Ответов 1
Метки нет (Все метки)

Привет всем кто читал мой предыдущий пост про векторы в морском боем, в той же фунции появилась новая проблема

После починки функции появилась новая проблема - иногда при тестировании возникает ситуация, что из за неравномерного распределения места 4-палубный корабль не помещается, и программа погружается в бесконечный цикл поиска места. Я попытался решить эту проблему так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void PlayerTable::fillRandom()
{
    reset();
    int all_types = 4;
    int count_ships = 4;
    int test = 0;
 
    for (int i = 1; i <= all_types; i++, --count_ships) {
        int j = 0;
        while (j < count_ships) {
            test++;
            Ship temp(i);
            if (addShip(temp)) { /*вывести добавл.корабли*/std::cout << temp.begin() << " " << temp.end() << "\n"; ++j; }
            if (test > 100) { break; fillRandom(); }  // если слишком много попыток поиска места - обнулить всю карту
            // if there is no free place for the figure -> make recursion
        }
    }
}
В 2 из 3 случаев все работает нормально, но в еще одном случае карта превращается в мешанину, и вместо 10 кораблей выводится 9 (скрины ниже).
Подскажите как решить эту проблему, моя логика здесь кончается.
Спасибо.

(1-ое фото - удачный случай, 2-ое - неудачный).
Миниатюры
Случайное распределение кораблей по полю в игре "морской бой"   Случайное распределение кораблей по полю в игре "морской бой"  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 22:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Случайное распределение кораблей по полю в игре "морской бой" (C++):

Игра "Морской бой" Рассстановка кораблей - C++
Пишу игру &quot;Морской бой&quot;. Нужно пока что только расставить корабли. На данный момент логика следующая. Все поле забито нулями (ноль - пустая...

Как реализовать AI в игре "Морской бой" - C++
Подскажите пожалуйста как лучше реализовать умную игру компьютера

Расстановка кораблей (морской бой) - C++
Доброго времени суток, при расстановке 2х палубных кораблей возникает проблема... При выборе точки уже занятой, система ломается и...

Консольный морской бой. Расстановка кораблей - C++
Добрый вечер, уважаемые форумчане. Хочу написать консольный морской бой. Начал с функции автоматической расстановки кораблей. Весь...

Проверить правильность расстановки кораблей. Морской бой - C++
Есть матрица NxM, где расставлены корабли. Корабли не стоят на краю матрицы, кол-во 4-х клеточных кораблей - 1, 3-х клет. - 2, 2-х...

Морской бой - программа зацикливается на расстановке кораблей - C++
Нужно написать курсовую(игру). Решила написать морской бой(пока что консольно). Написала программу для расстановки кораблей. Не могу...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,043
Завершенные тесты: 3
15.08.2014, 22:21 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Честно говоря, в коде копаться лень. (В пятницу вечером-то). Но что-то подсказывает, что начинать расставлять корабли лучше с самого большого.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2014, 22:21
Привет! Вот еще темы с ответами:

Морской бой. Ф-ция автоматической рассатновки кораблей. - C++
Добрый день, ув. форумчане! Есть задание написать консольный морской бой. Есть задача расстановки кораблей компьютера случайным образом....

Есть у кого-нибудь исходник игры "Морской Бой"? - C++
Ребят, может у кого завалялся исходник &quot;Морского Боя&quot;?

Морской бой: расставляется кораблей больше, чем положено - C++
Здравствуйте! Пишу игру &quot;Морской бой&quot; в консоли, и попалась одна неприятная ситуация. Есть функция заполнения поля случайными кораблями,...

Найти и исправить ошибки (игра "Морской бой") - C++
Ребят. На с++ пишу недавно. Решил сделать простенькую игру: &quot;Морской бой&quot;. Игра будет происходит только на одном поле. Вы вводите...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru