###############概要###
これは、Python 3 と Pygame を使用したゲームの作成に関する 5 部構成のチュートリアル シリーズの 4 番目です。パート 3 では、Breakout の核心を掘り下げ、イベントの処理方法を学び、主要な Breakout クラスを確認し、さまざまなゲーム オブジェクトを移動する方法を確認しました。
このパートでは、衝突を検出する方法と、ボールがパドル、レンガ、壁、天井、床などのさまざまなオブジェクトに衝突したときに何が起こるかを学びます。最後に、ゲーム UI の重要なトピック、特に独自のカスタム ボタンを使用したメニューの作成方法を確認します。
ゲームでは、物と物がぶつかり合います。ブレークスルーも例外ではありません。ほとんどの場合、ボールが何かにぶつかります。
handle_ball_collisions()という入れ子関数があります。ボールがオブジェクトを外した場合は、「Left」、「Right」、「Up」、「Down」、または「None」を返します。 リーリー
ラケットでボールを打つ
ボールがラケットに当たると、跳ね返ります。パドルの上部に当たると跳ね返りますが、同じ水平方向の速度成分は維持されます。
ラケットが落下する途中でボールを外した場合(またはボールがラケットの側面に当たった場合)、ボールは落下を続け、最終的には床に当たります。この時点で、プレイヤーはライフを失いますが、ボールは再作成されるので、ゲームは続行できます。プレイヤーのライフがなくなるとゲームは終了します。
リーリー
天井や壁にぶつかるリーリー ブリックブレイク
レンガが当たったかどうかを判断するために、コードはボールと交差するレンガがあるかどうかをチェックします。 リーリー
ゲームメニューのプログラミング
ほとんどのゲームには、何らかのユーザー インターフェイスがあります。 Breakoutには「PLAY」と「QUIT」という2つのボタンがあるシンプルなメニューがあります。このメニューはゲーム開始時に表示され、プレイヤーが「開始」をクリックすると消えます。ボタンとメニューがどのように実装され、それらがどのようにゲームと統合されるかを見てみましょう。
ボタンの作成
ボタンは、背景色とテキストが表示された長方形として実装されます。ボタンは、ボタンがクリックされたときに呼び出される on_click 関数 (デフォルトは noop ラムダ関数) も受け取ります。 リーリー
ボタンは独自のマウス イベントを処理し、これらのイベントに基づいて内部状態を変更します。ボタンが押されると、プレーヤーがボタンをクリックしたことを示す
MOUSEBUTTONUP関数が呼び出されます。 リーリー
背景の四角形の描画に使用される
back_colorプロパティは、常にボタンの現在の状態に一致する色を返すため、プレーヤーはボタンがアクティブであることを明確に確認できます。 リーリー
メニューの作成
create_menu()
on_play() と
on_quit()
menu_buttons フィールドに追加されます。
リーリー
PLAY ボタンをクリックすると、on_play() が呼び出され、ボタンが
objects リストから削除され、描画されなくなります。さらに、ゲームの開始をトリガーするブール値フィールド
is_game_running および
start_level が True に設定されます。
終了ボタンをクリックすると、
is_game_running
False (実質的にゲームを一時停止) に設定され、
game_over が True に設定され、最終ゲームがトリガーされます。順序。
リーリー
ゲームメニューの表示と非表示
メニューの表示と非表示は暗黙的です。ボタンが
objects リストにある場合はメニューが表示され、ボタンが削除されるとメニューは非表示になります。それはとても簡単です。
ボタンなどのサブコンポーネントをレンダリングする独自のサーフェスを備えたネストされたメニューを作成し、そのメニュー コンポーネントを追加/削除するだけで済みますが、この単純なメニューではその必要がありません。
###結論は###シリーズ最終回となる今回は、スコアやライフ、効果音、音楽などに注目しながら最終試合を見ていきます。
次に、ゲームに面白みを加える複雑な特殊効果システムを開発します。最後に、今後の方向性と改善の可能性について説明します。
以上がPython 3 と Pygame を使用したインタラクティブ ゲームの作成: パート 4の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。