Нажатие на спрайт - что ему не нравится

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Фант wrote:Есть команда которая вычисляет угол спрайта. Можно использовать ее для выпполнения сложных поворотов
GET SPRITE N$ ANGLE X
Вы наверное не заметили, но выше я именно эту команду и упоминал.

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Фант wrote:надеюсь с этим Вы разобрались?
OPTION ANGLE DEGREES
OPTION ANGLE RADIANS
заставляет все тригонометрические функции считать свои аргументы в градусах/радианах. Остальные функции и команды BASIC, которые используют углы в качестве параметров, также затрагиваются этими командами. По умолчанию считается в радианах.

Для расчета в градусах в начале кода надо задать OPTION ANGLE DEGREES
Естественно. Это практически первые строки, что я написал в программе :mrgreen:

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 Фант »

ну тогда проблем быть не должно!

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Ну короче вот что-то такое у меня получилось. Я не очень доволен, какой-то индусский код вышел. Хотя для второго дня программинга (а я после того, как заставил круг двигаться по экрану, к бейсику не подходил) думаю неплохо.

Code: Select all

GRAPHICS
OPTION ANGLE DEGREES

maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()
my_tank1$ = "my_tank1"  'Name of the tank
my_tank1_speed = 0.5  'Speed of the tank
my_tank1_turn = 0 'Tank angle
key_top$ = "key_top"  'Key top
key_top_pressed$ = "key_top_presses"  'Key top pressed
key_down$ = "key_down"  'Key down
key_down_pressed$ = "key_down_pressed"  'Key down pressed
key_left$ = "key_left"  'Key left
key_left_pressed$ = "key_left_pressed"  'Key left pressed
key_right$ = "key_right"  'Key right
key_right_pressed$ = "key_right_pressed"  'Key right pressed

SPRITE key_top$ LOAD "data/arrow_t.png"
SPRITE key_top$ AT 120,maxy -250
SPRITE key_top$ ALPHA 0.7
SPRITE key_top$ SHOW
SPRITE key_top_pressed$ LOAD "data/arrow_tp.png"
SPRITE key_top_pressed$ AT 120,maxy -250

SPRITE key_top$ COPY key_down$
SPRITE key_down$ AT 120,maxy -120 FLIP 2
SPRITE key_down$ ALPHA 0.7
SPRITE key_down$ SHOW
SPRITE key_top_pressed$ COPY key_down_pressed$
SPRITE key_down_pressed$ AT 120,maxy -120 FLIP 2

SPRITE key_top$ COPY key_left$
SPRITE key_left$ AT 30, maxy - 185 ANGLE -90
SPRITE key_left$ ALPHA 0.7
SPRITE key_left$ SHOW
SPRITE key_top_pressed$ COPY key_left_pressed$
SPRITE key_left_pressed$ AT 30, maxy - 185 ANGLE -90

SPRITE key_top$ COPY key_right$
SPRITE key_right$ AT 210, maxy - 185 ANGLE 90
SPRITE key_right$ ALPHA 0.7
SPRITE key_right$ SHOW
SPRITE key_top_pressed$ COPY key_right_pressed$
SPRITE key_right_pressed$ AT 210, maxy - 185 ANGLE 90

SPRITE my_tank1$ LOAD "data/my_tank1.png"
SPRITE my_tank1$ AT maxx/2,maxy/2
SPRITE my_tank1$ SHOW
GET SPRITE my_tank1$ SIZE tank_width, tank_height


loop:

'Current tank coordinates
GET SPRITE my_tank1$ POS x_tank1, y_tank1

'Pressing the control buttons
GET TOUCH 0 AS x,y

'Tank movement top
IF SPRITE_HIT (key_top$, x,y) = 1 THEN
  SPRITE key_top_pressed$ SHOW
  IF y_tank1 - my_tank1_speed > 0 THEN  SPRITE my_tank1$ AT x_tank1, y_tank1 - my_tank1_speed ANGLE 0
ELSE
  SPRITE key_top_pressed$ HIDE
  SPRITE key_top$ SHOW
ENDIF

'Tank movement down
IF SPRITE_HIT (key_down$, x,y) = 1 THEN
  SPRITE key_down_pressed$ SHOW
  IF y_tank1 + tank_height + my_tank1_speed < maxy THEN  SPRITE my_tank1$ AT x_tank1, y_tank1 + my_tank1_speed ANGLE 180
ELSE
  SPRITE key_down_pressed$ HIDE
  SPRITE key_down$ SHOW
ENDIF

'Tank movement left
IF SPRITE_HIT (key_left$, x,y) = 1 THEN
  SPRITE key_left_pressed$ SHOW
  IF x_tank1 - my_tank1_speed > 0 THEN  SPRITE my_tank1$ AT x_tank1 - my_tank1_speed, y_tank1 ANGLE -90
ELSE
  SPRITE key_left_pressed$ HIDE
  SPRITE key_left$ SHOW
ENDIF

'Tank movement right
IF SPRITE_HIT (key_right$, x,y) = 1 THEN
  SPRITE key_right_pressed$ SHOW
  IF x_tank1 + tank_width + my_tank1_speed < maxx THEN  SPRITE my_tank1$ AT x_tank1 + my_tank1_speed, y_tank1  ANGLE 90
ELSE
  SPRITE key_right_pressed$ HIDE
  SPRITE key_right$ SHOW
ENDIF

GOTO loop

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 Фант »

А где изображения? без них код выдает ошибку

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Фант wrote:А где изображения? без них код выдает ошибку
Да рано еще. Но там все работает, вы уж мне поверьте :) Из того, что написано, конечно. Когда будет что показать - закину с картинками. Вот у меня сразу вопросец. Дальше планирую рисовать лабиринт из различного вида блоков. Ткните носом, как это лучше реализовать. Помню когда на спектруме программил , там я делал так.
DATA 1,1,1,1,1,1,1
DATA 1,0,2,2,0,1,0
DATA 1,0,0,0,0,1,0
DATA 1,0,0,0,0,1,0
DATA 1,1,1,1,1,1,1

Где к примеру 0 - это пустота. 1- это кирпич, 2- железный блок итд. Потом все это читалось с помощью команды READ и в соответствии с цифрами выводились нужные блоки. Тут такое можно реализовать и как ?

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 Фант »

По лабиринтам главный спец-это Верховный :D
К сожалению до лабиринта у меня не дошли руки...
DATA и READ в sB конечно же присутствует-принцип тот же.

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

В мануале не могу найти. Это в каком разделе ?

ПыСы лабиринт не рандомный, поэтому помощь Верховного может и не понадобиться пока :mrgreen:

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 Фант »

Dionis wrote:В мануале не могу найти. Это в каком разделе ?

ПыСы лабиринт не рандомный, поэтому помощь Верховного может и не понадобиться пока :mrgreen:
РАЗНОЕ

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Большое спасибо.

Post Reply