CDW ゲームスタート画面を作った


2022年 5月 27日
 
 
 ゲームスタート時に、色々な設定をできるスタート画面を作った。


 
 
 設定できるのは「マップサイズ」「プレイヤー人数」「操作人数」「国の数」「キャラクターユニットの登場数」「ユーザーカラーの使用」「マップ表示速度」「戦闘表示速度」「戦闘表示種類」となっている。
 
 

 SUI(スクロール・ユーザー・インターフェイス、適当)の考えにより、画面は縦にスクロールする。


 
 
 マップサイズは画面の x(横)の大きさ事で、1~3画面まで設定できる。

 プレイヤー数は勢力数の事で、最大 20勢力で争う事ができる。

 操作人数は操作する勢力数の事で、普通は 1人、これは最大勢力数まで、つまり全員操作まで設定できる。

 LANDは国の数、各勢力の国数が均等になるように、勢力数の倍数になるようにしている。

 キャラクターユニットは、0なら出現無し、1~3はそのレベルのキャラクターユニットまで出現する。

 レベル 1なら、Lv1の攻撃指揮官、防御指揮官、軍師、民生官、君主が出る。

 ゲームレベルはゲームの難易度を設定する、1が簡単~5が難しい。

 ユーザーカラーは USE(使う)の時にオリジナルカラーをプレイヤー 1に設定できる。

 オリジナルカラーは元の色はシルバーで、その色を変えて使う。

 ランダムの場合は 20色をバラバラに割り当てる。

 マップの表示ウエイトを設定できます。

 戦闘の表示ウエイトを設定できます。

 戦闘表示の種類、画面切り替え ← → 簡易表示の設定をします。
 
 
 以上を任意に設定して右下の STARTを押すとゲームが始まります。


 
 
 
 ソース

 画面はスクロールするようにしてます。

 値は gs_lyです、各座標の y座標に gs_lyを足す事によってスクロールさせてます。

 一応画面外のものは表示をスキップするようにしてます。

 画面一番上と一番下の文字はスクロールしません。

 これが意外と難しくて、ノーマルの HSPだと「何画面のどこからどこまでをコピー表示」つまり gcopy 1,0,0,540,100 のようにできますけど、HSP Dishだと gcopyは使えません。

 しかもバッファ画面から表示画面へコピーもできません。

 バッファ画面から表示画面へコピーができると、別画面に完成表示を作ったら、後は表示画面へ都度完成画面を切り取って表示させるだけで間単にスクロールができるんですけど、Dishではできません。

 そのため都度、その座標に合わせて表示画面に全部表示処理する必要があります。

 そこで問題になったのが、上の文字と下の文字の表示です、背景をどうするかですね。

 めんどくさいので詳細ははぶきますけど、背景画面を上と真ん中と下の 3画面に分割して表示させてます。

 Aパーツ

 Bパーツ

 Cパーツ

 
 
 まず真ん中の背景を表示して、その上にスクロールする設定の画面を書きます。

 その上に画面上と下の背景を表示して、文字を書きます。

 するとスクールの上の端と下の端の表示を切り取る事ができます。


 
 
 
 キー入力の座標もすべて gs_lyを足す事によって算出してます。
 
 
 後、難しかったのは画面数やプレイヤー人数に対する国数の倍数調整ですね。

 画面数に対する最大数、最小数も含めて、プレイヤー人数の倍数になるように調整する式がややこしかったです。

 こんな感じのやつですけど、これは人数が一人減る場合と一人増える場合ですね。

 plbがプレイヤー数、ldbが国数、ldbaが国の最小、ldbbが国の最大数です。

 人数は 2人~20人ですね。

 国数を人数で割った余りを引いたり足したりして、人数の倍数になるように調整してます。

 自分でも何やってるのか分かりません、適当に試行錯誤したら動いたという感じのやつです。

 別に人数に対して国数が同じで無くても良いんですけどね、なんとなくフェアにしたいじゃないですか。
 
 
 画面の大きさに対する国数の最小数と最大数は今の所

 1画面、最小2 、最大40
 2画面、最小20、最大80
 3画面、最小40、最大120

 となってます、これ以外だとマップを生成できなくなります。

コメントを残す

メールアドレスが公開されることはありません。