Мне нужна помощь с изучением синтаксиса.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by Фант »

Должен быть цикл к примеру:
Loop:
Get touch 0 as x,y
'Распознаем касание экрана пальцем
If x>-1 then
If sprite_hit("названиеилиномерспрайта",x,y)=1 then
'Если палец каснулся спрайта происходит следующее
...
Else
'Если палец не каснулся спрайта происходит следующее
...
Endif


Goto loop

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Фант wrote:Должен быть цикл к примеру:
Loop:
Get touch 0 as x,y
'Распознаем касание экрана пальцем
If x>-1 then
If sprite_hit("названиеилиномерспрайта",x,y)=1 then
'Если палец каснулся спрайта происходит следующее
...
Else
'Если палец не каснулся спрайта происходит следующее
...
Endif


Goto loop
Спасибо за ответы.
Сейчас попробую.

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Спасибо. Все получилось, как мне кажется :)
У меня столько идей для игр :)
Но для начала хочу понимать, как и что работает.

User avatar
MARK99
Posts: 292
Joined: Tue Feb 03, 2015 2:33 pm
My devices: Ipad 4 , iphone 5
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by MARK99 »

Дубовая логика:
Сначала ты снимаешь координаты касания
get touch 0 as x,y
Далее возвращаешь координаты спрайта
Get Sprite "name" pos x1,x2
Зная длину(h) и ширину(w) спрайта, его геометрические размеры, ты сравниваешь (при условии, что координаты спрайта считываются с его левого конца)
If x>0 and ((x>X1 and x<x1+w) and (y>y1 and y<y1+h)) then' сдесь идёт сначала проверка на касание x>0,далее проверка на то , что координаты касания находятся в спрайте, если вы поменяет знаки сравнения местами то получите проверку на расположенность касания в не спрайта.

При таком сравнение вы можете не только сравнивать нажали вы на спрайт но и на какую точку в нем, ну там в правый угол спрайта или в левый, для более обширной работы с ним.
Image

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

MARK99 wrote:Дубовая логика:
Сначала ты снимаешь координаты касания
get touch 0 as x,y
Далее возвращаешь координаты спрайта
Get Sprite "name" pos x1,x2
Зная длину(h) и ширину(w) спрайта, его геометрические размеры, ты сравниваешь (при условии, что координаты спрайта считываются с его левого конца)
If x>0 and ((x>X1 and x<x1+w) and (y>y1 and y<y1+h)) then' сдесь идёт сначала проверка на касание x>0,далее проверка на то , что координаты касания находятся в спрайте, если вы поменяет знаки сравнения местами то получите проверку на расположенность касания в не спрайта.

При таком сравнение вы можете не только сравнивать нажали вы на спрайт но и на какую точку в нем, ну там в правый угол спрайта или в левый, для более обширной работы с ним.
Оооо, Mark99, спасибо, попробую.
Я только учусь, не закидывайте камнями. Ещё не раз напишу :)))

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Mark99,
Попробовал, движется только в правый нижний угол.

Code: Select all

GRAPHICS
OPTION ANGLE DEGREES
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
OPTION TEXT POS CENTRAL
maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()

w=100 ! h=100
n$="krug"
SPRITE n$ BEGIN w,h
SHADOW ON
DRAW CIRCLE 50,50 SIZE 50
DRAW TEXT "ТРОНЬ" AT 50,50
SPRITE END


SPRITE n$ AT maxx/2,maxy/2
SPRITE n$ DELAY 0.03
SPRITE n$ DA 1
SPRITE n$ LOOP
SPRITE n$ SHOW


LOOP:

GET SPRITE n$ ANGLE z

GET TOUCH 0 AS x,y

GET SPRITE n$ POS x1,y1


IF x>0 AND ((x>x1 AND x<x1+w) AND (y>y1 AND y<y1+h)) THEN


SPRITE n$ AT x,y ANGLE z

ELSE
GOSUB 1


ENDIF 
GOTO LOOP

