後回しに後回したw プレイヤーの登録/変更を作っていく。
イメージは、ファミコン世代のRPG。
文字盤があって、カーソルを動かし、ボタンを押すとその文字が入力できる。
ロジックを作る前に、まずは画面をどんなふうにするか、モックアップを表示してみることにした。

こんな感じでベタ書き。
pos 150,200 picmes "→あ い う え お は ひ ふ へ ほ" picmes " か き く け こ ま み む め も" picmes " さ し す せ そ や ゆ よ" picmes " た ち つ て と ら り る れ ろ" picmes " な に ぬ ね の わ を ん" picmes " ぁ ぃ ぅ ぇ ぉ ゃ ゅ ょ" picmes " ゛ ゜ ー" picmes " A B C D E 1 2 3 4 5" picmes " F G H I J 6 7 8 9 0" picmes " K L M N O + - * / 終" picmes " P Q R S T" picmes " U V W X Y" picmes " Z @ ・ . !"
次にカーソルキーで、入力したい文字に移動する。
カーソル自体も文字にするのが楽だなと思い、「→」を表示することにした。
カーソルキーの入力判定は、今更迷うこともなくStick命令でサクッとできるのだけど、文字列の選択は意外と面倒なことがある。
そう。「やゆよ」などの重複音がある、や行は、3文字になることと、濁点、半濁点および、小文字の入力があること。
あとは視認性の問題だけど、各文字ごとにカーソルを表示する1文字をあけることと、1行に10文字表示するとき、5文字目と6文字目の間に少し隙間をあけることなど、細かいことがある。
結局、ゴリゴリ判定を追加して、座標値を補整するストロングスタイルwで解決した。
ecsrx=0:ecsry=0 ;カーソル座標値 pos 150,200 picmes " あ い う え お は ひ ふ へ ほ" picmes " か き く け こ ま み む め も" picmes " さ し す せ そ や ゆ よ" picmes " た ち つ て と ら り る れ ろ" picmes " な に ぬ ね の わ を ん" picmes " ぁ ぃ ぅ ぇ ぉ ゃ ゅ ょ" picmes " ゛ ゜ ー" picmes " A B C D E 1 2 3 4 5" picmes " F G H I J 6 7 8 9 0" picmes " K L M N O + - * / 終" picmes " P Q R S T" picmes " U V W X Y" picmes " Z @ ・ . !" pos 150+ecsrx*64+(ecsrx>=5)*32,200+ecsry*32:picmes "→" stick key if key&1 { ecsrx-- ;「やゆよ」「わをん」「ゃゅょ」のとき if (ecsry=2 or ecsry=4 or ecsry=5) and (ecsrx=6 or ecsrx=8) : ecsrx-- } if key&4 { ecsrx++ ;「やゆよ」「わをん」「ゃゅょ」のとき if (ecsry=2 or ecsry=4 or ecsry=5) and (ecsrx=6 or ecsrx=8) : ecsrx++ } if key&2 : ecsry-- if key&8 : ecsry++ ecsrx=limit(ecsrx,0,9) ecsry=limit(ecsry,0,12) ; 別の行から「やゆよ」「わをん」「ゃゅょ」行に移動してきたときのカーソル調整 if (ecsry=2 or ecsry=4 or ecsry=5) and (ecsrx=6 or ecsrx=8) : ecsrx-- if escry=6 : ecsrx=limit(ecsrx,0,2) if ecsry>=10 : ecsrx=limit(ecsrx,0,4)
ひとまず動くようになったのがこれ。

これで入口に立ったばかり。まだまだ処理を作らないと。