forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на BlitzMax (http://forum.boolean.name/forumdisplay.php?f=106)
-   -   elmax - набросок фреймворка (http://forum.boolean.name/showthread.php?t=4262)

elmortem 07.09.2007 16:46

Re: elmax - набросок фреймворка
 
dimanche13
Если есть хороший художник, то можно обсудить в аське. Если нет, то смысла нет, мне пока есть в что вкладывать время и деньги. (:

jimon
Код:

type T1
...
endtype
type T2
  field t:T1 = new T1
endtype

global t:T2 = new T2
t = null

Вот такая ситуация как разрулится? t.t. удалится автоматически? Или нужно делать деструктор T2 b там принудительно Null'ить T2.t?

dimanche13 07.09.2007 16:53

Re: elmax - набросок фреймворка
 
**JohnK: Я редактор. Гонор придержи.

Я догадывался что это ты. Будь уж так добр, убери. На своем сайте пожалста, но не здесь. Писал бы чтоли продолжение Spacer-а, если заняться не чем. А не оффтопил других.

moka 07.09.2007 17:21

Re: elmax - набросок фреймворка
 
Хм, а линки во всех других эллементах тоже почистил?

jimon 07.09.2007 17:24

Re: elmax - набросок фреймворка
 
elmortem
такая да ..

а вот такая нет :
Код:

Type T1
        Field t:T2
        Field mem%[1000]
EndType
Type T2
  Field t:T1
        Field mem%[1000]
EndType

GCCollect()
DebugLog "start "+GCMemAlloced()

t_1:t1 = New t1
t_2:t2 = New t2

t_1.t = t_2
t_2.t = t_1

t_1 = Null
t_2 = Null

DebugLog "in work "+GCMemAlloced()
GCCollect()
DebugLog "final "+GCMemAlloced()

разруливается ето вот так :
Код:

Type T1
        Field t:T2
        Field mem%[1000]
       
        Method Free()
                t = Null
                mem = Null
        End Method
EndType
Type T2
  Field t:T1
        Field mem%[1000]
       
        Method Free()
                t = Null
                mem = Null
        End Method
EndType

GCCollect()
DebugLog "start "+GCMemAlloced()

For Local i% = 0 To 100
t_1:t1 = New t1
t_2:t2 = New t2

t_1.t = t_2
t_2.t = t_1

t_1.Free()
t_2.Free()

t_1 = Null
t_2 = Null
Next

DebugLog "in work "+GCMemAlloced()
GCCollect()
DebugLog "final "+GCMemAlloced()

можно конечно переопределять операторы New и Delete
но мне легче было зделать Free - так я 100% избавляюсь от перекрестных ссылок

elmortem 07.09.2007 19:10

Re: elmax - набросок фреймворка
 
jimon
Но ведь если в моём варианте t удаляется, то на t.t больше никто не ссылкается и он поидее должен удалиться. Разве не так?

johnk 07.09.2007 19:16

Re: elmax - набросок фреймворка
 
Лишняя профилактика не повредит :)

jimon 08.09.2007 00:00

Re: elmax - набросок фреймворка
 
elmortem
в твоем варианте - да
но все же, если тебе в одном месте понадобится такая фича,
то ты разве будеш менять >50 типов ? :-)
лутче все сразу продумать и потом не мучать голову

elmortem 09.09.2007 23:47

Re: elmax - набросок фреймворка
 
у меня вроде бы не используются перекрёстные ссылки на объекты, не являющиеся основой фреймворка, а оные уничтожаются только при выходе из программы.

Тут небольшой ремонт затеяли, так что релиз альфы будет где-то в среду... (:

dimanche13 10.09.2007 14:27

Re: elmax - набросок фреймворка
 
жду альфу, может пригодиться и в моем проекте)))

elmortem 15.09.2007 00:30

Re: elmax - набросок фреймворка
 
И так, "почти-альфа"... (:
Что-то там какие-то косяки с памятью, пока не могу разобраться. Вроде кросс-линков нету, объект удаляю, но он не удаляется нифига. ):

Документацию начну делать, как только свободное время появится. Но если кому не сложно может пока так посмогтрите, может я чего-то просто не вижу и поэтому там память теряется. ):

Version 0.0.6 (14.09.2007)
* Упростилась общая структура движка.
* У CLua теперь есть метод ExecFunc, выполняющий функцию скрипта по имени.
+ GUI контролы чекбокса (CGuiCheck) и изображения (CGuiPicture).
* GUI контролы-кнопки (CGuiButton и CGuiTextButton) поддерживают указание имени функции скрипта на исполнение при нажатии.
+ Добавлен класс, отвечающий за ввод даных (CInput).

dimanche13 15.09.2007 14:46

Re: elmax - набросок фреймворка
 
Код:

