|
2D-программирование Вопросы, касающиеся двумерного программирования |
06.02.2007, 16:56
|
#1
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Диалог картинками
Прошу вас знающие помочь мне =)
как сделать такой код
ЕСЛИ ОБЬЕКТ на расстояние 2метра от другого обьекта то
вывести картинку на экран(игра 3d но просто диалоги больше к 2d) если нажать на 1 то другая картинка если на 2 то другая и.т.д сзаранее спасибо!
|
(Offline)
|
|
06.02.2007, 17:07
|
#2
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
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
|
(Offline)
|
|
06.02.2007, 17:25
|
#3
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Re: Диалог картинками
if object1.xpos - object2.xpos <= 2 then
тут че то не в пер =))) ща попробую но обьяснение не помешают
|
(Offline)
|
|
06.02.2007, 17:29
|
#4
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Диалог картинками
это проверка меньше ли (или равно) расстояние между объектом1 и объектом2 по координате Х двух...
|
(Offline)
|
|
06.02.2007, 17:58
|
#5
|
Танчики Developer
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений (для 23 пользователей)
|
Re: Диалог картинками
Raiter, неправильная у тебя проверка если у первого объекта координата меньше второго, то на любом расстоянии диалог включится)
if abs(entityx#(object1) - entityx#(object2)) and abs(entityz#(object1) - entityz#(object2)) <= 2 then
это правда по квадрату проверка, ну ты с корнями похимичь сделаешь по кругу)
|
(Offline)
|
|
06.02.2007, 18:49
|
#6
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Re: Диалог картинками
В справке блица смотри функцию EntityDistance.
|
(Offline)
|
|
07.02.2007, 02:16
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Диалог картинками
Lito, abs(entityx#(object1) - entityx#(object2) )<=2, забыл
2alcoSHoLiC +1, хотя когда нужна максимальная скорость и проверка объектов лежащих в одной плоскости, то можно и с корнями помучаться, или вообще их вынести во внешнюю DLL. (я ето проверял, написанная на C++ функция работает на 15% быстрее у меня по-крайней мере).
И, на всякий случай: ВСЮ 2D графику рисовать после renderworld но до flip. P.S. Я понимаю что все вы аццкие программеры, просто, на всякий случай сказал.
|
(Offline)
|
|
07.02.2007, 02:47
|
#8
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Re: Диалог картинками
спасибо за помощь. все работает но как я понял эти картинки создают жуткие лаги =)
|
(Offline)
|
|
07.02.2007, 02:54
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
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(бла-бла-бла)
...
|
(Offline)
|
|
07.02.2007, 02:55
|
#10
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Диалог картинками
ну если лаги и есть то это имхо из-за юзания 2д команд в 3д
можно юзать спрайтовые команды... тогда лагов не будет
|
(Offline)
|
|
07.02.2007, 17:24
|
#11
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
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
|
(Offline)
|
|
08.02.2007, 00:31
|
#12
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Диалог картинками
Если у тебя диалог как какойто период, в котором происходят только показы картинок, то лечше сделать что при нажатии (не зажатии), делается Цлс, и отрисовывается картинка, ну там ещё текст и что-то ещё, и потом Флип. А в самом цикле Только проверка на кнопки, при нажатии которых, меняется и обновляется экран. Тоесть лагов будет 0, и обновления экрана только при действиях. Если у тебя анимация, то действую подобным путём, только при нажатии делай переменную которая скажет что нужно ещё парочку картинок показать, и уже в цикле показываешь их.
Напряг с думалкой?
|
(Offline)
|
|
13.10.2007, 20:56
|
#13
|
Знающий
Регистрация: 06.10.2007
Сообщений: 225
Написано 15 полезных сообщений (для 21 пользователей)
|
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
Заранее спасибо за ответ!
|
(Offline)
|
|
13.10.2007, 20:59
|
#14
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
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
Вроде...
|
(Offline)
|
|
13.10.2007, 21:30
|
#15
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Диалог картинками
А можно вместо "test = 1", написать test = Not test. И тогда будет можно открывать/закрывать.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:07.
|