forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Глупый вопрос (http://forum.boolean.name/showthread.php?t=7640)

Randomize 16.01.2009 01:49

Глупый вопрос
 
Вопрос такой как в один image надравить другой?
аналог B3D:
SetBuffer(ImageBuffer(SomeImage))
DrawImage Blood,someX,someY
SetBuffer(BackBuffer())

Просто в Максе я совсем недавно, ООП мне дплось на раз а вот базового ничего незнаю, вы уж простите меня.

Randomize 01.03.2009 13:20

Ответ: Глупый вопрос
 
Неужели никто не знает???

Подскажите плиз, а то метод с ReadPixel/WritePixel не улыбает.

Randomize 05.03.2009 17:51

Ответ: Глупый вопрос
 
Неужели все в 3D прогают???
Потенциал BlitzMax в 2D огромен...
Дак по сабжу может кто подсказать?
Ато он уже с бородой а отвечаю себе только я...
Плохо это както :(

Taugeshtu 05.03.2009 20:33

Ответ: Глупый вопрос
 
В голову приходит только написать бмаксовыми командами тот код, что ты написал для б3д... По идее там тоже есть работа с буферами... Попробуй, если не поможет - то даже не знаю.

NitE 05.03.2009 20:38

Ответ: Глупый вопрос
 
Цитата:

По идее там тоже есть работа с буферами
а на самом деле нет...

аффтар смотри CreateImage() LockImage() UnlockImage() LoadImage()

dimanche13 06.03.2009 00:39

Ответ: Глупый вопрос
 
Не знаю как в Б3Д, а в БМ в каждой картике есть Tpixmap-ы и указатель на данные(пиксели) и делай с ними что хочешь.

jimon 06.03.2009 00:49

Ответ: Глупый вопрос
 
плохо что в бм реализация картинок такая не продумая
по-сути каждый TImage это TPixmap и текстура в видеопамяти
зачем нам копировать пикмапы и загружать их опять в видеопамять когда можно прямиком из видеопамяти в видеопамять копировать и прогонять через какой-то шейдер ?

правда в таком случае старое железо оказывается за бортом

Randomize 06.03.2009 02:48

Ответ: Глупый вопрос
 
мде...
Тоесть циклом?
Задача проста до безумства надо надравить кровь на пол чтоб типами не загружать.
Я тут подумал об одном методе...
Надравим кровь потом грабим экран и записываем в переменную пола но это извращенство помоему.


Былаб функция DrawImageToImage(x:int,y:int,SourceImage:TImage, DestImage:TImage)
Ну попробую скрафтать.
Отчёт напишу.

jimon 06.03.2009 11:07

Ответ: Глупый вопрос
 
Randomize
тебе лень читать справку ?
юзай методы tpixmap window и paste

dimanche13 06.03.2009 11:14

Ответ: Глупый вопрос
 
"Потенциал BlitzMax в 2D огромен..." - и не только в 2Д.
"Былаб функция DrawImageToImage(x:int,y:int,SourceImage:TImage, DestImage:TImage)"
На вскидку, это делается так:
Код:

Function DrawImageToImage(x:Int,y:Int,SourceImage:TImage, DestImage:TImage)
       
        Local src_pix:TPixmap = LockImage( SourceImage )
        Local dst_pix:TPixmap = LockImage( DestImage )

        dst_pix.paste( src_pix, x, y )

End Function

по идее должно работать, не проверял.
"Надравим кровь потом грабим экран и записываем в переменную пола но это извращенство помоему." - извращенство. И вообще зачем кровь рисовать в текстуру? Можно просто сверху кинуть с альфой и все, эффект по-моему тот же.

HolyDel 06.03.2009 13:15

Ответ: Глупый вопрос
 
Нет. кровь надо рисовать в текстуру. ибо убив всего лишь 10 тыщ монстров это уже будет 10 тыщ батчей. В то время, как если кровь будет запечена в текстуру - то как была одна текстура, так одна и останется.

dimanche13 06.03.2009 14:26

Ответ: Глупый вопрос
 
HolyDel в твоих словах есть доля правды, но рендер в текстуру занятие тоже не мгновенное. К тому же никто не мешает постепенно альфой убирать кровь с экрана, а потом и стирать ее из памяти совсем, хотя бы в тех местах, где игрок уже не появится. Если же в игре 10000 монстров, то я прям не знаю, катком их чтоли давить ;) ? Кстати и отрендерив кровавый шлейф от катка в текстуру, можно написать имя любимой девушки(к примеру), а потом показывать ей скриншоты с разных ракурсов.

Randomize 06.03.2009 15:46

Ответ: Глупый вопрос
 
Примного благодарен!
Способ действенный.
* надо мне зубрить свойства обьектов в BlitzMAX. А то я даже незнаю как FreeImage сделать.

Randomize 06.03.2009 16:05

Ответ: Глупый вопрос
 
Цитата:

Сообщение от jimon (Сообщение 99726)
Randomize
тебе лень читать справку ?
юзай методы tpixmap window и paste

У меня нету справки...
вернее она не работает ибо у меня умер InternetExplorer в системе под корень.
Я использую TotalCommander вместо Explorer.exe дла лазанья по компу.
Винду переустановить не имею возможности.

Справку читаю лазая по модулям BlitzMax самим IDE.
Знаю, что сурово. Но что поделаешь.
ну вот :( я стал нуждающимся. Ах...

HolyDel 06.03.2009 16:06

Ответ: Глупый вопрос
 
dimanche13 в нормальных движках время рендера в текстуру не слишком отличается от времени рендера в бакбуфер. Если текстура декали висит в видеопамяти и текстура кровищи уровня там же - то ето тупой дип, с текстурой, в качестве рендертаргета. Ну пусть даже в два раза больше. Ну пусть даже в 20. При 20 декалях мы уже имеем выигрыш в батчах (но проигрыш в филлрейте). В играх потипу кримсоланда (в играх другого типа, где крови мало, я не вижу смысла запекать ее в текстуру) именно ТЫСЯЧИ монстров. Там каждую секунду 10-20 убийств монстров (если не больше). Там в прямом смысле - моря крови :)
Помоему там и трупики монстров запекают в текстуру. И весь смысл именно в массовости вражин. Стиль такой. и десятки тысяч декалей крови - это не фантастика, а самая настоящая реальность.

Randomize 06.03.2009 16:09

Ответ: Глупый вопрос
 
HolyDel, ты мысли читаешь.
Да игра типа кримсона будет.
По кровище типа кримсона, а жанр - стратегия.
Естественно от танка следы. От взрыва воронка.
От металла осколки. Из пушки гильзы.
От людей следы.Из врагов кравища.

dimanche13 06.03.2009 17:22

Ответ: Глупый вопрос
 
Цитата:

Сообщение от HolyDel (Сообщение 99754)
В играх потипу кримсоланда (в играх другого типа, где крови мало, я не вижу смысла запекать ее в текстуру) именно ТЫСЯЧИ монстров. Там каждую секунду 10-20 убийств монстров (если не больше). Там в прямом смысле - моря крови :)

