“RUN” それは魔法の言葉

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

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

前回の続き。
JstickCfg命令を使って、2つのボタンの設定値を入れ替えるようにした。
最初はうまく行ったと思ったのだが、他のボタンの組合せによっては、意図通りに設定できない。
Excelに値の遷移を書いて、logmes命令仕込みまくって、assert命令で停止したあとは、knowbugでステップ実行を繰り返しましたよ。ええ。何日かかったかな…頭が全く回ってなかった。

結果として、ボタン1~3に割り当てたいボタンを押すたびに、JstickCfg命令で入れ替えるのはダメ。入れ替えた時点でボタンの役割が変わってしまう。
そこで、ボタン1~17までの初期値が入った配列を作って、押したボタンに応じて、配列の中身を入れ替えていき、最後にまとめて配列の値を使ってボタンの設定を行うことにした。

これでも、うまくいくパターンと、いかないパターンが生まれてしまい、なんでだろうと悩んだ。
原因は、押したボタンと値の入れ替え方が悪いことだった。

入れ替えるのはボタン1~3が対象。押したボタンIDには、ボタン1~3を押したときの値をセット。
そして、押したボタンIDの値は、ボタン1~3の初期値をセットしていた。
ここでピンとくる方がいると思うのだが、ボタン2にボタン1を割り当てることができたりするので、押したボタンの順番によって、意図しない上書きが発生していたのだった。

結局、入れ替え対象となるボタンのデフォルト値が設定されている配列を見つけて、その配列と入れ替えることで全部バラバラのボタンIDにできるようになった。
ここまでを別ファイルで動くプログラムで作ったので、本体のオプションに組み込んでいく。
メニューに入った時のショットボタンが、そのままショットボタンのボタンIDになってしまうので、別のボタンにできない。
なので、RETURNキーを押してから開始するようにワンクッション入れた。

あとはやっぱりスパゲッティになっている元プログラムを解析して、動くようになったプログラムを組み込んでいった。
似た様な変数や、無駄な配列を削除したり、別プログラム側の処理を、本体側の処理に合わせて書き換えたりと、これまた時間がかかってしまったが、何とかキーコンフィグも出来た♪

たった3つのボタンのアサインをし直すだけの機能なのに、どれだけ時間を掛けたのか…
でも、当初の追加予定の機能を実装できて満足♪