sample\hgimg4\test5.hsp » Plain Format
#include "hgimg4.as"
title "HGIMG4 Test"
randomize
gpreset
setcls CLSMODE_SOLID, $404040
sx=ginfo_sx ; 画面のXサイズ
sy=ginfo_sy ; 画面のYサイズ
celload "res/ball64.png",3
celdiv 3, 64,64, 32,32
max = 100 ; ボールの最大数
gosub *c_init
id=0
x = sx / 2
y = sy / 2
*main
stick key
if key&$100 { ; マウスクリック判定
x=mousex
y=mousey
id++
}
gosub *c_move ; ボールを動かす
redraw 0
gmode 5,,,255
celputm mx,my,mf,3,max ; セルをまとめて描画
; 文字を表示
color 255,255,255
pos 8,8
mes "celputm test"
redraw 1
await 1000/60
goto *main
*c_init
; ボールの初期化サブルーチン
;
speed=2 ; ボールのスピード
dim mf,max ; 配列変数mfを定義する
dim mx,max ; 配列変数mxを定義する
dim my,max ; 配列変数myを定義する
dim mpx,max ; 配列変数mpxを定義する
dim mpy,max ; 配列変数mpyを定義する
repeat max
mf(cnt)=cnt&63 ; 表示IDを設定
mx(cnt)=rnd(sx-128)+64 ; 表示X位置を乱数で設定
my(cnt)=rnd(sy-128)+64 ; 表示Y位置を乱数で設定
if rnd(2)=0 { ; X方向の移動量を乱数で設定
mpx(cnt)=-speed
} else {
mpx(cnt)=speed
}
if rnd(2)=0 { ; Y方向の移動量を乱数で設定
mpy(cnt)=-speed
} else {
mpy(cnt)=speed
}
loop
return
*c_move
; ボール動作サブルーチン
;
repeat max
x=mx(cnt):y=my(cnt) ; 変数X,Yに座標を代入する
x+=mpx(cnt) ; X方向の移動
if (x>sx)|(x<0) { ; 画面の端ならば反転させる
x=mx(cnt):mpx(cnt)=-mpx(cnt)
}
y+=mpy(cnt) ; Y方向の移動
if (y>=sy)|(y<0) { ; 画面の端ならば反転させる
y=my(cnt):mpy(cnt)=-mpy(cnt)
}
mx(cnt)=x:my(cnt)=y ; 変数X,Yに結果を戻す
loop
return