forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Проблема с MouseHit(1) (http://forum.boolean.name/showthread.php?t=14913)

Karasy 17.06.2011 01:02

Проблема с 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ой нет...

Подскажите пожалуйста в чем дело...как это исправить...
Заранее всем спасибо !!!

Tadeus 17.06.2011 01:04

Ответ: Проблема с MouseHit(1)
 
Вынеси MouseHit(1) в отдельный if-блок

Karasy 17.06.2011 01:05

Ответ: Проблема с MouseHit(1)
 
Всмысле...не очень понял..я новичок...можете сказать поконкретнее...

Tadeus 17.06.2011 01:09

Ответ: Проблема с 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


Karasy 17.06.2011 01:11

Ответ: Проблема с MouseHit(1)
 
Большое спасибо !
А я пол дня голову ломал...буду знать !!!

L-ee-X 17.06.2011 03:36

Ответ: Проблема с MouseHit(1)
 
Цитата:

Сообщение от Karasy (Сообщение 191886)
Большое спасибо !
А я пол дня голову ломал...буду знать !!!

Судя по тому что ты хочешь сделать, тебе лучше использовать функцию:
PHP код:

RectsOverlap (rect1 X,rect1 Y,rect1 Width,rect1 Height,rect2 X,rect2 Y,rect2 Width,rect2 Height

Примерно вот так:
PHP код:

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 создаешь прямоугольники в определенной области, и когда в эту область попадает курсор мыши ПРИМЕР:
PHP код:

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

Вот для наглядности готовый код того что ты хочешь сделать: ;)
PHP код:

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 

Может тебе это и не надо, но все же... ;)

Karasy 21.06.2011 17:45

Ответ: Проблема с MouseHit(1)
 
L-ee-X Спасибо большое...

L-ee-X 21.06.2011 18:59

Ответ: Проблема с MouseHit(1)
 
Кнопочка полезно есть ;)
А в общем пожалуйста :)


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

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