Допустим убивать 10 монстров в секунду, что маловероятно, тока если из гранатомета их валить. И держаться в таком темпе 10 минут(мне б за 10 минут надоело), то набежало бы 6000 объектов. причем один по любасу наслоится на другой, и будет такая кровавая каша, что если убирать первых убитых монстраков, которые лежат под пятью слоями новых, никто и не заметит. Я так и делал в своем кримсоне, без всякого рендера в текстуру. Правда там и убийств в секунду было не 10... :-D

HolyDel 06.03.2009 21:29

Ответ: Глупый вопрос
 
dimanche13, хм. ты прав.

вот я сделал через рендер в текстуру:
http://forum.boolean.name/showpost.p...&postcount=483

dimanche13 06.03.2009 23:22

Ответ: Глупый вопрос
 
давно, кстати, слежу за Sigel. Вот все кричат Xors да Xors, у тебя вроде не хуже выходит. Хотел покрутить, но не нашел информации ни о фьючерсах, ни о том что сделано, ни о том что планируется, ни сравнительных тестов с другими движками, а это не есть гуд...

NitE 07.03.2009 00:22

Ответ: Глупый вопрос
 
dimanche13, движок-то может и лучше но кодить на С++ не все гаразды - ктомуже уж для цпп точно есть движки лучше сигела и любого другого на этом форуме...

