📄 popxsprite.tpl
字号:
rem try appending with unloaded bitmap
sp&=spritecreate&:(1,20,40,0)
id1&=2 : id2&=3
onerr e3
spriteappend:(500000,id1&,id2&,1,0,0)
onerr off
raise 5
e3::
onerr off
if err<>-33 : raise 6 : endif
print "OK"
rem pause 20
gcls : cls
endp
proc tchange:
local id&,idm&,idmm&
print "Test SPRITECHANGE:"
print "Test changing bitmaps and position"
sp1&=createsprite1&:(1,&7a120,20,20,&0)
spritedraw:
pause%:(10)
id&=bitmapload&:(kpath$+"grey1.bmp",0)
spritechange:(0,&7a120,id&,id&,1,10,10)
bitmapunload:(id&)
pause%:(10)
id&=bitmapload&:(kpath$+"grey2.bmp",0)
spritechange:(1,&7a120,id&,id&,1,10,10)
pause%:(10)
spritechange:(3,&7a120,id&,id&,1,10,10)
bitmapunload:(id&)
pause%:(10)
id&=bitmapload&:(kpath$+"black.bmp",0)
spritechange:(2,&7a120,id&,id&,1,10,10)
pause%:(10)
print "Test changing mask invert mode"
spritechange:(2,&7a120,id&,id&,0,10,10)
pause%:(10)
idm&=bitmapload&:(kpath$+"stripes.bmp",0)
spritechange:(2,&7a120,id&,idm&,1,10,10)
pause%:(10)
spritechange:(2,&7a120,id&,id&,1,10,10)
bitmapunload:(idm&)
pause%:(10)
print "Test changing time"
spritechange:(2,1000000,id&,id&,1,10,10)
pause%:(10)
spritechange:(2,10000000,id&,id&,1,10,10)
pause%:(10)
spritechange:(2,500000,id&,id&,1,10,10)
pause%:(10)
rem try to change to 2 different sized bitmaps
idm&=bitmapload&:(kpath$+"stripes1.bmp",0)
onerr e1
spritechange:(2,&7a120,id&,idm&,1,10,10)
onerr off
raise 1
e1::
onerr off
if err<>-2 : raise 2 : endif
bitmapunload:(id&)
bitmapunload:(idm&)
rem try changing member which does not exist
id&=bitmapload&:(kpath$+"grey1.bmp",0)
onerr e2
spritechange:(5,&7a120,id&,id&,1,10,10)
onerr off
raise 3
e2::
onerr off
if err<>-2 : raise 4 : endif
bitmapunload:(id&)
rem try to change to unloaded bitmap
id&=2
onerr e4
spritechange:(2,&7a120,id&,id&,1,10,10)
onerr off
raise 7
e4::
onerr off
if err<>-33 : raise 8 : endif
spritedelete:(sp1&)
rem try to change a sprite member when none is created
id&=bitmapload&:(kpath$+"grey1.bmp",0)
onerr e3
spritechange:(1,&7a120,id&,id&,1,10,10)
onerr off
raise 5
e3::
onerr off
if err<>-33 : raise 6 : endif
bitmapunload:(id&)
print
print "OK"
rem pause 20
gcls : cls
endp
proc tdraw:
print "Test SPRITEDRAW:"
print
rem try to draw without current sprite
onerr e1
spritedraw:
onerr off
raise 1
e1::
onerr off
if err<>-33 : raise 2 : endif
rem try to draw twice - second one should do nothing
sp1&=createsprite1&:(1,&7a120,20,2,&1)
spritedraw:
spritedraw:
pause%:(10)
spritedelete:(sp1&)
rem try to draw when none created
onerr e2
spritedraw:
onerr off
raise 1
e2::
onerr off
if err<>-33 : raise 2 : endif
print "OK"
rem pause 20
gcls : cls
endp
proc tpos:
print "Test SPRITEPOS:"
sp1&=createsprite1&:(1,&7a102,20,20,&0)
spritedraw:
pause%:(10)
rem try to position off screen
spritepos:(1000,1000)
pause%:(10)
spritepos:(20,20)
pause%:(10)
spritepos:(-20,-20)
pause%:(10)
spritepos:(20,20)
pause%:(10)
spritedelete:(sp1&)
rem try to position when no current sprite
onerr e2
spritepos:(20,20)
onerr off
raise 3
e2::
onerr off
if err<>-33 : raise 4 : endif
print "OK"
rem pause 20
gcls : cls
endp
proc tdelete:
print "Test SPRITEDELETE:"
rem delete a sprite which doesn't exist
sp1&=2
onerr e1
spritedelete:(sp1&)
onerr off
raise 1
e1::
onerr off
if err<>-33 : raise 2 : endif
print "OK"
rem pause 20
gcls : cls
endp
const KCrystalScreenHeight%=16
const KS5ScreenHeight%=19
proc tuse:
screen 71,2,1,KCrystalScreenHeight%
print "Test SPRITEUSE:"
sp1&=createsprite1&:(1,&7a120,20,20,&0)
sp2&=createsprite2&:(1,&7a120,300,20,&1)
print "Drawing sprite 1"
spriteuse:(sp1&)
spritedraw:
pause%:(10)
print "Drawing sprite 2"
spriteuse:(sp2&)
spritedraw:
pause%:(10)
print "Moving sprite 1"
spriteuse:(sp1&)
spritepos:(70,40)
pause%:(10)
print "Moving sprite 2"
spriteuse:(sp2&)
spritepos:(300,90)
pause%:(10)
print "Deleting sprite 1 and moving sprite 2"
spriteuse:(sp2&)
spritedelete:(sp1&)
spritepos:(300,20)
pause%:(10)
print "Try to use sprite 1"
onerr e1
spriteuse:(sp1&)
onerr off
raise 1
e1::
onerr off
if err<>-33 : raise 2 : endif
print "Deleting sprite 2"
spritedelete:(sp2&)
pause%:(10)
rem trying to use a sprite when none exists
sp1&=2
onerr e2
spriteuse:(sp1&)
onerr off
raise 3
e2::
onerr off
if err<>-33 : raise 4 : endif
print "OK"
rem pause 20
screen 71,KCrystalScreenHeight%
gcls : cls
endp
const KS5ScreenWidth%=91
const KCrystalScreenWidth%=80
proc dispsprite:
screen KCrystalScreenWidth%,KCrystalScreenHeight%
print "A simple test with one sprite"
rem pause 20
cls
gcls
rem background for sprite
gcolor 0,0,0
gat 320,0 : gfill 320,120,0
gcolor $50,$50,$50
gat 0,120 : gfill 320,120,0
gcolor 0,0,0
gat 320,120 : glineto 640,240
sp1&=createsprite1&:(1,&186a0,135,35,&0)
spritedraw:
gupdate
rem pause 40
spritepos:(455,35)
gupdate
rem pause 40
spritepos:(455,155)
gupdate
rem pause 40
spritepos:(135,155)
gupdate
rem pause 40
spritedelete:(sp1&)
gcls
cls
endp
proc twosprites:
local wid%,ret%,sp3&
local t1&,t2&,t3&,col&,col%,f1&,f2&,f3&
t1&=1000000
t2&=1000000
t3&=1000000
col&=255
wid%=gcreate(0,0,gwidth,gheight,1,2)
if 0
dinit "Enter options for sprites"
dLong t1&,"Time interval for sprite 1 in microsecs",&0,&7fffffff
dLong t2&,"Time interval for sprite 2 in microsecs",&0,&7fffffff
dLong t3&,"Time interval for sprite 3 in microsecs",&0,&7fffffff
dLong f1&,"Flags for sprite 1",&0,&1
dLong f2&,"Flags for sprite 2",&0,&1
dLong f3&,"Flags for sprite 3",&0,&1
dLong col&,"Colour for background",&0,&100
ret%=dialog
rem if ret%=0 : break : endif
endif
col%=col&
gat 0,0 : gcolor col%,col%,col%
gfill gwidth,gheight,0
sp1&=createsprite1&:(wid%,t1&,20,20,f1&)
spritedraw:
sp2&=createsprite1&:(wid%,t2&,250,20,f2&)
spritedraw:
sp3&=createsprite2&:(wid%,t3&,480,20,f3&)
spritedraw:
pause%:(10)
spritedelete:(sp1&)
spritedelete:(sp2&)
spritedelete:(sp3&)
rem until 0
gclose wid%
endp
proc lots:
local sprid&(100),i%,x%,y%,n%
n%=20
x%=10
y%=10
while i%<n%
i%=i%+1
if x%>=590
x%=10
y%=y%+60
endif
sprid&(i%)=createsprite1&:(1,int(200000.0),x%,y%,&0)
spritedraw:
x%=x%+60
endwh
pause%:(10)
i%=0
while i%<n%
i%=i%+1
spritedelete:(sprid&(i%))
endwh
endp
proc delbitmaps:
trap delete kpath$+"black.bmp"
trap delete kpath$+"grey1.bmp"
trap delete kpath$+"grey2.bmp"
trap delete kpath$+"crossx.bmp"
trap delete kpath$+"cross+.bmp"
trap delete kpath$+"plain.bmp"
trap delete kpath$+"stripesdef.bmp"
trap delete kpath$+"stripes0.bmp"
trap delete kpath$+"stripes1.bmp"
trap delete kpath$+"stripes2.bmp"
endp
PROC pause%:(duration%)
pause duration%
ENDP
REM End of pOpxSprite.tpl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -