マイコン少年のバイブル『こんにちはマイコン』第2巻で解説された「アラシ テニス ゲーム」を知っているかな? シンプルな中にもBASICで作るアクションゲームの基本をすべておさえた名作だ。
このプログラムは、そのプチコン版。『こんにちはマイコン』の作者すがやみつる先生の何気ないひとことに発奮したノトホホ君が移植したものなのだ。
十字ボタン左右でラケット移動、画面中をはね返るボールを打ち返し続けよう。もちろん打ちもらしてボールを落とせばミスになってしまうぞ。
ノトホホ
Twitter
多感な少年時代にカシオ製マイコンFP-1100に出会い、BASICプログラムに夢中になる。その後、現在まで息をするようにプログラムを打ち、息切れをするようにプログラムを打たない日々。座右の銘は「Syntax Error」。
FOR I=0 TO 50:NEXT I
みたく中に何もないループを作って時間つぶしをするといいって書いてあるよ。VSYNC
命令で、フレーム(画面更新周期)の数を指定すればその間動作が止まるんだ。@WAIT
というルーチンがあるじゃろう。こういう時のために用意してあるのじゃな。12行目の変数W
の値を大きくすればそれだけ遅くなるということじゃ。
- ’┌──────────────────┐
- ’│ │
- ’│ アラシ テニス ケ゛-ム │
- ’│ │
- ’│ BY ISHINO ARASHI │
- ’│ │
- ’│ イショク SmileBoomЖ │
- ’│ │
- ’└──────────────────┘
- ’--- カ゛メン ノ セッテイ
- VISIBLE 1,1,0,0,0,0
- W=4
- ’--- トクテンヲ セ゛ロニスル
- @RESET
- T=0
- ’--- ホ゛-ルノカス゛
- B=5
- ’--- ラケットトホ゛-ルノセッテイ
- R1$=”===”:R2$=” ”
- B1$=”@”:B2$=” ”
- ’--- カ゛メンクリア
- CLS
- ’--- ラケットノヒョウシ゛
- @RETRY
- RX=13:RY=20
- LOCATE RX,RY
- PRINT R1$
- ’--- ラインヲヒク
- LOCATE 0,21
- PRINT”────────────────────────────────”;
- ’--- トクテンノヒョウシ゛
- LOCATE 1,22
- PRINT”トクテン:”;T;
- LOCATE 1,23:PRINT”ホ゛-ル:”;B-1;” TENNIS GAME”;
- ’--- ホ゛-ルノヒョウシ゛
- BX=RND(32)
- BY=1
- HO=RND(2)+1
- LOCATE BX,BY
- PRINT B1$;
- ’--- ラケットノイト゛ウ
- P=0
- ’--- メインル-フ゜
- @LOOP
- BT=BUTTON()
- IF BT AND 4 THEN GOSUB @MVLEFT
- IF BT AND 8 THEN GOSUB @MVRIGHT
- P=P+1:IF P<2 THEN @LOOP
- P=0
- LOCATE RX,RY:PRINT R1$;
- ’--- ホ゛-ルノイト゛ウ
- LOCATE BX,BY:PRINT B2$;
- ’---
- @CHKBALL
- IF BX==0 AND BY==0 THEN @REVLH
- IF BX==31 AND BY==0 THEN @REVRH
- IF BX==0 THEN @REVL
- IF BX==31 THEN @REVR
- IF BY==0 THEN @REVH
- IF BY>21 THEN @DEAD
- ’---
- @MVBALL
- IF HO==1 THEN BX=BX+1:BY=BY+1
- IF HO==2 THEN BX=BX-1:BY=BY+1
- IF HO==3 THEN BX=BX-1:BY=BY-1
- IF HO==4 THEN BX=BX+1:BY=BY-1
- IF CHKCHR(BX,BY)==ASC(”=”) THEN @REVPAD
- LOCATE BX,BY:PRINT B1$;
- ’--- ウエイト
- @WAIT
- VSYNC W
- GOTO @LOOP
- ’--- ラケット ヒタ゛リイト゛ウ
- @MVLEFT
- LOCATE RX,RY:PRINT R2$;
- RX=RX-1
- IF RX<0 THEN RX=0
- RETURN
- ’--- ラケット ミキ゛イト゛ウ
- @MVRIGHT
- LOCATE RX,RY:PRINT R2$;
- RX=RX+1
- IF RX>29 THEN RX=29
- RETURN
- ’--- ヒタ゛リウエスミ ハンテン
- @REVLH
- HO=1
- BEEP 8
- GOTO @MVBALL
- ’--- ミキ゛ウエスミ ハンテン
- @REVRH
- HO=2
- BEEP 8
- GOTO @MVBALL
- ’--- ヒタ゛リカヘ゛ ハンテン
- @REVL
- IF HO==2 THEN HO=1
- IF HO==3 THEN HO=4
- BEEP 8
- GOTO @MVBALL
- ’--- ミキ゛カヘ゛ ハンテン
- @REVR
- IF HO==1 THEN HO=2
- IF HO==4 THEN HO=3
- BEEP 8
- GOTO @MVBALL
- ’--- ウエ ハンテン
- @REVH
- IF HO==3 THEN HO=2
- IF HO==4 THEN HO=1
- BEEP 8
- GOTO @MVBALL
- ’--- ラケット ハンテン
- @REVPAD
- IF HO==1 THEN HO=4
- IF HO==2 THEN HO=3
- T=T+10
- LOCATE 6,22
- PRINT T;
- BEEP 8
- GOTO @CHKBALL
- ’--- ウチソコナッタ!
- @DEAD
- BEEP 5
- LOCATE RX,RY:PRINT R2$;
- B=B-1
- IF B<=0 THEN @GOVER
- VSYNC 60
- GOTO @RETRY
- ’--- ケ゛-ムオ-ハ゛-
- @GOVER
- CLS
- LOCATE 12,7
- PRINT”ケ゛-ムオ-ハ゛-”
- LOCATE 5,9
- PRINT”アナタノ トクテンハ ”;T;”テン テ゛ス。”;
- LOCATE 10,14
- PRINT”モウイチト゛ヤリマスカ?”;
- LOCATE 9,16
- PRINT”ハイ=(Y),イイエ=(N)”;
- ’---
- @KEYLOOP
- A$=INKEY$()
- IF A$==”” THEN @KEYLOOP
- IF A$==”Y” THEN @RESET
- IF A$!=”N” THEN @KEYLOOP
- END