#はじめに
@Nemesis さんの Javaで湯婆婆を実装してみる がバズってるとのことで、IchigoJamで実装してみました。
#コード
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の1画面プログラムでプログラミングを学び始めた人なので、ついつい1画面に収めたくなる衝動を抑えて、なるべく見やすくしてみました。
#実際に動かしてみてください
こちらの IchigoJam Web で試せます。
- 空行で"RUN"と入力してEnterキー、または、F5キーで実行
- ">"が出たら CTRLキー+SHIFTキーでカナモード切り替え
- 途中で止めたくなったら、ESCキーで中断
#クラッシュ湯婆婆の再現
フン。と言いながらクラッシュしてくれました!
#感想
文字列入力の実装ってこんなので良かったのでしたっけ・・・
動作テスト用に270行目を作っていたのですが、有効にするとなんだか名前を取り戻せそうな気持ちになります。(名前表記はサブルーチンにしているので、もう少しコチョコチョすれば、名前を取り戻していくさまの実装もできそうです。)
イマドキのプログラム言語は文字列をとても便利に扱えますが、このような昔ながらのプログラム言語で「メモリ」の意識をするのも、勉強になりますね。
Vue.js版も書いてます。