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=15448)

Jester 08.09.2011 10:13

Вопрос касательно создания меню
 
Создал меню.

Получилось так, что у меня две картинки на одинаковом по координатам и размерам месте.

Это:

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, что-то на ночь не вышло. Попробую еще раз, но буду также ждать ответа от специалистов.

SBJoker 08.09.2011 10:34

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

Логично будет проверять картинку на нажатие лишь тогда когда текущий режим её отображения позволяет это сделать. Кроме того возникает вопрос, нафига рисовать две картинки, когда одна закрывает собой другую? Это же бесполезная работа.

Jester 08.09.2011 17:01

Ответ: Вопрос касательно создания меню
 
Дело в том, что я даже пробовал НЕ РИСОВАТЬ (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.

Colossus 08.09.2011 17:27

Ответ: Вопрос касательно создания меню
 
если тебе нужно простое нажатие кнопки то можно сделать так:

курсор у тебя - рисунок, кнопка тоже

пишешь условие

if rectsoverlay(bla bla bla) and mousehit(1) then
условие
endif

Nex 08.09.2011 19:05

Ответ: Вопрос касательно создания меню
 
Проверку на пересечение лучше вынести в условие.
Код:

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

Дальше думаю сам разберешься..

Dream 08.09.2011 19:10

Ответ: Вопрос касательно создания меню
 
Топик стартер, а ты не думал что блиц проверят чисто прямоугольник столкновения,начиная с координат которыя ты задал и заканчивая рамером рисунка, в котором ищещь, внезависимости от того рисуешь ты его или нет?

mr.DIMAS 16.09.2011 20:56

Ответ: Вопрос касательно создания меню
 
Товарищ, не проще ли будет вместо двух кнопок сделать одну и просто менять текст на ней и действие.

например так
Код:

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





а в зависимости от назначенного действия выполнять что-то нужное при нажатии.

Jester 20.09.2011 01:33

Ответ: Вопрос касательно создания меню
 
Уже все сделал сам... Спасибо за помощь!

А текст я не могу менять, т.к. там совершенно разные картинки (у меня не текстом, у меня в виде пиктограмм).

Colossus 20.09.2011 03:39

Ответ: Вопрос касательно создания меню
 
Цитата:

ImagesCollide
а зачем ImagesCollide если есть ImagesOverlap


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

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