HolyDel 07.03.2009 19:38

Ответ: Глупый вопрос
 

Цитата:

ни сравнительных тестов с другими движками
начало положено:
http://forum.boolean.name/showthread...newpost&t=7937

предлагайте другие тесты. будем делать (хотя я отвечаю тока за свой двиг, и, может, если бенчмарк демка не сложная за блиц и хорс).

фичелист давно есть в основной теме:
http://forum.boolean.name/showpost.p...&postcount=422

вот справки путевой нет, да.

Randomize 11.03.2009 07:14

Ответ: Глупый вопрос
 
Вложений: 2
BlitzMax хочет меня убить.
Изображение в оконном режиме трансперентится а в фуллскрине нет.
Из опробываного мной:

PHP код:

SetMaskColor(255,0,255)

image.mask_r=255
image
.mask_g=0
image
.mask_b=255

Флаг картинке
MASKED_IMAGE 

Картинка не хочет иметь прозрачный цвет ни в какую :(
Привожу код для большей предметности вопроса:

PHP код:

Function LoadTileBase:TImage(FileName:StringTileWidth:IntTileHeight:Int)
    
Local temp_img:TImage LoadImage (FileName)
    
Local tilex_c:Int = (ImageWidth(temp_img) / (TileWidth 2))
    
Local tiley_c:Int = (ImageHeight(temp_img) / (TileHeight 2))
    
Local TileCount:Int tilex_c tiley_c
    Local TileBase
:TImage CreateImage(tilewidthtileheightTileCount 1MASKEDIMAGE)
    
Local n:Int 0
    SetColor
(2550255)
    
DrawRect 00ImageWidth(temp_img), ImageHeight(temp_img)
    
SetColor(255255255)
    
DrawImage (temp_img00)
    For 
Local y:Int 0 To tiley_c 1
        
For Local x:Int 0 To tilex_c-1
                GrabImage TileBase
, (tilewidth 2) * 1, (tileheight 2) * 1n
                MaskPixmap
(LockImage(TileBasen), 2550255)
                
UnlockImage(TileBasen)
            
1
        Next
    Next
    Flip
;WaitKey()
    Return 
TileBase

EndFunction 

Функция загружает набор тайлов с рамкой и ликвидирует рамку.
Легче так обьяснить:
-- До --
Вложение 5512
-- После --
Вложение 5513

Использую OpenGL драйвер * SetGraphicsDriver GLMax2DDriver()
Изображения только PNG.

И ещё один вопрос: Модуль BMPLoader по любому нуже чтоли? Без него ошибка. Картинки сохранял все фотошопом. Открывал и смотрел заголовок на каждой PNG. Неужели без него в проекте никак?

dimanche13 11.03.2009 14:18

Ответ: Глупый вопрос
 
ну во первых, для чего тебе такая функция LoadTileBase:TImage(FileName:String, TileWidth:Int, TileHeight:Int)? Просто не грузи тайлы с рамками. Для этого уже есть LoadAnimImage и с SetMaskColor - все работает, я проверял.

Randomize 12.03.2009 16:32

Ответ: Глупый вопрос
 
Вложений: 1
Цитата:

Сообщение от dimanche13 (Сообщение 100259)
ну во первых, для чего тебе такая функция LoadTileBase:TImage(FileName:String, TileWidth:Int, TileHeight:Int)? Просто не грузи тайлы с рамками. Для этого уже есть LoadAnimImage и с SetMaskColor - все работает, я проверял.

Дело в том, что рисовать очень большие файлы с большим набором тайлов бывает крайне сложно.
И я нашол решение. Ширина и высота тайла получается на 2px больше.
Между тайлами идут жирные линии отделяющие тайлы друг от друга.
Тоесть я создаю файл наполненый прямоугольниками и заполняю прямоугольник картинкой.
Просто чисто так не очень то и удобно рисовать особенно когда тайлов много и они однотипные.
Как пример прикладываю изображение:
Вложение 5524
Без рамки я бы просто умер.

dimanche13 12.03.2009 20:31

Ответ: Глупый вопрос
 
просто я не вижу необходимости разделять тайлы полосами.

Randomize 14.03.2009 16:25

Ответ: Глупый вопрос
 
Решение про накладывание изображения на изображение:

PHP код:

Graphics 800600

Explosion 
LoadImage("Картинка1")
bg LoadImage("Картинка2"DYNAMICIMAGE)


Repeat
Cls


DrawImage bg
00
If MouseHit(1)
    
DrawToPixmap(Explosion0LockImage(bg), MouseX(), MouseY())
End If

Flip
Until KeyHit
(KEY_ESCAPE)


Function 
ARGB_Alpha:Int(ARGB:Int)
 Return (
argb Shr 24) & $ff
 
'Return Int((ARGB & $FF000000:Int) / $1000000:Int) 
End Function

Function ARGB_Red:Int(ARGB:Int)
  Return (argb Shr 16) & $ff
Return Int((ARGB & $00FF0000:Int) / $10000:Int)
End Function

Function 
ARGB_Green:Int(ARGB:Int)
  Return (
argb Shr 8) & $ff
' Return Int((ARGB & $0000FF00:Int) / $100:Int)
End Function

Function ARGB_Blue:Int(ARGB:Int)
 Return (argb & $ff) 
Return (ARGB & $000000FF:Int)
End Function

Function 
ARGB_Color:Int(alpha:Int,red:Int,green:Int,blue:Int)
 Return (
Int(alpha * $1000000) + Int(RED * $10000) + Int(green * $100) + Int(blue)) 
End Function

Function 
DrawToPixmap(image:TImageframenr:Int 0Pixmap:TPixmapx:Inty:Intalpha:Float 1.0Multiply:Int 1)
      
Local TempPix:TPixmap Null
      
If framenr 0 Then TempPix LockImage(image)
      If 
framenr 0 Then TempPix LockImage(imageFramenr
      For 
Local i:Int 0 To ImageWidth(image) - 1
        
For Local j:Int 0 To ImageHeight(image) - 1
          
If pixmap.width And pixmap.Height 'And i >= x And j >= y
            Local sourcepixel:Int = ReadPixel(TempPix, i, j) 
            Local destpixel:Int = ReadPixel(pixmap, x+i,y+j)
            Local destA:Float = ARGB_Alpha(destpixel) 
            Local sourceA:Float = ARGB_Alpha(sourcepixel) * alpha
            If sourceA = 255 Then destA = 0
                Local destR:Float = ARGB_Red(destpixel)
                Local destG:Float = ARGB_Green(destpixel) 
                Local destB:Float = ARGB_Blue(destpixel) 
                Local SourceR:Float = ARGB_Red(Sourcepixel) 
                Local SourceG:Float = ARGB_Green(Sourcepixel) 
                Local SourceB:Float = ARGB_Blue(Sourcepixel) 
                    Local AlphaSum:Int = destA + sourceA
                    If multiply = 1
                        sourceR = (sourceR  * sourceA / AlphaSum) + destA / AlphaSum * (destR * destA / AlphaSum) 
                        sourceG = (sourceG  * sourceA / AlphaSum) + destA / AlphaSum * (destG * destA / AlphaSum) 
                        sourceB = (sourceB  * sourceA / AlphaSum) + destA / AlphaSum * (destB * destA / AlphaSum) 
                    Else
                        sourceR = (sourceR  * sourceA / AlphaSum) + (destR * destA / AlphaSum) 
                        sourceG = (sourceG  * sourceA / AlphaSum) + (destG * destA / AlphaSum) 
                        sourceB = (sourceB  * sourceA / AlphaSum) + (destB * destA / AlphaSum) 
                    EndIf
                    If AlphaSum > 255 Then AlphaSum = 255
                    sourcepixel = ARGB_Color(AlphaSum, SourceR, sourceG, sourceB) 
            If SourceA <> 0 Then WritePixel(Pixmap, x + i, y + j, sourcepixel)
          EndIf
        Next
      Next
      If framenr = 0 UnlockImage(image)
      If framenr > 0 UnlockImage(image, framenr)
End Function 

Этот способ ещё тормознее и без alpha канала:
PHP код:

Local e:TPixmap LockImage(imgBlood)
    
Local p:TPixmap LockImage(imgFloor)
    
MaskPixmap(e000)
    
p.Paste(eMouseX(), MouseY())
    
UnlockImage(imgBlood)
    
UnlockImage(imgFloor

Нужели это всё, что можно сделать?
В Blitz3D подобное - расплюнуть.
Я понимаю, что тут какбы 3D-2D, но ведь SetBuffer(TextureBuffer()) в B3D есть, значит и тут чёто подобное должнобыть.
Просто я помню как я грабил экран в B3D и текстурил этим всю мапу и воду и скайбокс и юнитов. Баловался кароче :)

Randomize 17.03.2009 21:56

Ответ: Глупый вопрос
 
Нароод!? Неужели на BlitzMax тут так мало прогают?
Не верю, что никто ничего не знает про наложение картинки на картинку.

dimanche13 17.03.2009 23:35

Ответ: Глупый вопрос
 
Я же тебе написал, как это делается paste методом. Потом если тебе так нравятся эти pink-полосы, то можно загрузить картинку с pink-маской порезать на тайлы с полосами, а потом просто изменить width и height картинки, отрубив таким образом остатки полос. Ты морочаешься на пустом месте. Если я прально понял.

Randomize 18.03.2009 08:09

Ответ: Глупый вопрос
 
Не сейчас я просто хочу наложить image на image.
Оставляя Alpha-канал png изображения.
В моём случае наклаедываемого, хотя это не имеет значения.
Должен же быть в BlitzMax для этого метод. Paste просто напросто плюёт на альфа канал.
Попиксельно пробывал бррр скорость не ахти какая.

jimon 18.03.2009 09:16

Ответ: Глупый вопрос
 
Randomize
вот исходник метода Paste :
Код:

        Rem
        bbdoc: Paste a pixmap
        end rem
        Method Paste( source:TPixmap,x,y )
                For Local h=0 Until source.height
                        ConvertPixels source.PixelPtr(0,h),source.format,Self.PixelPtr(x,y+h),Self.format,source.width
                Next
        End Method

а функция ковертации пикселей
Код:

Function CopyPixels( in_buf:Byte Ptr,out_buf:Byte Ptr,format,count )
        MemCopy out_buf,in_buf,count*BytesPerPixel[format]
End Function

Function ConvertPixels( in_buf:Byte Ptr,in_format,out_buf:Byte Ptr,out_format,count )
        If in_format=out_format
                CopyPixels in_buf,out_buf,out_format,count

        Else If in_format=PF_STDFORMAT
                ConvertPixelsFromStdFormat in_buf,out_buf,out_format,count
        Else If out_format=PF_STDFORMAT
                ConvertPixelsToStdFormat in_buf,out_buf,in_format,count
        Else
                Local tmp_buf:Int[count]
                ConvertPixelsToStdFormat in_buf,tmp_buf,in_format,count
                ConvertPixelsFromStdFormat tmp_buf,out_buf,out_format,count
        EndIf
End Function

это означает некоторые вещи, к примеру то что если у конечного пиксмапа не будет альфа канала то конечно при копировании альфа канал пропадёт и еще означает то что картинка не рисуется поверх, а тупо заменяются пиксели

идинственый нормальный способ сделать то что ты хочешь это рендер в текстуру, тогда наложения картинок произойдет прямо в видеокарте и ничего делать не надо

Randomize 18.03.2009 09:58

Ответ: Глупый вопрос
 
Спасибо! Ессс! Теперь я всесилен!
Великолепноm потрясающе! Ихха!
Jimon, респект тебе!
И 2 нет 5k опыта за выполнение квеста "Помощь Randomize".
:party::party::party:
* до левелапа хватило?

SBJoker 18.03.2009 10:24

Ответ: Глупый вопрос
 
гм...о чем это вы тут...
Я так понял кому то возможностей BlitzMAX мало?

dimanche13 18.03.2009 13:10

Ответ: Глупый вопрос
 
на БМ я работал с LPT и COM - портами, а так же программировал TFTP-интерфейс и еще много других хакерских заморочек, пока я не жалуюсь, он справляется со всем, что я задумываю.

Randomize 19.03.2009 08:09

Ответ: Глупый вопрос
 
Цитата:

Сообщение от dimanche13 (Сообщение 100986)
на БМ я работал с LPT и COM - портами, а так же программировал TFTP-интерфейс и еще много других хакерских заморочек, пока я не жалуюсь, он справляется со всем, что я задумываю.

Напротив, в BM стока всякой фигни, что хрен разберёшься.
Мало возможностей было у Basic на спектруме :)

G.A.D 24.03.2009 15:01

Ответ: Глупый вопрос
 
сделал анимацию обЪекта по нажатиям клавишь...
но когда происходит анимация объект движется и за ним остаёться след из частей этого обЪекта?
какой алгоритм можно использовать для расположения обЪектов квадратом
то есть есть один обЪект с x=0 и y=0 ,затем мне надо создать объект с координатами x=5 y=0,потом x=0 y=5 ..... и так пока не будет созданно заданное колво обЪектов....
пробовал until заданное кол-во объектов создавалось но в одно точке

Randomize 25.03.2009 02:29

Ответ: Глупый вопрос
 
У тебя там цикл:
PHP код:

Repeat

DrawImage
(тырыпыр)
FLIP
Until
(KEY_ESCAPE

Таквот после Repeat вставь Cls
Если используешь While ... Wend, то после While.

G.A.D 25.03.2009 16:30

Ответ: Глупый вопрос
 
какой алгоритм можно использовать для расположения обЪектов квадратом
то есть есть один обЪект с x=0 и y=0 ,затем мне надо создать объект с координатами x=5 y=0,потом x=0 y=5 ..... и так пока не будет созданно заданное колво обЪектов...?.

Randomize 25.03.2009 17:10

Ответ: Глупый вопрос
 
надо домнажать x и y на расстояние между обьектами
чтото типа следующего:
PHP код:

For poy:int=0 to 30
For pox:int=0 to 30
 ObjectCreate
(pox*size,poy*size)
Next
Next 

Где size расстояние мужду обьектами

G.A.D 25.03.2009 17:23

Ответ: Глупый вопрос
 
For poy:int=0 to 30
For pox:int=0 to 30
ObjectCreate(pox*size,poy*size)
Next
Next
не понял но спасибо

Randomize 26.03.2009 04:47

Ответ: Глупый вопрос
 
Цитата:

Сообщение от G.A.D (Сообщение 101752)
For poy:int=0 to 30
For pox:int=0 to 30
ObjectCreate(pox*size,poy*size)
Next
Next
не понял но спасибо

Больше конкретики.
Например приведи код

G.A.D 30.03.2009 21:48

Ответ: Глупый вопрос
 
PHP код:

Graphics 640480
Global zombi LoadAnimImage("zombie_6.png"3264017)
While 
Not KeyDown(KEY_ESCAPE)
 If 
animnext MilliSecs () Then animnext MilliSecs() + 50 frame:+1
 
If animnext MilliSecs () Then animnext MilliSecs() + 50 frame:+1
 
If animnext MilliSecs () Then animnext MilliSecs() + 50 frame:+1
 
If animnext MilliSecs () Then animnext MilliSecs() + 50 frame:+1
    
If frame 17 Then frame 0
    Drawarmie
(12zombixyframe)
Flip
Cls
Wend
End

Function Drawarmie(colimgx:Floaty:Floatframe)
For 
0 To col
For 0 To col
DrawImage img
x:Floaty:Floatframe
Next
Next
EndFunction 

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

dimanche13 31.03.2009 11:52

Ответ: Глупый вопрос
 
Цитата:

Сообщение от G.A.D (Сообщение 102277)
[php]Graphics 640, 480
If animnext < MilliSecs () Then animnext = MilliSecs() + 50 ; frame:+1
If animnext < MilliSecs () Then animnext = MilliSecs() + 50 ; frame:+1
If animnext < MilliSecs () Then animnext = MilliSecs() + 50 ; frame:+1
If animnext < MilliSecs () Then animnext = MilliSecs() + 50 ; frame:+1

Ты думаешь, БМ настолько тупой что ему надо повторять одно и тоже 4 раза :4to:
три совета тебе:
1)изучи наконец основы алгоритмизации
2)научись выражать свои мысли
3)научись пользоваться superstrict-ом

