Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 08.09.2011, 10:13   #1
Jester
AnyKey`щик
 
Аватар для Jester
 
Регистрация: 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
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Вопрос касательно создания меню

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

Логично будет проверять картинку на нажатие лишь тогда когда текущий режим её отображения позволяет это сделать. Кроме того возникает вопрос, нафига рисовать две картинки, когда одна закрывает собой другую? Это же бесполезная работа.
__________________
(Offline)
 
Ответить с цитированием
Старый 08.09.2011, 17:01   #3
Jester
AnyKey`щик
 
Аватар для Jester
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
IGR (20.09.2011)
Старый 08.09.2011, 17:27   #4
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 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
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Jester (20.09.2011)
Старый 08.09.2011, 19:10   #6
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопрос касательно создания меню

Топик стартер, а ты не думал что блиц проверят чисто прямоугольник столкновения,начиная с координат которыя ты задал и заканчивая рамером рисунка, в котором ищещь, внезависимости от того рисуешь ты его или нет?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Jester (20.09.2011)
Старый 16.09.2011, 20:56   #7
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 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
Jester
AnyKey`щик
 
Аватар для Jester
 
Регистрация: 08.09.2011
Сообщений: 17
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос касательно создания меню

Уже все сделал сам... Спасибо за помощь!

А текст я не могу менять, т.к. там совершенно разные картинки (у меня не текстом, у меня в виде пиктограмм).
(Offline)
 
Ответить с цитированием
Старый 20.09.2011, 03:39   #9
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Вопрос касательно создания меню

ImagesCollide
а зачем 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)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com