メインコンテンツへスキップ
見出し画像

【pyxel 1.5】pyxelで3D迷路を作ってみる(8)

    前回は迷路のギミックを作成しました。今回はさらに仕掛けを増やしつつ、迷路自体のマップバリエーションを増やしてみようと思います。
    ここまで作れれば通しで一応プレイできるようにするのでexe化してitch.coにアップロードしてみます。

    前回までの進行具合は以下のnoteをご参照ください。

    まずは今回追加したギミックについて。

    今までの状態だと敵に追いつめられるとなすすべなくゲームオーバーになっていました。さすがにこれだと運ゲー的要素が強すぎるので、これを回避できる手法を作ります。

    画像
    ▲フェンスの設置ができるコマンドを追加しました。

    「I」キーでフェンスを設置できるようにしました。これを使えば敵に追いつめられた時の緊急回避や、敵を袋小路に閉じ込めるといった使い道ができます。

    画像
    ▲フェンスを設置。

    ただフェンスを設置しただけだと自分が進めなくなっちゃうので、これを取り除く仕組みも作ります。

    画像
    ▲フェンスに進むと除去のメッセージが出てきます。
    画像
    ▲「Y」キーでフェンスを取り除きました。

    これで大分ゲームらしくなってきました。

    続いて迷路のバリエーションを増やす作業に進みます。
    今回は3パターンの迷路を作り、プレイごとにこの3種類からランダムに選ばれるようにします。

    画像
    ▲1つめ。スタート座標は(0, 0)。
    画像
    ▲2つめ。スタート座標は(0, 32)。
    画像
    ▲3つめ。スタート座標は(0, 64)。

    これをランダムにするために、スタート座標のy座標をいじります。
    コードは下記のような感じで。

          mi = pyxel.rndi(0, 2)
          for i in range(32):
              self.data = []
              for i2 in range(32):
                  self.data.append(pyxel.tilemap(0).pget(i2, i + mi * 32))
              self.maze.append(self.data)

    miを0から2のランダムにして、32を掛けたものをスタート座標のyとしています。

    画像
    画像
    画像

    ▲スタート地点のマップがそれぞれ変わっています。
    完全なランダムではありませんが、これでマップのバリエーションが増えました。

    それではいったんここでexeの形で単体実行ファイルにしてitch.coにアップロードしてみます。
    nuitkaを使ってコンパイル。

    画像
    ▲本体のexeとこのゲームのライセンス、pyxelのライセンスをまとめてZIP化。

    ▲アップロードできました。

    今回はここまで。
    次回は…どうしましょうね。ちょっと考え中。

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

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

    この記事が参加している募集

     
     
    出版社のしがない社内SE。 ここでは主に趣味のプログラミングやゲーム制作について書いています。作ったゲームは https://koidemizu.github.io/ で公開しているのでよかったら遊んでください。 ゲーム大好きインドア派。

    あなたへのおすすめ