G.A.D 31.03.2009 22:15

Ответ: Глупый вопрос
 
что то это меня на 4 раза зашкалило

Nex 02.05.2009 14:20

Ответ: Глупый вопрос
 
А как пользоваться типами в ВМ? И что такое списки (TList = CreateList()
) зачем они нужны? И че то в В3D с типами проще было...

Randomize 12.05.2009 00:58

Ответ: Глупый вопрос
 
http://blitzetc.blitzmax.ru/index.ph...z3D:_Синтаксис

SBJoker 12.05.2009 01:10

Ответ: Глупый вопрос
 
SkySream, в B3D было проще, но неправильно. Можно сказать для детей. Для младшей группы детского сада.

Никакой нормальный язык не делает за программиста часть работы. А блитз делает в результате простые вещи типа ссылок на объекты реализуются чересчур черезжопным способом.

Ответ на вопрос TList это двухсвязный список объектов. Очень похожий на тот что создаёт сам Блитз3Д автоматически для каждого типа. И в него же автоматически пихает.

В блитзмаксе же, создать список надо нам самим (если он нужен конешно же, ведь объекты можно гранить в переменных и массивах), и самим объект в список добавить если надо. Кстати списков можно делать много а не 1 как в блитз3д.

В бмаксе есть ещё более прикольные вещи типа "КАПСЫ".ToLower()

