“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

156.HSPでゲームを作ろう:培養臼Ex その3

次は、プレイ後にランクインしたときの、ネームエントリー処理を作る。
すでに配列変数にトップ10のスコアは格納済みなので、10位以内に入る、イコール配列の一番末尾のスコアを超えていればランクインとなる。
ゲームオーバー時に、こんな判定処理を追加した。

if practice_flg=0 and score>score_l(length(score_l)-1) : goto *rankin ;ランクインしたらネームエントリーへ

length命令で、スコアを格納している配列の個数を取得して、その値を-1した値がランクの末端ののスコアを表すことになる。
トップ10なので、lengthを使わずに、score_l(9)とべた書きしてもよかったのだが、例えばトップ20にするときに面倒なので計算で指定するようにした。

ランクインしていると判定したら、ネームエントリーを行う処理にジャンプする。
ネームエントリーはオーソドックスに、アルファベット、数字、いくつかの記号を入力でき、全部で3文字にした。

ここで、ちょっと面倒なことがあった。
一文字ずつ入力させるために、左右キーを押すと、文字がどんどん切り替わるようにして、ショットキーを押したら文字を確定。というおなじみの流れで作り始めた。
3文字全部選択するようにしたらよいが、0~2文字で終わりにしたいときはどうしようかと。

よくあるのが、終了を表す「END」の文字を小さく斜めにデザインした文字があり、それを選択すると、3文字選ばなくても終了できる。
これと同じにしたいと思ったが、終了を表す文字を別に用意して、スプライトやグラフィックで表示することを考えたが、面倒w
ふと、せっかくmod_picmesを使ってるんだから、文字フォントを置き換えようと考えた。
私が使っていたMSXでは、文字フォントの形を直接書き換えることができる、PCG(Programmable Character Generator)の機能があった。
PCGと同じ要領で、mod_picmesで使うフォントのPNGファイルを、直接グラフィックソフトで書き換えちゃえ!と。
早速’*’の文字部分を、EDと斜めに表示するフォントになるように直接書き換えてみた。

思惑通り、ばっちり表示出来た♪
内部的には、文字’*’なので、if文で選択中の文字がの時に、ショットキーを押したら終了。という処理が書ける。

こうして登録が終わったら、ちゃんとスコアランキング全体が見れるようにした。
ただ表示するだけでは、自分が何位にランクインしたのかわからないので、他の行と色を変え、かつ点滅表示するようにした。

ランキング表示を作るために、ちょっとだけ共通関数に手を入れたので、次回はその話を。