A="ABC" '文字列を変数に代入可能に! A="ABC":?STR$(A) '文字列をPRINTコマンド(別名:?)で表示するコマンド L=LEN("ABC") '文字列の長さを取得するコマンド
MSX-BASICなどで使う、A$など文字列専用の変数ではありません。(RAM4KB、メモリに余裕なし)
その代わり、文字列が入ったメモリ上のアドレスを値として返します。(C言語でいうポインタです)
そのため、下記のようにMID$/RIGHT$/LEFT$的な、あれこれ操作ができます。(STR$の第二パラメータで長さの指定可能)
10 A="ABC" RUN ?STR$(A) ABC ?STR$(A+1) BC ?STR$(A,1) A ?STR$(A+2,1) C
上記、わざわざ10行でAに代入して実行していますが意味があります。 これを行番号を付けないダイレクトモードで動かすと、うまくいきません。 ダイレクトモードでは、入力された行を実行用のメモリにコピーした上で実行しているので、次のコマンド実行時に上書きされてしまい、"ABC"が消えてしまっているわけです。
文字列機能を使って「ぜったい勝てないジャンケン」のジャンケンプログラムを改造してみます。
5 LET[1],"GU","CHOKI","PA" 10 INPUT "JANKEN (1:GU 2:CHOKI 3:PA) ",A 20 B=RND(3)+1 30 ?"YOU:";STR$([A]);" - ME:";STR$([B]) 40 IF A=B ?"AIKO":GOTO 10 50 C=A-B 60 IF C=-1 OR C=2 ?"WON!" 70 IF C=-2 OR C=1 ?"LOST"
5行で配列にグーチョキパーをそれぞれ代入し、30行でSTR$を使って表示しています。
分かりやすくなった「ジャンケンゲーム on IchigoJam」
また、文字列のアドレスであること利用して、このように改造することもできます。
5 T="GU CHOKIPA" 30 ?"YOU:";STR$(T+A*5-5,5);" - ME:";STR$(T+B*5-5,5)
文字列とは、メモリ内に連続して記録された文字の連なりです。コンピューターの中身をイメージしながら、いろいろと数や式をいじってみると掴めてくるかと思います。
心配なのは、文字列を数値化したことで、文字列を指定すべきところに数値を指定してもエラーにならなくなる点がわかりづらくなっていないかという点。 ただ、使いこなせればC言語の鬼門ポインタを理解したも同然、ステップアップが容易になることでしょう。 子どもたちの反応、見てみたいと思います。
ブログの右側にIchigoJamでプログラミングを覚え、JavaScriptでつくったMASAHARU作のスマホゲーム「地中脱出ゲーム」のバナーを貼りました。 他の言語にステップアップしやすい、IchigoJamの活用法、探っていきたいと思います。
IchigoJam ver 1.2 beta 4 は、Facebookグループ「IchigoJam-FAN」にて限定公開中。