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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 14.07.2011, 22:56   #16
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Удалить объект

Ну так проблем не видно - они где-то в другом месте.
1. Непонятно - почему у тебя все методы раскиданы через зад ? Замени абстрактные методы в типе obj на реальные - т.е. перемести их.
2. Убери GCCollect - оно тебе не надо.
3. В переменную o_type разумнее было-бы вписывать номер соотвествующий какому-то типу объектов (например 1 - дерево, 2 - игрок.) Это многократно ускорит проверку и создание.
(Offline)
 
Ответить с цитированием
Старый 14.07.2011, 23:14   #17
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Удалить объект

Я новичок в BlitzMax, поэтому возможно что то делаю не так. Пункты 2 и 3 сделал. По поводу первого пункта можно поточнее, куда их переместить?
(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 02:46   #18
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Удалить объект

В общем решил проблему полностью переписав игру. Теперь каждый тип имеет свой собственный лист.
(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 08:43   #19
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Удалить объект

Вообщем вот что было у тебя.
Type obj
    
    Field o_type
:String

    
...

    
Method Update() Abstract
    
    
Method Destroy() Abstract
End Type

Type Grass 
Extends obj

    
Function Create()
        
Local NewGrass:Grass = New Grass
        NewGrass
.o_type="Grass"
    
End Function

    ...
    
    
Method destroy()
        
obj_list.remove(Self)
        
GCCollect()
    
End Method

    
...

End Type

Type Player 
Extends obj

    
...

    
Method Update()
        ...
        For 
EachIn obj_list
            
...
            If (
A.o_type="Grass"Then A.destroy()
            ...
        
Next
        
...
    
End Method

    
...

End Type 
А вот так должно быть.
Type obj
    
    Field o_type
:String

    
...

    
Method Update()
        ...
        For 
EachIn obj_list
            
...
            If (
A.o_type="Grass"Then A.destroy()
            ...
        
Next
        
...
    
End Method
    
    Method destroy
()
        
obj_list.remove(Self)
        
GCCollect()
    
End Method
End Type

Type Grass 
Extends obj

    
Function Create()
        
Local NewGrass:Grass = New Grass
        NewGrass
.o_type="Grass"
    
End Function

    ...
    


    ...

End Type

Type Player 
Extends obj

    
...



    ...

End Type 
(Offline)
 
Ответить с цитированием
Старый 15.07.2011, 11:32   #20
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Удалить объект

Сообщение от xmarat Посмотреть сообщение
В общем решил проблему полностью переписав игру. Теперь каждый тип имеет свой собственный лист.
Радикальные меры Исходник старый есть с багом? Охота посмотреть что не так было. Если есть, то выложи.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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