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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Числа Фибоначчи - растолковать код http://www.cyberforum.ru/cpp-beginners/thread1243133.html
Я тут хочу попрактиковаться в С++, а именно на числах Фебиначи. Я нашел хороший код и хочу его модифицировать, но мне нужно чтоб ктото мне объяснил что за что отвечает. Помогите плз. ...
C++ Вычисление суммы Нужно написать программу чтобы в итоге она выдавала сумму: 1/1+3/2+5/3+7/4 ..... 99/50. При этом нужно использовать for, while and do_while. http://www.cyberforum.ru/cpp-beginners/thread1243126.html
Оптимизация робота C++
Написал вот эту задачу: Робот Имя входного файла: robot.in Имя выходного файла: robot.out Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайта В исследовательской лаборатории...
Кодировки (ошибки кодировки) в логировании C++
Здравствуйте. Работаю с WINAPI и оттуда нормально приходят наименования на русском. Вот решил логирование организовать и на этом повалился (приходят символы как при проблеме с кодировкой). Вопрос:...
C++ Текст в панели задач Windows http://www.cyberforum.ru/cpp-beginners/thread1243091.html
Какие есть функции для вывода текста на панель задач?
C++ Ошибка передачи параметра в функцию #include "stdafx.h" #include "War.h" int _tmain(int argc, _TCHAR* argv) { War warv("Battle"); warv.addWarrior(Barracks::createWarrior("Archer",warv),100); warv.LetTheWarBegin(); }... подробнее

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

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

15.08.2014, 22:16. Просмотров 917. Ответов 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-ое - неудачный).
0
Миниатюры
Случайное распределение кораблей по полю в игре "морской бой"   Случайное распределение кораблей по полю в игре "морской бой"  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru