HSPのテスト

http://antares.cn/hsp/sample/index.html#tournament より。

http://antares.cn/hsp/sample/index.html#tournament より。

  • タグ:
  • タグはありません
;
#ifdef __hsp30__
#define objselstr(%1,%2,%3) vvv=%3: sendmsg objinfo(%1,2),177,%2,varptr(vvv)
#define getact(%1) %1=ginfo_act
#else
#define ginfo_dispx dispx
#define ginfo_dispy dispy
#define objselstr(%1,%2,%3) vvv=%3: objsend %1,177,%2,vvv,1
#define getact(%1) ginfo 1: %1=prmx
#endif
fsize=8
pos 4,8: mes ""
pos 88,4: input nteam
pos 4,32: button "", *l_disp
objsel 0: objselstr 0,0,-1
*l_loop
repeat: wait 10
getact act
if act==0 {
stick key,,1
if key==32:break
}
if act!=act2 {
if act==0 {
gsel 0
objsel 0
c=-1
objselstr 0,0,-1
}
act2=act
}
loop
*l_disp
if nteam<2: dialog "2": goto *l_loop
beki=1
nbeki=0
repeat
beki=beki*2
nbeki++
if beki>=nteam: break
loop
marg=4
w2=fsize+marg
wid=beki*w2
if wid<128: wid=128 ;HSP
heit=(nbeki+1)*16
if wid>ginfo_dispx {
screen 2,wid,heit,,0,(ginfo_dispy-heit)/2,ginfo_dispx-6,heit
} else {
screen 2,wid,heit,,(ginfo_dispx-wid)/2,(ginfo_dispy-heit)/2
}
fusen=beki-nteam
fusen2=fusen
nw=beki
bk=1
iv=0
y=0
ww=nw*w2-marg
repeat nbeki
;
gosub *l_vert
nw=nw/2
ww=nw*w2-marg
;
gosub *l_hor
bk=bk*2
iv++
y+=16
loop
;
gosub *l_vert2
goto *l_loop
;
*l_vert
x=ww/2
repeat bk
line x,y,x,y+15
x+=nw*w2
loop
return
;2
*l_vert2
x=ww/2
repeat bk
if cnt\2 { ;
if fusen<1 {
line x,y,x,y+15
} else {
c=fsize/2
line x-c-2,y-1,x-c-2,y+15
fusen--
}
} else { ;
if fusen<1 {
line x,y,x,y+15
}
}
x+=nw*w2
loop
return
;
*l_hor
x=ww/2-1
repeat bk
if nw>1 | (fusen2<1) {
line x,y+16,nw*w2+x+1,y+16
}
if nw==1: if fusen2: fusen2--
x+=nw*w2*2
loop
return
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX