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

милионный цикл) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция и масивы http://www.cyberforum.ru/cpp-beginners/thread96494.html
Помогите пожалуйста создать програмку для такой задачи: "Написать функцию транспонирования квадратной матрицы (то есть повороту начальной матрицы на 90 градусов). С ее помощью определить или есть...
C++ Сдвиг #include <iostream> #define N 3 #define M 3 using namespace std; int main() { int array1={1,2,3,4,5,6,7,8,9}; http://www.cyberforum.ru/cpp-beginners/thread96487.html
Создать класс employee C++
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long) служащего. Включите в него метод getdata(), предназна- ченный для получения данных от пользователя и...
C++ Незнаю что такое
Я новичок в С++ только сегодня поставил. Устанавливал всьо на диск С и когда я у себя в унтвере сделал прогу то она компилировалась и было всьо нормально а вдома не компилируетса вибивает такую...
C++ Классы http://www.cyberforum.ru/cpp-beginners/thread96422.html
Не знаю как у вас по русски (*) и с классами надо сделать программу, которая будет обсчитывать pi(R+r)L+piR^2+pir^2=S В данной задаче надо использовать классы и (*). Сам я с Литвы, плохой...
C++ однонаправленный список Ребятушки милые мои :) Помогите решить задачу !!! Даны натуральное число n и однонаправленный список, содержащий действительные числа x1,...,xn. Получить сумму значений элементов списка,... подробнее

Показать сообщение отдельно
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244

милионный цикл) - C++

17.02.2010, 15:54. Просмотров 352. Ответов 5
Метки (Все метки)

создаю свою игру, она тайловая, тайлы размером 16 на 16, размер всей карты 1050x1050 тайлов
есть 1000 монстров и 1000 охотников, которые равномерно распределены по всей площади карты,и двигаются в случайных направлениях раз в полсекунды(несинхронизированно),
у каждого монстра и охотника есть свой радиус обзора и естественно координаты(в тайлах), нужно сделать так чтобы при приближении охотника к любому монстру на расстояние обзора он получал его UID, и наоборот - чтобы и те и те могли напасть первыми;

делаю так:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
struct Hunter
{
DWORD UID;
USHORT x;
USHORT y;
DWORD targetUid;
USHORT vradius;
//...
}
 
struct Mob
{
DWORD UID;
USHORT x;
USHORT y;
DWORD targetUid;
USHORT vradius;
//...
}
 
Hunter hunter[1000];
Mob mob[1000];
 
void MainLoop()
{
 
//Оценка расстояния для охотников
 
for(DWORD a=0;a<1000;a++)
{
for(DWORD b=0;b<1000;b++)
{
 
//Range вычисляет расстояние между двумя точками
 
if(Range(hunter[a].x,hunter[a].y,mob[b].x,mob[b].y) <= hunter[a].vradius)
{
hunter[a].target=mob[b].UID;
}
 
}
}
 
//Оценка расстояния для монстров
 
for(DWORD a=0;a<1000;a++)
{
for(DWORD b=0;b<1000;b++)
{
 
if(Range(mob[a].x,mob[a].y,hunter[b].x,hunter[b].y) <= mob[a].vradius)
{
mob[a].target=hunter[b].UID;
}
 
}
}
 
}
выходит два цикла по миллиону итераций, в итоге игра сбивается со своей частоты синхронизации, которая составляет всего 20 раз в секунду.
подскажите пожалуйста, может быть есть способ попроще, без перечисления всех действующих лиц, или хотя бы как снизить нагрузку, или каким ни будь образом вынести этот фрагмент из главного цикла MainLoop?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru