Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 24.06.2013, 16:44   #1
MoteX
Нуждающийся
 
Аватар для MoteX
 
Регистрация: 21.10.2009
Сообщений: 51
Написано 6 полезных сообщений
(для 8 пользователей)
Обработка 2d объектов

Здравствуйте столкнулся с такой проблемой:
Имеется игра такого вида
Нажмите на изображение для увеличения
Название: snap20130624_143532.png
Просмотров: 913
Размер:	116.9 Кб
ID:	19283
Нужно добавить монстров,я создал несколько массивов,массив с изображениями и массивы с информацией координат и номера кадра с направлением.
В игре один поток,обработка выглядит так
for i=0 to max
if monster(i)=1 then процедура обработки
Проблема в том,что игра изза этого может провисать,что довольно неприятно
Может кто натолкнуть на путь истинный? Я уже незнаю что делать
__________________
(ьсипдоп утэ йатич ен,йенгиф йадартс ен
(Offline)
 
Ответить с цитированием
Старый 25.06.2013, 01:36   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Обработка 2d объектов

Держи число монстров, и итерируй от 0 до этого числа. А не максимальное число монстров.
И провисает не цикл, а логика в цикле.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (30.06.2013)
Старый 25.06.2013, 14:46   #3
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Обработка 2d объектов

Сообщение от moka Посмотреть сообщение
Держи число монстров, и итерируй от 0 до этого числа. А не максимальное число монстров.
И провисает не цикл, а логика в цикле.
Мока, вот ты сам и объяснил, почему ты не прав. Провисает не цикл, а логика, которая, как я понял, вся завернута в условие. Т.е. разницы особой не будет, обходить все поле (оно явно не 10^5 на 10^5) или только монстров. Идеологически правильно, спору нет, но автора не спасет.
Судя по всему язык Basic'оподобный, я в них не разбираюсь особо, но должно же там быть что-то типа std::vector или списков из Blitz'a. Лучше их применять, ну и действительно копнуть в логику. Если там самая медленная часть завязана на обработку взаимодействия с игроком, вынести ее в отдельный цикл и обрабатывать только ближайших монстров.
(Offline)
 
Ответить с цитированием
Старый 25.06.2013, 16:50   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Обработка 2d объектов

Сообщение от MiXaeL Посмотреть сообщение
Мока, вот ты сам и объяснил, почему ты не прав.
Где можно быть не правим в том что я написал выше? ЛоЛ

Сообщение от MiXaeL Посмотреть сообщение
Провисает не цикл, а логика, которая, как я понял, вся завернута в условие.
И провисает не цикл, а логика в цикле.
Сообщение от MiXaeL Посмотреть сообщение
Т.е. разницы особой не будет, обходить все поле (оно явно не 10^5 на 10^5) или только монстров. Идеологически правильно, спору нет, но автора не спасет.
Судя по всему язык Basic'оподобный, я в них не разбираюсь особо, но должно же там быть что-то типа std::vector или списков из Blitz'a. Лучше их применять, ну и действительно копнуть в логику. Если там самая медленная часть завязана на обработку взаимодействия с игроком, вынести ее в отдельный цикл и обрабатывать только ближайших монстров.
Я так понимаю ты хотел сказать, что нужно иметь сразу список монстров которые нужно обработать, а не список который проверяется monster(i) и затем применяется логика.

Короче говоря, автор выложил недостаточно инфы.
Могу предположить что он тяжко просчитывает если монстр в экране или т.п. Но делает это с каким-то извращением, что эта проверка и садит всё.

Если делать как полагается, то нужно разбивать пространство на сектора, и хранить списки монстров в секторах. И затем пробегаться только по секторам которые в камере и их спискам монстров.

Забудь о блице..
(Offline)
 
Ответить с цитированием
Старый 30.06.2013, 15:13   #5
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Обработка 2d объектов

тс, скинь код, посмотрим. только не жмись, целиком кидай
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:14.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com