1L TENNIS
PBの一行表示でラリーを競うテニスゲームです。既に同じアイデアのPBゲームがあったら(ありそう)、ゴメンナサイ。
<はじめに>
プログラムを入力してください。プログラム・サイズは459ステップです。
PB-100シリーズで動作します。PB-SIMシミュレータ(normal)、PokecomGO(slow)でプレイできます。
Shift+[0]でタイトルを表示し、ゲームを開始します。
<遊び方>
ボールをレシーブしてラリーを続け、ミスをすると相手に1ポイントが入ります。3ポイントを取るとゲームセットです。
画面の左側の「ip」がラケットを持ったCPU、右側の「qi」がプレイヤー(あなた)を表し、左右に行き交う数字が、ボール及びその高さを示します。
ボールがPlayerラケットの位置に来た瞬間、ボール高さに応じて[1]~[9]のキーを押し、レシーブして下さい。その際、「i」の位置にレシーブ高さ(ラケットを振った高さ)を表示します。
ボール高さとレシーブ高さが一致するとスマッシュヒットとなり、球速が上がります。
ボール高さとレシーブ高さの差が1ならかろうじて打ち返しますが、打ち上げるか打ち下ろすかになり、球速は遅くなります。高さの差が2以上なら空振りとなります。
球速が高いと、CPUがミスをする可能性が高くなります。
ポイントを取ると、サーブ権が移ります。最初はCPUです。
3ポイントを先取した方が勝利です。
<注意>
スマッシュヒットがあまりに続くと球速は限りなく上昇し、そのうちエラーとなるかもしれません(未確認)が、実プレイ上はそこまで行くことはなく、支障ないと思われます。
高速化のため入力キーのチェックはしていません。[1]~[9]以外のキーを押すとエラーになります。
<変数アサイン>
A Playerスコア
B CPUスコア
C サーブ権 1:CPU ー1:Player
J レシーブ高さ
K/K$ 一時使用
U ボール高さ(整数化) 0~9
V ボール水平速度 プラス:右方向 マイナス:左方向
W ボール垂直速度 プラス:上方向 マイナス:下方向
X ボール水平位置 1≦X<11
Y ボール高さ 0≦Y<10
Z 重力加速度
$ ボールキャラクタ、背景
PB-100実機形式
PB-SIM形式
[P0]
5 VAC:$="000001234567899999ip qi":C=1:Z=-.2
7 PRINT "1L TENNIS"
10 X=6-4.5*C:Y=3:V=(1+.2*RAN#)*SGN C:W=2
15 PRINT CSR0;MID(19);CSR X;MID(Y+5,1);:X=X+V
20 IF X>=1 THEN 30
25 J=INT(Y+1.5*V*RAN#:K=2:PRINT CSR0;MID(J+5,1);:GOTO 45
30 IF X<=11 THEN 60
35 K$=KEY:IF K$="" THEN 75
40 PRINT CSR11;K$;:K$="0"+K$:J=VAL(K$):K=22
45 U=INT Y:IF ABS(U-J)>1 THEN 75
50 X=K-X:V=-V:IF J=U;V=1.3*V:GOTO 60
55 W=W+U-J:V=SGN V
60 W=W+Z:Y=Y+W:IF Y>=10;Y=9.9:W=0:GOTO 15
65 IF Y<0;Y=1-Y:W=-W
70 GOTO 15
75 K=SGN V/2+.5:A(K)=A(K)+1:PRINT:PRINT "MISS!";B;"-";A
80 IF A(K)<3;C=SGN V:GOTO 10
85 PRINT:IF K=0;PRINT "You Win!":END
90 PRINT "CPU Win.":END