forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   Вопрос-Ответ (для новичков BlitzMax) (http://forum.boolean.name/showthread.php?t=13756)

yorri 14.04.2013 18:26

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Спасибо за Первый вопрос, пробую.
Касательного второго.
Это я понимаю. Проблема в том, что картинок слишком много. В принципе можно сформировать массив нужных картинок заранее (при старте программы), но тогда тоже нужно попиксельно?

yorri 12.05.2013 14:34

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Вопрос по коллизиях.
Проверяю столкновение пули с мобом
Код:

...
For Local Bullet:TBullet = EachIn BulletList
       
        Local p:Object[] = CollideImage(Bullet.BulletImage, Bullet.BulletX, Bullet.BulletY, 0, 3, 0)
       
        For Local i:Int = 1 To p.Length
       
                If TImage(p[i - 1] ) Then
               
                        Local e:TMob = TMob(p[i - 1] )         
                        If e Then e.MobImage = TileImages[11]
...

И в методе отрисовки моба
Код:

...
DrawImage (MobImage, x - xx, y - yy)
CollideImage(MobImage, x - xx, y - yy, 0, 0, 2, Object(MobImage))
...

Все мобы в списке MobList:TList

Проблема в том, что в переменной е оказывается Null
Может неправильно обьявляю в CollideImage параметр id:Object ?

Nikich 12.05.2013 14:58

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Вы уверены, что вам нужно именно столкновение картинок?
Очень часто, хватает нахождения расстояния, или пересечения прямоугольников.

yorri 12.05.2013 15:24

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Ну хотелось бы сделать именно так.
У меня работает вариант с Масивом тайлов, но там это как бы статически (то есть масив создается в начале игры) и я делаю так: CollideImage(TileImage, TileX, TileY, 0, 0, 1, MapObj[i, j] ).

А вот с мобами что-то не работает, не могу понять почему.
Другими словами, я не могу узнать в какого конкретного моба из десятка я попал....

yorri 13.05.2013 12:50

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Насколько я понял, неправильно передаю пареметр id:Object
CollideImage(MobImage, x - xx, y - yy, 0, 0, 2, Object(MobImage))

Потому как в переменной р (p:Object[]) только тип TImage, а не сам обьект с соответствующими полями...

yorri 13.05.2013 16:32

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Все. Как бы сделал. :-) Волшебное слово Self. /Забыл про него/

CollideImage(MobImage, x - xx, y - yy, 0, 0, 2, Self)

yorri 19.05.2013 01:57

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

Local z:Float

For x = 0 To 31

z = z + 0.03125

SetAlpha(z)
DrawImage (TileImages[8] , x * 32, 15 * 32)

Next
А так не работает:
Цитата:

Local z,a:Float

a=1/32 '=0.03125

For x = 0 To 31

z = z + a

SetAlpha(z)
DrawImage (TileImages[8] , x * 32, 15 * 32)

Next

SBJoker 19.05.2013 02:08

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
во втором объяви z как Float\
и будет тебе щастье

yorri 19.05.2013 11:41

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Цитата:

Сообщение от SBJoker (Сообщение 259572)
во втором объяви z как Float\
и будет тебе щастье

Дык.
Так я так и сделал.
Код:

Local z,a:Float

SBJoker 19.05.2013 13:27

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
в блитзмаксе так нельзя, первая переменная у тебя без типа (значит Int)
Цитата:

Local z:Float, a:Float

yorri 19.05.2013 13:35

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Да делал и так, и сяк... нефурычит. Ладно это оставим.

Такой вопрос возник. Есть ли стандартнаэ функция затемнения Картинки типа SetAlpha, но чтобы не прозрачность, а именно просто затемнение?
Или самому нужно делать через SetColor?
Спасибо.

SBJoker 19.05.2013 13:44

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Через сет колор, а что касается неработающего кода надо кроме того численные константы использовать правильного типа
Цитата:

a=1/32 '= 0 потому что деление 1 на 32 нацело
a=1.0/32 '=0.03125

yorri 19.05.2013 13:52

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Спасибо. Понял.

IgorOK 14.07.2013 22:55

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
Функция FileTime() выдаёт некое значение Int. Как из него получить дату и время последнего изменения файла?

Randomize 15.07.2013 00:39

Ответ: Вопрос-Ответ (для новичков BlitzMax)
 
PHP код:

Function TimeToStrF:String(time:Intformat:String)
    
Local buff:Byte[256]    
    
strftime_(buff256formatlocaltime_(Varptr(time)))
    Return 
String.FromCString(buff)
End Function

Local time:Int FileTime("MYFILE")
Print 
TimeToStrF(time"%Y-%m-%d %H:%M:%S"

Про strftime:
http://www.cplusplus.com/reference/ctime/strftime/
или
http://php.net/manual/ru/function.strftime.php


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

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