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

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

block$(1) = "data/block1.png"
block$(2) = "data/block2.png"
x_max = 13 'Block X max position
y_max = 10 'Block Y max position
x_shift = 128 'X-shift of the block
y_shift = 0 'Y-shift of the block

Code: Select all

'Create level
DIM block_arr(x_max, y_max)
FOR y_min = 0 TO y_max - 1
  FOR x_min = 0 TO x_max - 1
    READ b
    block_arr(x_min, y_min) = b
    IF b <> 0 THEN
      DRAW IMAGE block$(b) AT x_min * 64 + x_shift, y_min * 64 + y_shift
    ENDIF
  NEXT x_min
NEXT y_min

Code: Select all

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,1,0,1,0,1,0,1,0,1,0,1,0
DATA 0,1,0,1,0,1,0,1,0,1,0,1,0
DATA 0,1,0,1,0,1,2,1,0,1,0,1,0
DATA 0,1,0,1,0,0,0,0,0,1,0,1,0
DATA 0,0,0,0,0,1,1,1,0,0,0,0,0
DATA 0,0,1,1,1,0,0,0,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,1,0,1,0,1,0,1,0,1,0,1,0
DATA 0,1,0,1,0,0,0,0,0,1,0,1,0

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

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

Post by Dionis »

Что в итоге получилось:

Image

Танк пока, естественно, заезжает на кирпичи, но массив с координатами у меня есть, так что там дело техники.

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: мои вопросы по Smart Basic - пишем игру

Post by Dionis »

Уже буду здесь писать, чтобы не создавать кучу отдельных тем. Хочу постоянно видеть текущие координаты танка. Написал:

Code: Select all

GET SPRITE my_tank1$ POS x_tank1, y_tank1

text_c$ = "x="&x_tank1&" y="&y_tank1
DRAW TEXT text_c$ AT 0, 0
Выводит нормально, но когда еду, текст накладывается и получается каша. Глупый вопрос - как выводить текст, чтобы он затирался. TEXT CLEAR не срабатывает (видимо считается, что это графика ?). Добавил строку

Code: Select all

DRAW TEXT "                          " AT 0, 0
но она почему-то тоже не срабатывает.

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: мои вопросы по Smart Basic - пишем игру

Post by Фант »

Dionis wrote:Уже буду здесь писать, чтобы не создавать кучу отдельных тем. Хочу постоянно видеть текущие координаты танка. Написал:

Code: Select all

GET SPRITE my_tank1$ POS x_tank1, y_tank1

text_c$ = "x="&x_tank1&" y="&y_tank1
DRAW TEXT text_c$ AT 0, 0
Выводит нормально, но когда еду, текст накладывается и получается каша. Глупый вопрос - как выводить текст, чтобы он затирался. TEXT CLEAR не срабатывает (видимо считается, что это графика ?). Добавил строку

Code: Select all

DRAW TEXT "                          " AT 0, 0
но она почему-то тоже не срабатывает.
В данном случае есть два варианта:
Или спрайтами(создайте спрайт с координаиой и постоянно в нем рисуйте координаты) либо подкладывайте под текст закрашенный в цвет фона прямоугольник

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

SPRITE "text_data" BEGIN 160, 50
SPRITE END
В цикле, где происходит перемещение:

Code: Select all

text_c$ = "x="&x_tank1&" y="&y_tank1
SPRITE "text_data" BEGIN
GRAPHICS CLEAR
DRAW TEXT text_c$ AT 0, 0
SPRITE END
SPRITE "text_data" SHOW
Как бы и работает, но танк стал жутко медленно ездить :?

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:Сделал так. В самом начале программы:

Code: Select all

SPRITE "text_data" BEGIN 160, 50
SPRITE END
В цикле, где происходит перемещение:

Code: Select all

text_c$ = "x="&x_tank1&" y="&y_tank1
SPRITE "text_data" BEGIN
GRAPHICS CLEAR
DRAW TEXT text_c$ AT 0, 0
SPRITE END
SPRITE "text_data" SHOW
Как бы и работает, но танк стал жутко медленно ездить :?
аааа...да в спрайте все равно надо фон вставлять...
у вас задержка изза graphics clear
рисуйте закрашенный прямоугольник

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

SPRITE "text_data" SHOW-достаточно написать один раз при создании пустого спрайта-из цикла уберите

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

для оптимизации размера спрайта-текста используйте такие команды
TEXT_HEIGHT (T$)
TEXT_WIDTH (T$)
возвращает высоту и ширину текста [t$] для текущего графического шрифта.
этими командами можно рассчитать высоту и ширину текста в зависимости от шрифта и его размера-и от этих значений создавать спрайт нужных размеров

кстати для вывода временной информации я часто использую кнопку.Нужная информация-это название кнопки. Просто и сердито.

Post Reply