Nex 12.05.2009 08:23

Ответ: Глупый вопрос
 
Мне че то BM очень понравился даже не знаю почему :), но он что то сложноватый для моего мозга и как мне показалось для него очень мало разных статей на русском...

Randomize 13.05.2009 02:33

Ответ: Глупый вопрос
 
BlitzMax - это уникальный инструмент, таой язык я давно искал.
Обладая простым синтаксисом языка Basic он стоит на одной полке с C++ Delphi и другими мощьными современными языками программирования.
Почти во все внутренние процессы можно заглянуть.
Например: мне интересно что происходит при LoadImage.
К BlitzMax можно подключать бесконечное множество библиотек расширяя его функционал.
Кароче BlitzMax - это шедевр, созданый людьми для людей.
Программерами для программеров.

impersonalis 13.05.2009 02:41

Ответ: Глупый вопрос
 
Цитата:

на одной полке с C++ Delphi
omg
Цитата:

современными языками программирования
=\
Цитата:

К BlitzMax можно подключать бесконечное множество библиотек расширяя его функционал.
как и к большинству подобных языков/сред (тот же б3д)
Цитата:

шедевр, созданый людьми для людей.
они среди нас! спасайся

impersonalis 13.05.2009 02:44

Ответ: Глупый вопрос
 
