見出し画像

pyxelでシミュレーションゲームを作る(完)

さて、長々と続いてきたこのシミュレーションゲーム作りも、ここでいったんの区切りとします。続きは気が向いたら。とりあえずは完成です。前回のnoteからこまごまとした機能を追加したので、最後はそれを書こうと思います。

前回のnoteは以下になります。よろしければご参照ください。

まずは、前回追加した「運」のステータスについてです。神社・寺・教会を建築すると上がります。建築物によってステータスは分けようと思うので、要素数3の配列として持たせています。

self.luck = [0, 0, 0]

▲こんな形で運のステータスを持たせています。各要素には配列としてアクセスします。例えば「神社があるので運の1つ目を増やしたい」時は「self.luck[0] += 1」のようにしています。

神社があるとself.luck[0]が、寺があるとself.luck[1]が、教会があるとself.luck[2]が上がります。これらのluckはそれぞれ、self.luck[0]は合戦時の防御力に、self.luck[1]は合戦時の攻撃力に、self.luck[2]は内政に使用できる労力にボーナスが加わります。
これで運のステータスに使い道ができました。

次は、自然現象イベントの追加です。
信長の野望とかをやっていると「台風」とか「豊作」「凶作」のようなイベントが発生します。今回は「大雨」イベントを作成しました。「堤防」の建築数に応じて内容が変化し、備えが不十分だと洪水の被害が発生してしまいます。

ちょっとコードがごちゃごちゃになってしまったので、ここからはスクリーンショットを載せていきます。

画像1

▲ターン経過時に確率で大雨のイベントが発生するようになりました。これはターンが経過するほど発生しやすくなり、一度イベントが起こると、発生確率はまた最低になります。
また、赤枠で囲っている茶色いマスは堤防です。川に隣接した平地で建築することができます。

画像2

▲場合によっては川が氾濫する場合があります。堤防マスの数が多ければ多いほど、確率は下がります。氾濫してしまった場合は、建築物に被害が出ることがあります。この画像だと左側の田んぼが密集しているところが結構やられてますね。建築物への被害に関しても堤防が多ければ確率を下げることができます。

画像3

▲川の両岸にすべて堤防を作りました。ここまでできると大雨があっても川は氾濫しません。

次に合戦画面の修正です。今までは一度合戦に突入すると相手を全滅させるか自分が全滅するかをしないと終わらなかったのですが、「降参」コマンドを追加することで、勝てなさそうなときに被害を抑えるすべができました。

タイトルなし

▲勝てそうにないときは「こうさん」を選択できます。米と資金は取られてしまいますが、兵士を温存できます。

また、ゲームを進めるにあたってわかりにくい部分があるのが否めないので、ヒント画面を新設しました。

画像5

▲タイトル画面の右上から移動できます。

画像6

画像7

▲ヒント画面はこんな感じ。タイトルを選ぶと詳細画面が開きます。

さて、ここまででこのゲームについてはいったん完成とします。最後にここまでの修正部分を取り込んだものをexe化してitch.coにアップロードします。

コードやpyxresファイル、モジュールファイルはGitHubの方に置いてあります。

ここまで読んでいただきありがとうございました。

ここまで読んでいただきありがとうございます!