前回のおさらい
前回は、ランダムアクセスファイルの操作を行いました。
レトロPCのためのBASIC講座11
乱数値の取得と文字列操作
今回は、決まった文字だけを受け付け入力された文字のN番目もの自が何であったかを入力して記憶力を試すゲームを作ってみます。
プログラムは以下の通りです。
100 CLS : S$="" : RANDOMIZE
110 IN$="0123456789ABCDEF"
120 LOCATE 30,11:PRINT "-0123456789-"
130 G$ = INKEY$
140 IF G$="" THEN 130
150 LOCATE 30,10:PRINT "[";G$;"]"
160 IF NOT INSTR(IN$,G$)>0 THEN 130
170 S$=S$+G$
180 LOCATE 30,11:PRINT "-0123456789-"
190 LOCATE 30,12:PRINT "=";S$;"="
200 IF LEN(S$)=10 THEN 220
210 GOTO 130
220 CLS
230 R=INT(RND*10+1)
240 PRINT R;"ノ ケタノ スウジ ハ?";
250 INPUT "",A$
260 IF MID$(S$,R,1)=A$ THEN PRINT "セイカイ"
290 END
解説
100行目
CLSで画面を消して、入力される文字変数S$を殻に初期化、RANDOMIZEで乱数の種を入力します。
110行目
入力できる文字を持っている変数に0~9とA~F要するに16進数で使う文字を設定しています。
120行目
何桁入力したかを示す文字列を(X,Y)=(30,11)の位置に表示します。
130~150行目
入力した文字を1文字筒表示していく
160行目
INSTR関数を使って16進数で使う文字かっどうかを判定している。
16進数で使われる文字以外はもう一度入力する。
170行目
入力された文字ほS$に追加していく。
180~210行目
長さが10文字になるまで入力を繰り返す。
LEN関数は文字の長さを示している。
220~230行目
画面を消して、乱数で何文字目を指定するかを発生させる
INT(RND*10+1)は1から10までの乱数を発生させる式
240行目
メッセージを出してN番目の文字が何かの入力を求める
250行目
乱数で発生させた位置の文字をMID$関数で取得し正解を判定する。
MID$(対象文字列,N番目,M文字)で
対象文字列のN番目からM文字とって返す関数
今回の動画