Цитата:

Кстати списков можно делать много а не 1 как в блитз3д.
ну не так категорчино - свой контейнер (или готовый на пивотах) написать просто (к слову, в том же С++ так бы делать и пришлось).
Встроенный да, только один.

Цитата:

Никакой нормальный язык не делает за программиста часть работы.
делает (те же шаблоны) - хотя надо учтонить что подразумевается под "работа за программиста" - а то ехе склеить это тоже работа, входе которой выполняется много автомачтиеских и неоптимальных действий.
Цитата:

А блитз делает в результате простые вещи типа ссылок на объекты реализуются чересчур черезжопным способом.
это - да, с ссылками замудрено

impersonalis 13.05.2009 02:49

Ответ: Глупый вопрос
 
меньше линейности - чего все такие злые то?

SBJoker 13.05.2009 02:53

Ответ: Глупый вопрос
 
Да всё пучком! Ня!

jimon 13.05.2009 09:07

Ответ: Глупый вопрос
 
blitzmax хорош, но транслятор мудацкий и не очень очевидно работает GC
для жестких альтернативщиков могу посоветовать посмотреть на haskell (кстать мне наконец-то посоветовали нормальную IDE для линукса, конечно не vs но тоже не плохо - geany)

ps. в одно время я загорелся идеей написать транслятор blitzmax -> C++ и потом компилить C++ код, плюсы такого решения очевидны - мы обходим мудацкий транслятор
но лень наполнила меня, хотя в большинстве вещей blitzmax переводится в C++ простой заменой синтаксиса

Randomize 15.05.2009 18:39

Ответ: Глупый вопрос
 
))
Ну по крайней мере BM нельзя сравнить с Dark Basic.


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

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