1 FIELD "nomer" TEXT "Мимо" AT maxx/2,0 SIZE 70,25
FIELD "nomer" BACK COLOR 0,0,0
FIELD "nomer" FONT COLOR 1,1,1

RETURN

Что делаю не так?
Как Фант писал, у меня получилось. Но мне в самом деле с касанием в разные части спрайта интересно сделать.

User avatar
MARK99
Posts: 292
Joined: Tue Feb 03, 2015 2:33 pm
My devices: Ipad 4 , iphone 5
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by MARK99 »

Tantrixx wrote:Mark99,
Попробовал, движется только в правый нижний угол.
Что делаю не так?
Как Фант писал, у меня получилось. Но мне в самом деле с касанием в разные части спрайта интересно сделать.
У тебя не выходит потому что ориентация спрайта идёт по его центру.
Вот смотри твой спрайт обозначен оранжевым цветом, и его центр в точке X1,y1
Далее ты проверяешь. Условие X1<x<x1+w и y1<y<y1+h поскольку твои координаты спрайта начинаются от центра ,а после ты прибавляешь его стороны то ты какбы сдвигаешь его полящадь прикосновений.
Твой спрайт оранжевый,но чувствует прикосновения он в области синего квадрата.

Для решения такой проблемы тебе надо сдвинуть область определения касания спрайта ровно на его половину тоесть:

Code: Select all

GRAPHICS
OPTION ANGLE DEGREES
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
OPTION TEXT POS CENTRAL
maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()

w=100 ! h=100
n$="krug"
SPRITE n$ BEGIN w,h
SHADOW ON
DRAW CIRCLE 50,50 SIZE 50
DRAW TEXT "ТРОНЬ" AT 50,50
SPRITE END


SPRITE n$ AT maxx/2,maxy/2
SPRITE n$ DELAY 0.03
SPRITE n$ DA 1
SPRITE n$ LOOP
SPRITE n$ SHOW


LOOP:

GET SPRITE n$ ANGLE z

GET TOUCH 0 AS x,y

GET SPRITE n$ POS x1,y1


IF x>0 AND ((x>x1-w/2 AND x<x1+w/2) AND (y>y1-h/2 AND y<y1+h/2)) THEN


SPRITE n$ AT x,y ANGLE z

ELSE
GOSUB 1


ENDIF 
GOTO LOOP

1 FIELD "nomer" TEXT "Мимо" AT maxx/2,0 SIZE 70,25
FIELD "nomer" BACK COLOR 0,0,0
FIELD "nomer" FONT COLOR 1,1,1

RETURN
Attachments
image.png
image.png (236.76 KiB) Viewed 3872 times
Image

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Mark99, я Понял, спасибо.
Но тут появляется такая вещь. Если я делаю как Фант написал, то спрайт когда быстро двигаешь, притормаживает. Но за то когда мимо жмёшь, включается подпрограмма. А как ты мне написал, спрайт можно быстро двигать, но подпрограмма сразу включается. :cry:

Tantrixx
Posts: 119
Joined: Sun Nov 22, 2015 11:24 am
My devices: iPhone 5

Re: Мне нужна помощь с изучением синтаксиса.

Post by Tantrixx »

Mark99, если я так напишу:
IF x>0 AND ((x>x1 AND x<x1+w/2) AND (y>y1 AND y<y1+h/2))
То получится, что спрайт отвечать буде только на правое нижнее касание? Если да, то начинаю понимать :)

User avatar
MARK99
Posts: 292
Joined: Tue Feb 03, 2015 2:33 pm
My devices: Ipad 4 , iphone 5
Flag: Russia
Contact:

Re: Мне нужна помощь с изучением синтаксиса.

Post by MARK99 »

Tantrixx wrote:Mark99, если я так напишу:
IF x>0 AND ((x>x1 AND x<x1+w/2) AND (y>y1 AND y<y1+h/2))
То получится, что спрайт отвечать буде только на правое нижнее касание? Если да, то начинаю понимать :)
Да+++
Image

Post Reply