#define WIN_W 640 ;ウィンドウの幅 #define WIN_H 480 ;ウィンドウの高さ #define CHAR_W 40 ;自機の幅 #define CHAR_H 40 ;自機の高さ ;--------------------変数の初期化------------------ char_x=WIN_W/2 : char_y=WIN_H-50 ;キャラクタの初期位置 dx=4 : dy=4 ;自機の移動量 ;--------------------画面の準備------------------ buffer 2,CHAR_W,CHAR_H,0 : cls 4 font "MS ゴシック",CHAR_H color 255,255,255 : mes "▲" ;自機 screen 0,WIN_W,WIN_H,0,0,0 cls 4 gmode 2 ;黒(0,0,0)をすかして表示 ;--------------------メインループ------------------ *main_loop await 10 gosub *my_move ;自機移動 gosub *draw ;表示 goto *main_loop ;--------------------サブルーチン------------------ ;--------------------自機移動------------------ *my_move stick a,15 ;これで、十字キーの押しっぱなしの判定ができる(1+2+4+8=15) if a&1 : char_x-=dx ;左 if a&2 : char_y-=dy ;上 if a&4 : char_x+=dx ;右 if a&8 : char_y+=dy ;下 ;ウィンドウからはみ出ないかを判定 if char_x<0 : char_x=0 if char_y<0 : char_y=0 if char_x>(WIN_W-CHAR_W) : char_x=(WIN_W-CHAR_W) if char_y>(WIN_H-CHAR_H) : char_y=(WIN_H-CHAR_H) return ;--------------------表示------------------ *draw redraw 0 color 0,0,0 boxf 0,0,WIN_W,WIN_H ;全画面を塗りつぶす pos char_x,char_y gcopy 2,0,0,CHAR_W,CHAR_H redraw 1 return |