Python を使用して Excitebike へのオマージュを作成する

Python を使用して Excitebike へのオマージュを作成する

Excitebike は横スクロール ゲームで、バイクをジャンプさせ、障害物を回避し、ゴールに向かってスピードを上げます。





任天堂は、この BMX レーシング ゲームを NES 用に最初に発売しました。そこから、同社は Excitebike を近代化し、N64 でリリースし、最終的には Wii でリリースしました。





NES コンソールはもうあまり存在しないため、Excitebike を再びプレイするのは難しくなっています。 Wireframe Magazine の一部のレトロ ファンのおかげで、Python コードのスニペットでこの NES クラシックを再現して、Raspberry Pi や自宅の PC で何時間も楽しむことができます。





Javaでforループを書く方法
今日のメイク動画

コードの取得とセットアップ

nano または vim を使用して Python コードを編集できますが、フル機能の テキスト エディタまたは IDE .

この Excitebike へのオマージュで構築された機能をサポートするには、Pygame Zero をインストールする必要があります。 Pygame Zero には、ゲーム クリエイターが単純な基礎を繰り返さなくても集中できる Python モジュールが含まれています。



PC に python3 がインストールされていない場合は、 最新バージョンをダウンロードする Python から直接。あなたもしたいでしょう PIPがインストールされていることを確認してください それも。

最新バージョンの Python と PIP がインストールされている状態で、PowerShell または Linux ターミナルを開き、次のように入力します。





pip3 install pgzero 

最後に、Wireframe マガジンの GitHub リポジトリから Python コードのコピーを取得する必要があります。次のコマンドをターミナルに入力します。

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

または、次のことができます 圧縮されたコードをダウンロードする Wireframe GitHub ページから直接。





コードの分解

コードの動作を理解するには、まず Excitebike ゲームを実行します。これを行うには、ソース コードに移動し、Pygame Zero を使用して実行します。

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

その後、テキスト エディターで exitebike.py ファイルを開いてコードを表示できます。

  exitebike python コード スニペット

描く 関数は、バイクの画像が動くのに合わせて背景を描画します。あ」 止まる 」は、画面上に描かれたブロックを指します。 バックグラウンド、' 背景画像を参照します (背景ブロックへの画像のリンクは、インポートされた Pygame Zero モジュールのおかげです)。

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

また、ラップ タイムと最後のラップの計算も表示されます (これは、画面下部のタイム カウンターで表されます)。ラップタイムは、最初に右矢印キーを押した時点 (開始時間) と現在の時間との差を常に計算しています。

最終ラップも同様の計算です。開始時間の代わりに、バイクが事前定義されたトラック位置を通過した時点からの時間が計算されます ( トラック位置 < コードでは -4800)。以下の引用符内の項目はイメージを表しています。

このコードは、画面上の特定の間隔と特定の位置に画像ブロックを描画します。提供された群集の画像は幅が 100px しかありません。しかし、以下のコードは、画像を描画するタイミングをコンピューターに指示し、オートバイが移動する際にその後ろにシミュレートされた群衆がいるかのように表示します。

岩の画像は 2 つの部分で画面に表示されます。以下のコードの 2 行目と 3 行目は連携して、きちんとした方法で風景をシミュレートします。

Python コードのバックアップ コピーを作成したら、以下の数値を変更して、画面上の岩がどうなるかを確認してください。

なぜ私のグーグルクロームは凍り続けるのですか
screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

バイクをモンスター トラック、四輪車、または別の車両に交換しますか?ユニコーンとレースをしてフィニッシュラインにたどり着きたいですか?

必要なのは、50x50px の画像 (背景が透明) を描画することだけです。次に、このファイル (picture.png) を ' 画像 ' フォルダー ( ソースコードexcitebike フォルダ)。リアリズムを追加するために、2 つのイメージ (高さを少し上げたイメージ) を作成する必要があります。あなたがする必要があるのは、参照を ' に変更することだけです やれ ここ:

Windows10から不要なプログラムを削除する方法
bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  トラックを使ったエキサイトバイクパイソンゲーム

また、画像の名前 (画像拡張子なし) で検索と置換アクションを実行してください。

checkBikeRamp() は、バイク (またはトラック) が傾斜路を上るように Y 軸を計算する機能です (運が良ければ、本格的な空気が入ります)。の キーボード.右 キーボード.左 パラメータは アップデート() 関数。

これらのコード ビットは、(ユーザーがキーボードのどのキーを押すかに応じて) オートバイの速度を落とすか、または速くするようにコンピューターに指示します。翻訳: バイクが速く動くほど、Y 軸 (または非常に大きなジャンプ) の数値が高くなります。

横方向に、 on_key_down(キー) 機能はあなたのバイクを急降下させます。

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

マックレーン パラメータは、次の計算を使用してバイクを遅くします。

muckLane = int((bike.laneY-375)/50)+1

コードの 66 行目は、いつ画面に「マック」画像を表示するかを決定します。バイクが泥の上をいつ​​通過するかをコンピューターが認識したので、トラックの泥の上を移動すると、バイクの速度が半分に減速します。 muckLane の値を /50 から /25 または /75 に変更して、次に何が起こるかを確認します。

レーサー (エヘム、Python プログラマー)!エンジンを始動しましょう!

この Excitebike へのオマージュをゼロからプログラミングすることに慣れていなくても、このコードは素晴らしい入門書です。それを微調整し、変更の視覚的な影響を理解することで、多くのことを学ぶことができます。ゲームに機能や AI レーサーを追加しようとしますか?頑張れ!

少し Python の練習を積んだ後、4 ~ 5 回フィニッシュ ラインを通過したら、別のレベルを追加してみてください。同様に、1 位、2 位、3 位の報酬を追加することもできます。あなたが 1 位の場合は、観客の声援の音声ファイルも追加してください!非常に多くの可能性があります。

Excitebike の機能強化に満足したら、テキスト アドベンチャー ゲームの作成に取り組んでみませんか?何時間も、何日も、何週間も、エキサイティングなことを確実に学べるさまざまな要素がたくさんあります。