|
2D-программирование Вопросы, касающиеся двумерного программирования |
08.09.2011, 10:13
|
#1
|
AnyKey`щик
Регистрация: 08.09.2011
Сообщений: 17
Написано 3 полезных сообщений (для 3 пользователей)
|
Вопрос касательно создания меню
Создал меню.
Получилось так, что у меня две картинки на одинаковом по координатам и размерам месте.
Это:
New_game_img
и
Easy_game_img
При проверке:
If MouseHit(1) Then
If ImagesCollide(Mouse_img,MouseX(), MouseY(),0, New_game_img, 0,0,0)=True Then
Open_game_v=1
endif
If ImagesCollide(Mouse_img,MouseX(), MouseY(),0, Easy_game_img, 0,0,0)=True Then
Easy_game_v=1
endif
Endif
Блиц перманентно считает нажатие как на Открытие игры так и на выбор Easy Game картинки, присваивая обоим переменным значение 1.
Хотя я не рисую СРАЗУ картинку Easy_game_img. только после Open_game_v=1.
Может кто подскажет, каким образом можно постепенно выполнять условия?
Пробовал с помощью Case, что-то на ночь не вышло. Попробую еще раз, но буду также ждать ответа от специалистов.
|
(Offline)
|
|
08.09.2011, 10:34
|
#2
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос касательно создания меню
Феерически. ImagesCollide проверяет попала ли указанная точка на указанной картинке в видимую часть картинки. Ответственность за указание правильных координат картинки, так же и собственно самой картинки лежит на плечах программиста.
Логично будет проверять картинку на нажатие лишь тогда когда текущий режим её отображения позволяет это сделать. Кроме того возникает вопрос, нафига рисовать две картинки, когда одна закрывает собой другую? Это же бесполезная работа.
__________________
|
(Offline)
|
|
08.09.2011, 17:01
|
#3
|
AnyKey`щик
Регистрация: 08.09.2011
Сообщений: 17
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос касательно создания меню
Дело в том, что я даже пробовал НЕ РИСОВАТЬ (DrawImage) картинку, все равно коллизит с ней, прибавляя переменную.
Зачем мне нужно, как вы сказали, накладывать одну картинку на другую?
Все просто. У меня сразу видно меню и кнопку "Начало игры", после нажатия которой кнопки она исчезает и появляется кнопка выбора сложности игры, в данном случае это кнопка "Легкая игра".
Координаты у обоих одинаковые, переменные показа/принятия разные, но все равно, не получается что-то.
Может сможете помочь примером? Когда нажатие кнопки мыши может определить ту картинку, которая хм... как бы сверху другой, что-ли... Не могу "догнать".
Все вроде как просто. Есть 2-е картинки. 2-е переменные.
If Open_game_v=0 Then
DrawImage New_game_img,0,0,0
Endif
If MouseHit(1) Then
If ImagesCollide(Mouse_img,MouseX(), MouseY(),0, New_game_img, 0,0,0)=True and Open_game_v=0 Then
Open_game_v=1
Endif
If ImagesCollide(Mouse_img,MouseX(), MouseY(),0, Easy_game_img, 0,0,0)=True and Open_game_v=1 and Easy_game_v=0 Then
Easy_game_v=1
Endif
Endif
If Easy_game_v=0 and Open_game_v=1 Then
DrawImage Easy_mode_img,0,0,0
Endif
Но не работает. Как сделать чтобы определяло текущую картинку (ту которая видна). Отрисовываются они по очереди, а не сразу!
С уважением Jester.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.09.2011, 17:27
|
#4
|
Разработчик
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений (для 92 пользователей)
|
Ответ: Вопрос касательно создания меню
если тебе нужно простое нажатие кнопки то можно сделать так:
курсор у тебя - рисунок, кнопка тоже
пишешь условие
if rectsoverlay(bla bla bla) and mousehit(1) then
условие
endif
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb
Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)
Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
|
(Offline)
|
|
08.09.2011, 19:05
|
#5
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос касательно создания меню
Проверку на пересечение лучше вынести в условие.
If Open_game_v=0 Then
if mousehit (1)
If ImagesCollide(Mouse_img,MouseX(), MouseY(),0, New_game_img, 0,0,0)=True Then Open_game_v=1
endif
endif
Дальше думаю сам разберешься..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.09.2011, 19:10
|
#6
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопрос касательно создания меню
Топик стартер, а ты не думал что блиц проверят чисто прямоугольник столкновения,начиная с координат которыя ты задал и заканчивая рамером рисунка, в котором ищещь, внезависимости от того рисуешь ты его или нет?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.09.2011, 20:56
|
#7
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Вопрос касательно создания меню
Товарищ, не проще ли будет вместо двух кнопок сделать одну и просто менять текст на ней и действие.
например так
Type Button
Field Image
Field Text$
Field Action%
End Type
;здесь был код
if( ImagesCollide( button\image,... ))
if( button\action = GAME_EASY )
startGame()
end if
if( button\action = NEW_GAME )
button\action = GAME_EASY
button\text = "Легко"
end if
end if
а в зависимости от назначенного действия выполнять что-то нужное при нажатии.
__________________
|
(Offline)
|
|
20.09.2011, 01:33
|
#8
|
AnyKey`щик
Регистрация: 08.09.2011
Сообщений: 17
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос касательно создания меню
Уже все сделал сам... Спасибо за помощь!
А текст я не могу менять, т.к. там совершенно разные картинки (у меня не текстом, у меня в виде пиктограмм).
|
(Offline)
|
|
20.09.2011, 03:39
|
#9
|
Разработчик
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений (для 92 пользователей)
|
Ответ: Вопрос касательно создания меню
а зачем ImagesCollide если есть ImagesOverlap
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb
Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)
Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:03.
|