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

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

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

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

Ответ
 
Опции темы
Старый 16.06.2011, 21:02   #1
Karasy
AnyKey`щик
 
Аватар для Karasy
 
Регистрация: 16.06.2011
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Проблема с MouseHit(1)

Всем привет ! Можете подсказать как решить эту проблему...
Попробовал создать самое простое меню...есть такой кусок кода :

If MouseX()>1000 And MouseY()>680 And MouseX()<1460 And MouseY()<740 And MouseHit(1) Then Gosub newgame
If MouseX()>1000 And MouseY()>760 And MouseX()<1270 And MouseY()<828 And MouseHit(1) Then End
Смысл в том что при нажатии в разные области на экране должны выполнятся разные действия.

Первый if работает - второй нет. ПОЧЕМУ ???
Но если их поменять местами : работает все равно первый if 2ой нет...

Подскажите пожалуйста в чем дело...как это исправить...
Заранее всем спасибо !!!
(Offline)
 
Ответить с цитированием
Старый 16.06.2011, 21:04   #2
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Проблема с MouseHit(1)

Вынеси MouseHit(1) в отдельный if-блок
(Offline)
 
Ответить с цитированием
Старый 16.06.2011, 21:05   #3
Karasy
AnyKey`щик
 
Аватар для Karasy
 
Регистрация: 16.06.2011
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Проблема с MouseHit(1)

Всмысле...не очень понял..я новичок...можете сказать поконкретнее...
(Offline)
 
Ответить с цитированием
Старый 16.06.2011, 21:09   #4
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Проблема с MouseHit(1)

If MouseHit(1) Then
      If MouseX()>1000 And MouseY()>680 And MouseX()<1460 And MouseY()<740 Then Gosub newgame
      If MouseX()>1000 And MouseY()>760 And MouseX()<1270 And MouseY()<828 Then End
EndIf
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (16.06.2011)
Старый 16.06.2011, 21:11   #5
Karasy
AnyKey`щик
 
Аватар для Karasy
 
Регистрация: 16.06.2011
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Проблема с MouseHit(1)

Большое спасибо !
А я пол дня голову ломал...буду знать !!!
(Offline)
 
Ответить с цитированием
Старый 16.06.2011, 23:36   #6
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Проблема с MouseHit(1)

Сообщение от Karasy Посмотреть сообщение
Большое спасибо !
А я пол дня голову ломал...буду знать !!!
Судя по тому что ты хочешь сделать, тебе лучше использовать функцию:
RectsOverlap (rect1 X,rect1 Y,rect1 Width,rect1 Height,rect2 X,rect2 Y,rect2 Width,rect2 Height
Примерно вот так:
If MouseHit(1)
Select GameSelect
Case 1
;Функция начало игры
Case 2
;Функция выхода из игры
End Select 
EndIf
GameSelect=0

If RectsOverlap (rect1 X,rect1 Y,rect1 Width,rect1 Height,rect2 X,rect2 Y,rect2 Width,rect2 HeightGameSelect=1
If RectsOverlap (rect1 X,rect1 Y,rect1 Width,rect1 Height,rect2 X,rect2 Y,rect2 Width,rect2 HeightGameSelect=
Думаю понятно
Объясню...
Тут ты функциями RectsOverlap создаешь прямоугольники в определенной области, и когда в эту область попадает курсор мыши ПРИМЕР:
If RectsOverlap(MouseX(),MouseY(),1,1,(GraphW/2)-(456/2),(GraphH/2)-(144/2)+112,152,34GameSelect=1
If RectsOverlap(MouseX(),MouseY(),1,1,(GraphW/2)-(456/2)+456-152,(GraphH/2)-(144/2)+112,152,34GameSelect=
Переменная GameSelect меняет свое значение и в то время пока курсор находится в этой области и ты нажимаешь кнопку ЛКМ то происходит вызов функции которые прописаны в Case 1 и Case 2

Соответственно Если GameSelect=1 то Case 1
Если GameSelect=2 то Case 2

Вот для наглядности готовый код того что ты хочешь сделать:
Graphics3D 640,480,32,2
SetBuffer BackBuffer
()
Global 
font_arial=LoadFont("Arial CYR",17)
Repeat
If MouseHit(1)
Select GameSelect
Case 1
;Тут загрузка твоей игры
Case 2
End
End Select 
EndIf
Cls
GameSelect
=0
If RectsOverlap(MouseX(),MouseY(),1,1,10,10,80,18GameSelect=1
If RectsOverlap(MouseX(),MouseY(),1,1,10,30,80,18GameSelect=2
RenderWorld
UpdateWorld
SetFont font_arial
If GameSelect=1
Color 255
,0,0
Text 10
,10,"Новая Игра"
Else 
Color 0,0,255
Text 10
,10,"Новая Игра"
EndIf
If 
GameSelect=2
Color 255
,0,0
Text 10
,30,"Выход"
Else 
Color 0,0,255
Text 10
,30,"Выход"
EndIf
Flip
Until KeyHit
(1)
End 
Может тебе это и не надо, но все же...

Последний раз редактировалось L-ee-X, 21.06.2011 в 15:06.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
maxturbo (17.06.2011)
Старый 21.06.2011, 13:45   #7
Karasy
AnyKey`щик
 
Аватар для Karasy
 
Регистрация: 16.06.2011
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Проблема с MouseHit(1)

L-ee-X Спасибо большое...
(Offline)
 
Ответить с цитированием
Старый 21.06.2011, 14:59   #8
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Проблема с MouseHit(1)

Кнопочка полезно есть
А в общем пожалуйста
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
maxturbo (22.06.2011)
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 20:44.


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