はじめに
@Nemesisさんの書かれた記事『Javaで湯婆婆を実装してみる』に感銘を受け、普段使ってる MSX BASIC にも湯婆婆を実装してみようと思いました。
実行画面
コード
YUBABA.BAS
10 PRINTCHR$(153)CHR$(146)CHR$(244)CHR$(152)CHR$(156)CHR$(142)CHR$(224)"゙"CHR$(246)"。"CHR$(159)CHR$(154)CHR$(230)CHR$(229)CHR$(239)CHR$(148)CHR$(134)CHR$(150)CHR$(151)CHR$(229)"。"
20 OPEN"CON"FORINPUTAS#1:INPUT#1,N$:CLOSE#1
30 PRINT"フーン。「"N$"」"CHR$(228)CHR$(146)CHR$(147)CHR$(233)CHR$(150)CHR$(146)"。"CHR$(158)"゙"CHR$(146)CHR$(224)CHR$(152)CHR$(229)CHR$(229)CHR$(224)"゙"CHR$(232)"。"
40 A=RND(-TIME):NN$=MID$(N$,LEN(N$)-INT(LEN(N$)*RND(1)),1)
50 PRINTCHR$(146)CHR$(239)CHR$(150)CHR$(247)CHR$(149)CHR$(239)CHR$(148)CHR$(233)CHR$(229)CHR$(234)"「"NN$"」"CHR$(224)"゙。"CHR$(146)CHR$(146)CHR$(150)CHR$(146)"、「"NN$"」"CHR$(224)"゙"CHR$(246)"。"
60 PRINTCHR$(252)CHR$(150)CHR$(143)CHR$(224)CHR$(247)CHR$(237)CHR$(253)CHR$(156)"゙"CHR$(134)CHR$(157)CHR$(249)CHR$(253)CHR$(224)"゙、「"NN$"」!!"
70 END
MSX のひらがなは BASIC プログラム中の文字列に直接書くことができるのですが、文字コードが特殊でそのまま Qiita の記事にリストを掲載するのは困難なので、敢えて少々煩い記述を行っております。
工夫したところ
名前入力のところで INPUT 命令を
INPUT "けいやくしょた゛よ。そこになまえをかきな。";N$
のように使ってしまうと、実行時に
けいやくしょた゛よ。そこになまえをかきな。? ■
のようにマヌケなクエスチョンマークが表示されてしまいます。今回はステートメントファイルとして "CON" をオープンしそこから INPUT することでそれを避けています。また、MSX BASIC で文字列 N$ からランダムに 1文字を選ぶとすると
NN$=MID$(N$,INT(LEN(N$)*RND(1))+1,1)
とか書いてしまいそうな気がしますが、これでは N$ に空の名前を入力した場合に NN$ には空の文字列が代入されるだけで湯婆婆がクラッシュしてくれません。そのため一捻りしております。おかげで
湯婆婆のクラッシュも再現することができました。
おわりに
おわりです。
そういえばMSX2+以降では漢字BASICというものが使えたことを思い出したので追記
K-YUBABA.BAS
10 PRINT"契約書だよ。そこに名前を書きな。"
20 OPEN"CON"FORINPUTAS#1:INPUT#1,N$:CLOSE#1
30 PRINT"フーン。"N$"というのかい。贅沢な名だね。"
40 A=RND(-TIME):CALLKLEN(NL,N$):CALLKMID(NN$,N$,NL-INT(NL*RND(1)),1)
50 PRINT"今からお前の名は"NN$"だ。いいかい、"NN$"だよ。分かったら返事をするんだ、"NN$"!!"
60 END