oslopov1991 Пользователь Сейчас: Offline
Имя: олег Регистрация: 24.12.2014
| Вот попробовал оптимизировать предыдущий код. Картинка теперь строится автоматически, но возникла другая проблема. Как ускорить скроллинг картинки до приемлемых fps 25 или 30? Вот код. В нем есть неиспользуемые куски кода. Эти куски реализуют самый старый тип скролла-это скроллинг по целым тайлам в пределах массива. Не удалаяю его, потому что может нужен ещё для чего-то. Вот код: Открыть спойлер Закрыть спойлер x=0
y=0
dim im[32,32]
read.data~
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,~
1,1,1,1,1,1,1,1,1,2,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,~
1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,~
1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,~
1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,2,2,2,1,~
1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,~
1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,~
1,1,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,~
1,1,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,~
1,1,1,1,2,1,1,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,~
1,1,1,1,2,2,1,1,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,~
1,1,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,~
1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,~
1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,~
1,1,1,2,2,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,1,~
1,1,1,1,1,2,2,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,~
1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,~
1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,~
1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,~
1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,~
1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,~
1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,~
1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,2,1,~
1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,2,1,1,1,2,1,~
1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,~
1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,~
1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,~
1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,~
1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,~
2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,~
1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,1,1,~
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1
for m=1 to 32
for r=1 to 32
read.next im[r,m]
next r
next m
gr.open 255,0,0,0
gr.orientation -1
gr.screen w,h
gr.bitmap.load img1,"/grafics/океан 1.png"
gr.bitmap.load img2,"/grafics/трава 1.png"
gr.bitmap.load img3,"/grafics/вверх.png"
gr.bitmap.load img4,"/grafics/вправо.png"
gr.bitmap.load img5,"/grafics/влево.png"
gr.bitmap.load img6,"/grafics/вниз.png"
shiftX=0
shiftY=0
speed=48
gosub map_made
gr.render
gosub touch
while 1=1
gosub touch
gosub image_move
gosub image_conditions
gr.render
repeat
touch:
gr.bitmap.draw up,img3,(w/2)-32,0
gr.bitmap.draw right,img4,w-64,(h/2)-32
gr.bitmap.draw left,img5,0,(h/2)-32
gr.bitmap.draw down,img6,(w/2)-32,h-64
gr.render
object=1
do
gr.touch tap,posX,posY
until tap
return
image_conditions:
if posY<h/2 & (posX>(w/2)-32 & posX<(w/2)+32) then y=y+speed
if posY>h/2 & (posX>(w/2)-32 & posX<(w/2)+32) then y=y-speed
if posX<w/2 & (posY>(h/2)-32 & posY<(h/2)+32) then x=x+speed
if posX>w/2 & (posY>(h/2)-32 & posY<(h/2)+32) then x=x-speed
if x>0 then x=0
if x<-1024 then x=-1024
if y>0 then y=0
if y<-1496 then y=-1496
return
frame_conditions:
if wnew>wold then shiftX=shiftX-1
if wnew<wold then shiftX=shiftX+1
if hnew>hold then shiftY=shiftY-1
if hnew<hold then shiftY=shiftY+1
if shiftX<1 then shiftX=0
if shiftX>16 then shiftX=16
if shiftY<1 then shiftY=0
if shiftY>24 then shiftY=24
return
image_move:
object=1
for cy=1 to 32
for cx=1 to 32
gr.modify object,"x",x+(64*(cx-1))
gr.modify object,"y",y+(64*(cy-1))
object=object+1
next cx
next cy
return
map_made:
object=1
for cy=1 to 32
for cx=1 to 32
gr.bitmap.draw object,img+(im[cx,cy]),x+(64*(cx-1)),y+(64*(cy-1))
object=object+1
next cx
next cy
return
В коде есть примитивное управление стрелками. Изменено Ксакеп (14.02 / 16:32) (всего 2 раза) |