forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Диалог картинками (http://forum.boolean.name/showthread.php?t=2623)

Антихрист 06.02.2007 16:56

Диалог картинками
 
Прошу вас знающие помочь мне =)
как сделать такой код
ЕСЛИ ОБЬЕКТ на расстояние 2метра от другого обьекта то
вывести картинку на экран(игра 3d но просто диалоги больше к 2d) если нажать на 1 то другая картинка если на 2 то другая и.т.д сзаранее спасибо! :-)

Raiter 06.02.2007 17:07

Re: Диалог картинками
 
if object1.xpos - object2.xpos <= 2 then
drawimage pic1,100,100
if keydown(2) drawimage pic2,100,100
if keydown(3) drawimage pic3,100,100
end if

ну и так далее....

и не забываем очищать экран ;) cls

Антихрист 06.02.2007 17:25

Re: Диалог картинками
 
if object1.xpos - object2.xpos <= 2 then
тут че то не в пер =))) ща попробую но обьяснение не помешают

Raiter 06.02.2007 17:29

Re: Диалог картинками
 
это проверка меньше ли (или равно) расстояние между объектом1 и объектом2 по координате Х двух...

Leito 06.02.2007 17:58

Re: Диалог картинками
 
Raiter, неправильная у тебя проверка если у первого объекта координата меньше второго, то на любом расстоянии диалог включится)
if abs(entityx#(object1) - entityx#(object2)) and abs(entityz#(object1) - entityz#(object2)) <= 2 then

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

alcoSHoLiK 06.02.2007 18:49

Re: Диалог картинками
 
В справке блица смотри функцию EntityDistance.

HolyDel 07.02.2007 02:16

Re: Диалог картинками
 
Lito, abs(entityx#(object1) - entityx#(object2))<=2, забыл ;)
2alcoSHoLiC +1, хотя когда нужна максимальная скорость и проверка объектов лежащих в одной плоскости, то можно и с корнями помучаться, или вообще их вынести во внешнюю DLL. (я ето проверял, написанная на C++ функция работает на 15% быстрее у меня по-крайней мере).

И, на всякий случай: ВСЮ 2D графику рисовать после renderworld но до flip. P.S. Я понимаю что все вы аццкие программеры, просто, на всякий случай сказал.

Антихрист 07.02.2007 02:47

Re: Диалог картинками
 
спасибо за помощь. все работает но как я понял эти картинки создают жуткие лаги =)

HolyDel 07.02.2007 02:54

Re: Диалог картинками
 
Цитата:

Сообщение от Антихрист
эти картинки создают жуткие лаги =)

поподробнее. никаких лагов это не должно было создавать, если только картини не на весь экран.
а вообще надо какой - нибудь переменной изменять значение при нажатии на кнопку, и отриовывать соответсвующау картинку (ради удобства можно указатели на картинки хранить в массиве) например:
if keydown(2) then show_image=1
if keydown(3) then show_image=2
if keydown(4) then show_image=3
if show_image then drawimage img[show_image],x,y

тогда грузит надо так
global img[10]
img[1]=loadimage(бла-бла-бла)
img[2]=loadimage(бла-бла-бла)
img[3]=loadimage(бла-бла-бла)
...

Raiter 07.02.2007 02:55

Re: Диалог картинками
 
ну если лаги и есть то это имхо из-за юзания 2д команд в 3д :)
можно юзать спрайтовые команды... тогда лагов не будет:)

alcoSHoLiK 07.02.2007 17:24

Re: Диалог картинками
 
Цитата:

Сообщение от HolyDel
if keydown(2) then show_image=1
if keydown(3) then show_image=2
if keydown(4) then show_image=3
if show_image then drawimage img[show_image],x,y

Чтобы еще проще, можно так сделать:
Код:

pressed_key = getkey() - 48    ;49-57 -- ASCII коды для 1-9 соответственно
if pressed_key > 0 and pressed_key < 10 then
    drawimage img[pressed_key], x, y
end if


moka 08.02.2007 00:31

Re: Диалог картинками
 
Если у тебя диалог как какойто период, в котором происходят только показы картинок, то лечше сделать что при нажатии (не зажатии), делается Цлс, и отрисовывается картинка, ну там ещё текст и что-то ещё, и потом Флип. А в самом цикле Только проверка на кнопки, при нажатии которых, меняется и обновляется экран. Тоесть лагов будет 0, и обновления экрана только при действиях. Если у тебя анимация, то действую подобным путём, только при нажатии делай переменную которая скажет что нужно ещё парочку картинок показать, и уже в цикле показываешь их.
Напряг с думалкой? :)

Bagration 13.10.2007 20:56

Re: Диалог картинками
 
У меня такой вопрос: как сделать так что бы при нажатии кнопки (не зажатии) появлялось изображение, скажем поле для будущего меню, а то у меня приходиться зажимать лев. кнопку мыши на кнопке которая отвечает за вызов иозбражения. Вот часть кода:

Код:

If ImageRectOverlap (cursor,mx,my,384,595,257,47) Then
                DrawImage knopka,384,595,1
                Text 460,595,"Credits"
                DrawImage cursor,mx,my
                If md1 Then
                       
                        DrawImage credits,200,100
                        DrawImage knopka,200,300,0
                       
                       

                End If
End If


Заранее спасибо за ответ! :)

Данил 13.10.2007 20:59

Re: Диалог картинками
 
Код:

Global test
If ImageRectOverlap (cursor,mx,my,384,595,257,47) Then
                DrawImage knopka,384,595,1
                Text 460,595,"Credits"
                DrawImage cursor,mx,my
                If md1 Then test = 1
                       

End If

Цикл:
If Test = 1
        DrawImage credits,200,100
        DrawImage knopka,200,300,0
End if

Вроде...

H@NON 13.10.2007 21:30

Re: Диалог картинками
 
А можно вместо "test = 1", написать test = Not test. И тогда будет можно открывать/закрывать.


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

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