Фант, а как их расставить заранее? Я уже столкнулся с тормозами в программе. А сейчас она вообще после нескольких запусков или маленького изменения зависает. Нужно sB перезагружать несколько раз. Вот ссылка, если не трудно, посмотрите пожалуйста. Это первая большая программа, игра. На которую вроде ума хватает, а опыта и нюансов не хватает.
Там на кур нажимать нужно, чтоб Маша двигалась
Может и mr.K посмотрит подскажет, как зависание программы sB избежать. https://www.dropbox.com/sh/ctnsz8712p7y ... 1xAca?dl=0
Ну понятно... Хорошая задумка!)
Код не смотрел, в Ваши навороты вникать не буду.
Сразу скажу одно: сложная механика движения спрайтов здесь вообще не нужна
Мой совет в качестве наводки: вспомните как выглядит экран такой игры типа ну погоди с яйцами когда он не включен. На экране можно заметить отображение всех яиц и всех волков сразу!
Так вот. Здесь на мой взгляд механика должна быть такой же:)
То есть все спрайты сразу на экране? С альфа 0? А когда нужно появиться, альфа 1? Я хотел сделать плавное движение яиц Я без альфа не знаю, как ещё прятать спрайты.
Tantrixx wrote:То есть все спрайты сразу на экране? С альфа 0? А когда нужно появиться, альфа 1? Я хотел сделать плавное движение яиц Я без альфа не знаю, как ещё прятать спрайты.
Я не знаю что лучше: можно с прозрачностью а можно прятать hide-show
Hide-show так я и прячу с альфа попробовал, все равно зависает. Началось все с создания второго катящегося яйца. При том с прописания координат второго яйца.
'установочные команды
GRAPHICS
'SET TOOLBAR OFF
PAGE 1 SET
SET ORIENTATION LANDSCAPE
RANDOMIZE
OPTION BASE 1
OPTION ANGLE DEGREES
OPTION TEXT POS CENTRAL
OPTION SPRITE POS CENTRAL
OPTION IMAGE POS CENTRAL
SET LISTS CUSTOM
SET BUTTONS CUSTOM
OPTION SORT DESCENDING
REFRESH OFF
maxx=SCREEN_WIDTH()
maxy=SCREEN_HEIGHT()
kof=maxy/768
kof1=maxx/1024
SHADOW OFFSET 2*.kof,2*.kof
'ввод переменных
c=50*.kof
x(1)=c ! x(2)=maxx-c ! x(3)=c ! x(4)=maxx-c
y(1)=5*c ! y(2)=5*c ! y(3)=10*c ! y(4)=10*c
'графика
FILL COLOR 0,0,1
FILL RECT 3*c,y(1)+20*.kof SIZE 3*c*1.1,10*.kof
FILL RECT 3*c,y(3)+20*.kof SIZE 3*c*1.1,10*.kof
FILL RECT maxx-3*c,y(1)+20*.kof SIZE 3*c*1.1,10*.kof
FILL RECT maxx-3*c,y(3)+20*.kof SIZE 3*c*1.1,10*.kof
REFRESH
FILL COLOR .8,.8,.8
'создаем и размещаем на экране скрытые спрайты
FOR i=1 TO 20
SPRITE i BEGIN 50*.kof,50*.kof
FILL CIRCLE 25*.kof,25*.kof SIZE 25*kof,15*.kof
SPRITE END
ang+=15
k+=1
IF k=1 THEN ! x(1)+=c ! SPRITE i AT x(1)-c/2,y(1) ANGLE ang ! ENDIF
IF k=2 THEN ! x(2)-=c ! SPRITE i AT x(2)+c/2,y(2) ANGLE ang ! ENDIF
IF k=3 THEN ! x(3)+=c ! SPRITE i AT x(3)-c/2,y(3) ANGLE ang ! ENDIF
IF k=4 THEN ! x(4)-=c ! SPRITE i AT x(4)+c/2,y(4) ANGLE ang ! ENDIF
IF k=4 THEN k=0
NEXT i
'установки уровня игры-их необходимо регулировать в главном цикле в зависимости от задач игры
ur=5 'частота появления яиц. с каждым уровнем надо уменьшать на 1.
t=.9 ' определяет скорость движения яиц-постепенно должна уменьшаться.
tim=TIME()
' главный цикл
LOOP:
GET TOUCH 0 AS xx,yy
IF TIME()>tim+t THEN
FOR i=17 TO 20
SPRITE i HIDE
NEXT i
FOR i=16 TO 1 STEP -1
i$=i
IF SPRITE_VISIBLE (i$)=1 THEN ! SPRITE i HIDE ! SPRITE i+4 SHOW ! ENDIF
NEXT i
tim=TIME()
IF k%ur=0 THEN
sl=RND(4)+1
SPRITE sl SHOW
ENDIF
k+=1
ENDIF
GOTO LOOP
Пожалуйста подавайте баг-репорты в соответствующем разделе. С четким описанием порядка действий, который приводит к проблеме.
При подаче баг-репорта можно привести самодостаточный пример кода (который можно взять и выполнить), который иллюстрирует проблему smart BASIC. Но код целой программы не может быть иллюстрацией, так как там могут содержаться ваши собственные ошибки, а также команды, не имеющие отношение к проблеме.