サンプルプログラム

Back Home
プチコンは株式会社スマイルブームの登録商標です.
ポップアップ命令表は公式ページの命令表をスマホ用に変換したもので、著作権等は株式会社スマイルブームに所属します。

1. キャラを動かす

Back Home

まずは中央にキャラクターを表示してみましょう。

CLS:X=15:Y=11
LOCATE X,Y:PRINT "◆";

これを拡張し、十字カーソルでキャラクターを動かすサンプルにします。

VSYNC命令でタイミングをとりながらループしています。 ループごとにBUTTON命令で十字キーの状態を確認し、キャラクターを動かします

REM *** Move a character (1) ***
CLS:X=15:Y=11
@LOOP
DX=0:DY=0:B=BUTTON()
IF B AND 1 THEN DY=-1
IF B AND 2 THEN DY=1
IF B AND 4 THEN DX=-1
IF B AND 8 THEN DX=1
LOCATE X,Y:PRINT " ";
X=X+DX:Y=Y+DY
LOCATE X,Y:PRINT "◆";
VSYNC 1
GOTO @LOOP

このままだと画面を飛び出して表示が乱れてしまいますよね。 飛び出さないように、座標の範囲指定を加えたのが以下のサンプルです。

REM *** Move a character (2) ***
CLS:X=15:Y=11
@LOOP
DX=0:DY=0:B=BUTTON()
IF B AND 1 THEN DY=-1
IF B AND 2 THEN DY=1
IF B AND 4 THEN DX=-1
IF B AND 8 THEN DX=1
LOCATE X,Y:PRINT " ";
X=X+DX:Y=Y+DY
IF X<0 THEN X=0
IF X>31 THEN X=31
IF Y<0 THEN Y=0
IF Y>23 THEN Y=23
LOCATE X,Y:PRINT "◆";
VSYNC 1
GOTO @LOOP

僕なら以下のように、座標の範囲指定とボタン押しを同時に実施しちゃいます。

REM *** Move a character (3) ***
CLS:X=15:Y=11
@LOOP
DX=0:DY=0:B=BUTTON()
IF (Y>0)AND(B AND 1) THEN DY=-1
IF (Y<23)AND(B AND 2)>0 THEN DY=1
IF (X>0)AND(B AND 4)>0 THEN DX=-1
IF (X<31)AND(B AND 8)>0 THEN DX=1
LOCATE X,Y:PRINT " ";
X=X+DX:Y=Y+DY
LOCATE X,Y:PRINT "◆";
VSYNC 1
GOTO @LOOP

動かないときも消したり書いたりするのが無駄? であれば以下のようにスキップさせるのも良いでしょう。

REM *** Move a character (4) ***
CLS:X=15:Y=11
@LOOP
DX=0:DY=0:B=BUTTON()
IF (Y>0)AND(B AND 1) THEN DY=-1
IF (Y<23)AND(B AND 2)>0 THEN DY=1
IF (X>0)AND(B AND 4)>0 THEN DX=-1
IF (X<31)AND(B AND 8)>0 THEN DX=1
IF DX==0 AND DY==0 THEN @LOOP_SKIP
LOCATE X,Y:PRINT " ";
X=X+DX:Y=Y+DY
LOCATE X,Y:PRINT "◆";
@LOOP_SKIP
VSYNC 1
GOTO @LOOP

今回は後に続く処理が無いので、以下のようにもできますね。

REM *** Move a character (5) ***
CLS:X=15:Y=11
@LOOP
VSYNC 1
DX=0:DY=0:B=BUTTON()
IF (Y>0)AND(B AND 1) THEN DY=-1
IF (Y<23)AND(B AND 2)>0 THEN DY=1
IF (X>0)AND(B AND 4)>0 THEN DX=-1
IF (X<31)AND(B AND 8)>0 THEN DX=1
IF DX==0 AND DY==0 THEN @LOOP
LOCATE X,Y:PRINT " ";
X=X+DX:Y=Y+DY
LOCATE X,Y:PRINT "◆";
GOTO @LOOP