ここでちょっとした豆知識。低年齢層をターゲットにした日本製ホビーコンピュータ『ぴゅう太』(1982年発売)は、命令が全てカタカナという独自の「G-BASIC」、通称「日本語BASIC」を搭載していたことで(一部の世代には)有名です。
このG-BASICでは、先ほどの「FOR I=0 TO 5 STEP 1 〜 NEXT」も「マワレ I=0 カラ 5 カンカク 1 〜 トジル」と書いたものですが、これが英語になじみのない低年齢層に分かりやすかったのか、それともかえってややこしかったのかは永遠の謎です……。ただ、その後継機『ぴゅう太-mkII』で英語BASICに先祖返りしていたことを考えると、その謎の答えが何となく分かる気がします。
まぁ、それはそれとして、「相手の手を出す」プログラムに進みましょう。
「ランスウ(3)」……もとい、「RND(3)」で0〜2までのランダムな整数が得られるのは、現代の目でも分かりやすいはず。どちらかと言えば、現代に合わせた仕様とすら言えます。
ENM=RND(3) PRINT"アナタ=";MSG$(ME) PRINT"COM=";MSG$(ENM)
そうなんじゃよ……。昔のBASICでは、乱数の出目が少数点以下まで含むのでイチイチ整数化したり、実行するたびに結果が一定になるので時刻の値に関連付けて散らしたり、面倒の多いものじゃった。良い世の中になったと、ワシは言い切る!
昔の苦労話は、あんまりボクらにはピンときませんが……。
この際、先に進めましょう。
お、おぉ……。
えーと。最後は、勝敗の判定か?
RSLT=(ME-ENM+3)%3 PRINT MSG$(RSLT+3) IF RSLT THEN END ELSE GOTO @GAME
ふむ。ココは定番のじゃんけんの判定方法じゃな。こういうところは今も昔も変わらんわい。
グー・チョキ・パーを0〜2の数字に割り当てたとき、『自分の手 − 相手の手 + 3』の答えを『3』で割って、余った数が『0』ならば“あいこ(引き分け)”、『1』ならば相手の勝ち、2ならば自分の勝ち、という計算ですね。
うむ。後は対応した結果を表示して、“あいこ”でない限りプログラムを終了、さもなくばラベル『@GAME』に戻すというわけじゃな。『END』や『ELSE』は文字通りで諸君もすぐ分かるところじゃろう。
これで『じゃんけんプログラム』の完成ってワケか。試しに遊んでみるゼ。それ『RUN』!
入力は[数字]キーと[ENTER]キーなんだね。あんまり分かりやすくはないかなあ。
ウーム。『INPUT』命令とはこういうものじゃが……。とはいえ、GUIに慣れたキミたち世代には感覚的でないのかもしれんのう。
っつーか、文章的に分かりづれェんだヨ! 『パー:2?』ってナンだ、そのメッセージは! 『2』かどうか自信がねェーのかヨ!
じゃって、『INPUT』命令には、最後にかならず『?』が付いて“入力待ち”を示すものなのじゃよ……。
そこがかえって分かりづらいところではありますね。どうせ数字1ケタなのだから、キータッチだけで入力と見なしていいのでは?
ムムム。ならば『INPUT』命令から離れて、キータッチ待ちのループを作るとするかのう。
CLS:CLEAR DIM MSG$(6) DATA グー,チョキ,パー,アイコ,マケ,カチ FOR I=0 TO 5 READ MSG$(I) NEXT @GAME PRINT"グ-:0,チョキ:1,パ-:2" @KEY K$=INKEY$() IF K$=="0" THEN ME=0:GOTO @RESULT IF K$=="1" THEN ME=1:GOTO @RESULT IF K$=="2" THEN ME=2:GOTO @RESULT GOTO @KEY @RESULT ENM=RND(3) PRINT"アナタ=";MSG$(ME) PRINT"COM=";MSG$(ENM) RSLT=(ME-ENM+3)%3 PRINT MSG$(RSLT+3) IF RSLT THEN END ELSE GOTO @GAME
ソースコード 入力部分を見直した「じゃんけんプログラム」 |
『INKEY$()』は、キータッチ判定の関数じゃな。ラベル『@KEY』の中でキータッチがあるまでループし続けとるのが分かるじゃろう。
操作感は確かに良くなったゼ!
ただ、ソースコード内に似たような『IF』文の記述が3連続するのは、チョット安易じゃねェーかと思うけどナ!
ハイ。学校の課題や仕事であれば、減点は免れませんね。
キ、キミたち。
そういうところの厳しさまでも現代流じゃのう……(ぐすん)。
Copyright © ITmedia, Inc. All Rights Reserved.