#define WX 200 ; ウィンドウサイズX
#define WY 200 ; ウィンドウサイズY
#define CH_SIZE 16 ; キャラサイズ
#define CH_MOVE 2 ; キャラ移動量
#define BL_NUM 3 ; ブロック数
x=0 ; キャラ座標X
y=0 ; キャラ座標Y
int key ; 取得キー
dim blocks,4,BL_NUM
; blocks.(0=左上X 1=左上Y 2=右下X 3=右下Y).ブロック番号
blocks.0.0 = 60 ,70 ,80 ,90
blocks.0.1 = 100,100,120,120
blocks.0.2 = 160,20 ,180,40
screen 0,WX,WY
; メインループ
repeat
gosub *keyproc
gosub *draw
gosub *checkcol
wait 1
loop
; キー処理
*keyproc
stick key,15
if key&1 : x-=CH_MOVE : if x<0 : x=0
if key&2 : y-=CH_MOVE : if y<0 : y=0
if key&4 : x+=CH_MOVE : if x>(WX-CH_SIZE) : x=WX-CH_SIZE
if key&8 : y+=CH_MOVE : if y>(WY-CH_SIZE) : y=WY-CH_SIZE
return
; 描画
*draw
redraw 0
color 0,0,0 : boxf
; ブロックの描画
color 255,255,255
repeat BL_NUM
dup bl,blocks.0.cnt
boxf bl.0,bl.1,bl.2,bl.3
loop
; 自キャラの描画
color 255,255,255
pos x,y : mes "●"
redraw 1
return
; 衝突のチェック
*checkcol
f=0
repeat BL_NUM
dup bl,blocks.0.cnt
if (x>(bl.0-CH_SIZE))&(y>(bl.1-CH_SIZE))&(x<=bl.2)&(y<=bl.3) {
title "hit on block no."+cnt
f=1
}
loop
if f=0 : title ""
return