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


#はじめに
@Nemesis さんの [Javaで湯婆婆を実装してみる](https://qiita.com/Nemesis/items/c7192a7c510788d2cba2) がバズってるとのことで、IchigoJamで実装してみました。

#コード
```basic:YUBABA.BAS
' CTRL+SHIFTでカナモードきりかえ
10 CLS:CLV:S=0:E=0:C=0
20 ?"ｹｲﾔｸｼｮﾀﾞﾖ｡ｿｺﾆﾅﾏｴｦｶｷﾅ｡":?">"
' INPUT LOOP
30 @IN
40 N=INKEY()
50 IF N=10 GOTO@OUTOLD
60 IF N=0||N<177 GOTO@IN
70 LC C+1,1:?CHR$(N);
80 [C]=N:C=C+1
90 GOTO@IN
' OUTPUT
200 @OUTOLD
210 S=0:E=C-1
220 LC 0,3:?"ﾌﾝ｡ ";:GSB@NAME:?" ﾄｲｳﾉｶｲ｡ｾﾞｲﾀｸﾅﾅﾏｴﾀﾞﾈｪ｡"
230 Y=POS(2)
240 @OUTNEW
250 S=RND(C):E=S+1
260 LC 0,Y:?"ｲﾏｶﾗｵﾏｴﾉﾅﾏｴﾊ ";:GSB@NAME:?" ﾀﾞ｡ｲｲｶｲ､ ";:GSB@NAME:?" ﾀﾞﾖ｡ﾜｶｯﾀﾗﾍﾝｼﾞｦｽﾙﾝﾀﾞ､ ";:GSB@NAME:?"!!"
' 270 WAIT1:GOTO@OUTNEW
280 END
' NAME SUBROUTINE
300 @NAME
310 FOR I=STOE:?CHR$([I]);:NEXT
320 RTN
```
MSX FANの１画面プログラムでプログラミングを学び始めた人なので、ついつい１画面に収めたくなる衝動を抑えて、なるべく見やすくしてみました。  

#実際に動かしてみてください
こちらの [IchigoJam Web](https://fukuno.jig.jp/app/IchigoJam/#'%20CTRL%2BSHIFT%E3%81%A7%E3%82%AB%E3%83%8A%E3%83%A2%E3%83%BC%E3%83%89%E3%81%8D%E3%82%8A%E3%81%8B%E3%81%88%0A10%20CLS%3ACLV%3AS%3D0%3AE%3D0%3AC%3D0%0A20%20%3F%22%EF%BD%B9%EF%BD%B2%EF%BE%94%EF%BD%B8%EF%BD%BC%EF%BD%AE%EF%BE%80%EF%BE%9E%EF%BE%96%EF%BD%A1%EF%BD%BF%EF%BD%BA%EF%BE%86%EF%BE%85%EF%BE%8F%EF%BD%B4%EF%BD%A6%EF%BD%B6%EF%BD%B7%EF%BE%85%EF%BD%A1%22%3A%3F%22%3E%22%0A'%20INPUT%20LOOP%0A30%20%40IN%0A40%20N%3DINKEY()%0A50%20IF%20N%3D10%20GOTO%40OUTOLD%0A60%20IF%20N%3D0%7C%7CN%3C177%20GOTO%40IN%0A70%20LC%20C%2B1%2C1%3A%3FCHR%24(N)%3B%0A80%20%5BC%5D%3DN%3AC%3DC%2B1%0A90%20GOTO%40IN%0A'%20OUTPUT%0A200%20%40OUTOLD%0A210%20S%3D0%3AE%3DC-1%0A220%20LC%200%2C3%3A%3F%22%EF%BE%8C%EF%BE%9D%EF%BD%A1%20%22%3B%3AGSB%40NAME%3A%3F%22%20%EF%BE%84%EF%BD%B2%EF%BD%B3%EF%BE%89%EF%BD%B6%EF%BD%B2%EF%BD%A1%EF%BD%BE%EF%BE%9E%EF%BD%B2%EF%BE%80%EF%BD%B8%EF%BE%85%EF%BE%85%EF%BE%8F%EF%BD%B4%EF%BE%80%EF%BE%9E%EF%BE%88%EF%BD%AA%EF%BD%A1%22%0A230%20Y%3DPOS(2)%0A240%20%40OUTNEW%0A250%20S%3DRND(C)%3AE%3DS%2B1%0A260%20LC%200%2CY%3A%3F%22%EF%BD%B2%EF%BE%8F%EF%BD%B6%EF%BE%97%EF%BD%B5%EF%BE%8F%EF%BD%B4%EF%BE%89%EF%BE%85%EF%BE%8F%EF%BD%B4%EF%BE%8A%20%22%3B%3AGSB%40NAME%3A%3F%22%20%EF%BE%80%EF%BE%9E%EF%BD%A1%EF%BD%B2%EF%BD%B2%EF%BD%B6%EF%BD%B2%EF%BD%A4%20%22%3B%3AGSB%40NAME%3A%3F%22%20%EF%BE%80%EF%BE%9E%EF%BE%96%EF%BD%A1%EF%BE%9C%EF%BD%B6%EF%BD%AF%EF%BE%80%EF%BE%97%EF%BE%8D%EF%BE%9D%EF%BD%BC%EF%BE%9E%EF%BD%A6%EF%BD%BD%EF%BE%99%EF%BE%9D%EF%BE%80%EF%BE%9E%EF%BD%A4%20%22%3B%3AGSB%40NAME%3A%3F%22!!%22%0A'%20270%20WAIT1%3AGOTO%40OUTNEW%0A280%20END%0A'%20NAME%20SUBROUTINE%0A300%20%40NAME%0A310%20FOR%20I%3DSTOE%3A%3FCHR%24(%5BI%5D)%3B%3ANEXT%0A320%20RTN%0A%0A) で試せます。

- 空行で"RUN"と入力してEnterキー、または、F5キーで実行
- ">"が出たら CTRLキー+SHIFTキーでカナモード切り替え
- 途中で止めたくなったら、ESCキーで中断

#実行結果
![スクリーンショット 2020-11-10 4.29.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60052/226cae4a-ffd8-a7f6-7ece-80cfda8dc435.png)
OKって^^;

#クラッシュ湯婆婆の再現
![スクリーンショット 2020-11-10 5.08.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60052/3935f25e-3f6a-aa42-6771-286c67c81ab0.png)
フン。と言いながらクラッシュしてくれました！

#感想
文字列入力の実装ってこんなので良かったのでしたっけ・・・

動作テスト用に270行目を作っていたのですが、有効にすると**なんだか名前を取り戻せそう**な気持ちになります。(名前表記はサブルーチンにしているので、もう少しコチョコチョすれば、名前を取り戻していくさまの実装もできそうです。)


イマドキのプログラム言語は文字列をとても便利に扱えますが、このような昔ながらのプログラム言語で「メモリ」の意識をするのも、勉強になりますね。

[Vue.js版](https://qiita.com/shibomb/items/688ebef26627aea014f7)も書いてます。