Field Gui:CGui = Null
объявлять не обязательно он и так по умолчанию null. Начальное меню классное! Но глючит неимоверно, прападает тайтл окна(!) при выборе,опять же пункта Second, в окне с вертикальным баром горизонтальные линии становятся красными. Окно ввода имени прибито гвоздями. Порадовали кнопки и радиобоксы. Сам рисовал? Честно говоря, метод Delete вроде как деструктор, мне вызвать никак не удавалось. Ни принудительно ,ни занулив объект. Может поэтому что-то с памятью. Проверь вызывается ли Free/

jimon 15.09.2007 14:51

Re: elmax - набросок фреймворка
 
dimanche13
никто не гарантирует что оно будет нулем :)

elmortem 15.09.2007 14:57

Re: elmax - набросок фреймворка
 
Что есть тайл окна?
Горизонтальные линии - это дебаг, так что я не стал ещё и цвет выставлять для них. Просто выяснилось, что на некоторых карточках не работает SetViewport. ):
Окно ввода имени прибито гвоздями специально - при создании окна это можно указать параметром. Типа демонстрация того, что так можно. (:
Всю графику рисовал сам, да. Ничё сложного - самые простые действия в фотошопе, могу научить.

Всё-таки менеджер памяти в Максе какой-то дырявый... Или это у меня мозги дырявые, но я уже излазил весь код - ну нет там кросслинков на elmLog и elmApp - а они при заналливании не удаляются и хоть ты тресни. ):
А вместе с elmApp не удаляются и виджеты, а вместе с виджетами - гуи и некоторые ресурсы.
Чхорт! ):

dimanche13 15.09.2007 15:04

Re: elmax - набросок фреймворка
 
С фотошопом вообще не дружу, ну не заточены у меня так руки))) Провеь вызываются ли методы Free. Тайтл окна - это синяя полоса окна с названием проги. GCCollect() - Description: Run garbage collector.

elmortem 15.09.2007 20:30

Re: elmax - набросок фреймворка
 
dimanche13
Фигасе!!! Что, прям вот так при выборе пункта стиска пропадает кусок окна? Я в шоке. Покаж хоть скриншот чтоль... (:

С памятью буду что-то придумывать. Может действительно переписать всё с New и Delete на самопальный конструктор и деструктор... Думаю над этим...
Кстати, подскажите какую-нить мега-простую игру (только не тетрис и не пятнашки), которой можно проиллюстрировать фреймворк...

dimanche13 15.09.2007 20:41

Re: elmax - набросок фреймворка
 
Змейка ёпрст))) или Кримсонленд какой-нить- 2д,и не сложно. Арканоид - классика. J`n`r scroller, да много всяких игр, тебе ли не знать, сам во всех конкурсах поучаствовал, на известном сайте :)

jimon 15.09.2007 22:21

Re: elmax - набросок фреймворка
 
space invaders :)

elmortem 15.09.2007 23:15

Re: elmax - набросок фреймворка
 
Я имею в виду СОВСЕМ ПРОСТУЮ игру. (:
Наверное змейку забацаю.
Но не раньше, чем пофиксят менеджер памяти (см. http://www.boolean.name/showthread.php?p=56241)... ):

jimon 15.09.2007 23:21

Re: elmax - набросок фреймворка
 
его пофиксят не скоро :) так что забей ...

elmortem 15.09.2007 23:47

Re: elmax - набросок фреймворка
 
Балин. И чё мне теперь? Переписывать всё без ООП? Я уж скорее забъю на МакОСь и вернусь на Виндовое HGE. ):

dimanche13 16.09.2007 00:02

Re: elmax - набросок фреймворка
 
HGE клевая весчь, как доделают тайл-движок, можно на него переходить смело!

elmortem 16.09.2007 02:06

Re: elmax - набросок фреймворка
 
Угу, только вот мне не нравится его Виндовз-направленность. А крутой тайловый движек пишется быстро. Гемор основной с редактором. (:

Блин, игру скоро закончим и остро встанет вопрос по кросс-платформе с поддержкой Мака. Думал, что мне Блитз в этом поможет, но с его закидонами - очень сомневаюсь. Если б не критичность по времени - плюнул бы и сел писать свою кросс-платформу. Заодно приплёл бы ДС и ПСП... А так получается лажа. ):

jimon 16.09.2007 12:06

Re: elmax - набросок фреймворка
 
"качества скрипки проявляются только в руках настоящего мастера"

elmortem 16.09.2007 16:10

Re: elmax - набросок фреймворка
 
Кто спорит. Но мне нужна была не скрипка, а здоровенный грубый топор!
Скрипки, они вообще очень заточены под что-то. А топором может любой махать. И вполне успешно.
Так вот, Блитз на поверку оказался Топором со струнами от скрипки. И это сначала удивляет, а потом бесит! ^_^
Видимо придётся этому топору струны пооборвать, чтобы он стал самим собой. (:

Змейку к концу грядущей недели релизну. Вместе с альфой и документацией. Глядишь остатки утечек прикрою...


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot