【注意】サブルーチンについての記事を先にお読みください!!チェックポイント 今後、プログラムの解説を行う場合にプログラムがブロック化されている方が見やすくなるのでサブルーチン化することにします。 現行のサンプルプログラムおよびサブルーチン化したプログラムを記載します。
|
| ■プログラム |
サブルーチンを使用していない場合0001 ' initialize 0002 UFO_X = 0:UFO_F = 0 0003 PLY_X = 15 0004 ' game loop 0005 @LOOP 0006 VSYNC 1 0007 CLS 0008 ' UFO 0009 IF UFO_F!=0 GOTO @UFO_MVL 0010 ' move right 0011 LOCATE UFO_X, 0 0012 PRINT "A" 0013 UFO_X = UFO_X + 1 0014 IF UFO_X < 32 GOTO @UFO_END 0015 UFO_X = 31 0016 UFO_F = 1 0017 GOTO @UFO_END 0018 ' move left 0019 @UFO_MVL 0020 LOCATE UFO_X, 0 0021 PRINT "A" 0022 UFO_X = UFO_X - 1 0023 IF UFO_X >= 0 GOTO @UFO_END 0024 UFO_X = 0 0025 UFO_F = 0 0026 @UFO_END 0027 ' player 0028 LOCATE PLY_X,21 0029 PRINT "P" 0030 GOTO @LOOP
|
| ■プログラム |
サブルーチンを使用した場合0001 ' initialize 0002 UFO_X = 0:UFO_F = 0 0003 PLY_X = 15 0004 ' game loop 0005 @LOOP 0006 VSYNC 1 0007 CLS 0008 ' task 0009 GOSUB @UFO 0010 GOSUB @PLAYER 0011 GOTO @LOOP 0012 ' UFO 0013 @UFO 0014 IF UFO_F!=0 GOTO @UFO_MVL 0015 ' move right 0016 LOCATE UFO_X, 0 0017 PRINT "A" 0018 UFO_X = UFO_X + 1 0019 IF UFO_X < 32 THEN RETURN 0020 UFO_X = 31 0021 UFO_F = 1 0022 RETURN 0023 ' move left 0024 @UFO_MVL 0025 LOCATE UFO_X, 0 0026 PRINT "A" 0027 UFO_X = UFO_X - 1 0028 IF UFO_X >= 0 THEN RETURN 0029 UFO_X = 0 0030 UFO_F = 0 0031 RETURN 0032 ' player 0033 @PLAYER 0034 LOCATE PLY_X,21 0035 PRINT "P" 0036 RETURN
|
プログラムの解説する場合にはこのプログラムをブロック毎に説明した方が分かりやすくなります。今回のサンプルの場合は次のようになります。
| ■プログラム |
プログラムの初期化0001 ' initialize 0002 UFO_X = 0:UFO_F = 0 0003 PLY_X = 15
|
| ■プログラム |
ゲームループ0004 ' game loop 0005 @LOOP 0006 VSYNC 1 0007 CLS 0008 ' task 0009 GOSUB @UFO 0010 GOSUB @PLAYER 0011 GOTO @LOOP
|
| ■プログラム |
UFOタスク0012 ' UFO 0013 @UFO 0014 IF UFO_F!=0 GOTO @UFO_MVL 0015 ' move right 0016 LOCATE UFO_X, 0 0017 PRINT "A" 0018 UFO_X = UFO_X + 1 0019 IF UFO_X < 32 THEN RETURN 0020 UFO_X = 31 0021 UFO_F = 1 0022 RETURN 0023 ' move left 0024 @UFO_MVL 0025 LOCATE UFO_X, 0 0026 PRINT "A" 0027 UFO_X = UFO_X - 1 0028 IF UFO_X >= 0 THEN RETURN 0029 UFO_X = 0 0030 UFO_F = 0 0031 RETURN
|
| ■プログラム |
プレイヤタスク0032 ' player 0033 @PLAYER 0034 LOCATE PLY_X,21 0035 PRINT "P" 0036 RETURN
|