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

C++

Войти
Регистрация
Восстановить пароль
 
falcon42
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 3
#1

Алгоритм обхода в игре "точки" - C++

07.02.2016, 20:28. Просмотров 365. Ответов 4
Метки нет (Все метки)

пишу игру "точки" на с++ в VS form, по клику заполняю два вектора с точками, vector<MyPoint> One; vector<MyPoint> Two; мне нужно найти все области длины одной клетки и проверить если там точка из другого вектора точек, не могу придумать алгоритм обхода, прощу помочь как можно скорее!!
https://ru.wikipedia.org/wiki/%D0%A2...B3%D1%80%D0%B0)
пробовал построение мин выпуклой оболочки, не подошел, думал как приделать волновой алгоритм, тоже не вышло
если есть идеи обхода или лучше код, буду очень признателен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2016, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм обхода в игре "точки" (C++):

Структуры данных в игре "Миллионер" - C++
Подскажите пожалуйста. Нужно: Описать используемые структуры данных для игры &quot;Кто хочет стать миллионером&quot;!! Очень нужна Ваша помощь. ...

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd" - C++
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере массива больше 950 в конце заполнения рандомным способом...

Курсач "Алгоритм Ершова" - C++
Вот, что-то написал такое, естественно позаимствовал куски кода, работает... НО! получается алгоритм раскраски путем перебора вершин! а мне...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz") - C++
Найти в строке последовательность символов (&quot;abcd&quot;) и заменить ее другой (&quot;xyz&quot;).

О "нестабильности" или "переполнении" цикла foreach - C++
Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь: оказывается, что цикл foreach может переполниться при...

Ошибка: invalid conversion from "int" to "SDL_RendererFlip" - C++
Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что делать

4
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
08.02.2016, 12:03 #2
Цитата Сообщение от falcon42 Посмотреть сообщение
клетки и проверить если там точка из другого вектора точек, не могу придумать алгоритм обхода,
https://ru.wikipedia.org Дерево_квадрантов
По моему в самый раз.
0
falcon42
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 3
08.02.2016, 13:22  [ТС] #3
закодил через рекурсию, кому интересно могу скинуть)
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 1
09.02.2016, 09:10 #4
Цитата Сообщение от falcon42 Посмотреть сообщение
кому интересно могу скинуть
Давай.
0
falcon42
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 3
09.02.2016, 15:28  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void volna1( int mestoX, int mestoY,int Player,int Wave, bool &VolnaKray)
{
   //Если волна дошла до края поля - выход из рекурсивного цикла
   if( VolnaKray ) return;
   //Вышло ли за край поля
   if( mestoX < 0 || mestoX > 400 || mestoY < 0 || mestoY > 400)
       {VolnaKray = true;
       return;}
   //Распространение волны в незанятые места
   if (matr[mestoX/h][mestoY/h].color != Player && matr[mestoX/h][mestoY/h].status == 0) 
       matr[mestoX/h][mestoY/h].status = Wave;
   else
       //Значит место занято волной или точкой соперника
       return;
   //Рекурсивный перебор всех направлений распространения волны
   //Влево
   volna1(mestoX - h, mestoY, Player, Wave + 1, VolnaKray);
   //Вверх
   volna1(mestoX, mestoY - h, Player, Wave + 1, VolnaKray);
   //Вправо
   volna1(mestoX + h, mestoY, Player, Wave + 1, VolnaKray);
   //Вниз
   volna1(mestoX, mestoY + h, Player, Wave + 1, VolnaKray);
}
0
09.02.2016, 15:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2016, 15:28
Привет! Вот еще темы с ответами:

CString buff = "aaa" + "bbb" - C++
Хочется одним оператором конкатенировать несколько подстрок CString buff = &quot;aaa&quot; + &quot;bbb&quot; компилятор выдает error C2110: cannot add two...

Qt Creator. Все "за" и "против" - C++
Доброго времени суток, форумчане! Сегодня задался вопросом использования такой IDE, как Qt Creator. Суть темы заключается в том, что я...

Ошибка "неопределенная ссылка" при работе с std::thread - C++
При попытке сделать что-либо с std::thread, выдает ошибку компиляции, &quot;неопределенная ссылка &quot; . К примеру: #include...

Ответы к упражнениям из книги Сэджвика "Фундаментальные алгоритмы на С++" части 1-4 - C++
Привет! Читаю данную книгу, в конце каждой главы имеются упражнения, но нет ответов на них. На решение некоторых задач просто нехватает...


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

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

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