LoginSignup
13
2

More than 3 years have passed since last update.

MSX BASICで湯婆婆を実装してみる

Last updated at Posted at 2020-11-05

はじめに

@Nemesisさんの書かれた記事『Javaで湯婆婆を実装してみる』に感銘を受け、普段使ってる MSX BASIC にも湯婆婆を実装してみようと思いました。

実行画面

yubaba1.png
こんな感じです。

コード

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\$ には空の文字列が代入されるだけで湯婆婆がクラッシュしてくれません。そのため一捻りしております。おかげで

yubaba2.png

湯婆婆のクラッシュも再現することができました。

おわりに

おわりです。

そういえば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

yubaba3.png

13
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2