0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pygameを使って RPGを作る(16. 戦闘画面(その4))

Last updated at Posted at 2025-01-09

概要

今回は、画面更新時の残像が残る問題を解決しました。
原因については、画面の更新管理不備で、イベントによる画面の更新と敵遭遇による更新があって、
また、スプライトには慣れていないせいもあって、エラー続出で時間がかかってしまった。

image.png

Battleクラス

このコードは、PyGame を使用して戦闘システムを実装したクラス Battle を示しています。戦闘中の画面描画、敵とのやり取り、プレイヤーステータスの表示、ボタンを介したユーザー入力などを管理しています。


全体の構造

目的

  • 戦闘画面を構築し、敵の表示、コマンドの選択、メッセージの表示を管理します。

1. 初期化部分 (__init__ メソッド)

主な初期化内容

  • 背景画像の設定
    背景画像をロードし、画面サイズに合わせてスケールします。

  • オフセット計算
    背景画像を中央に配置するためにオフセットを設定します。

  • フォントの設定
    メッセージ表示用にフォントを指定します。

  • ボタンの初期化
    主なコマンド(「攻撃」「魔法」「逃げる」)とサブコマンド(「ホイミ」「メラ」「ヒャド」)のボタンを作成します。各ボタンにはクリック時の動作を関連付けます。

  • プレイヤーステータス管理
    PlayerStatus クラスを使用してプレイヤーのHP、MPなどのステータスを管理します。

  • テキスト表示管理
    TextSprite クラスを使用してメッセージの描画と管理を行います。


2. 背景描画 (draw_background メソッド)

  • 画面を黒で塗りつぶした後、背景画像を描画します。
  • 背景画像の位置はオフセットを適用して調整します。

3. 描画処理 (draw メソッド)

  • 敵の画像を設定し、敵が出現したことを示すメッセージを追加します。
  • 画面全体を描画するため、render_scene メソッドを呼び出します。

4. シーン描画 (render_scene メソッド)

  • 背景、敵、メッセージエリア、ボタン、プレイヤーステータスを一括で描画します。
  • 各描画は専用のメソッドに分割されています。

5. メッセージ管理 (set_message メソッド)

  • メッセージリストが5件を超えた場合、古いメッセージを削除します。
  • 各メッセージに空白を追加し、改行で結合して返します。

6. メッセージ描画 (draw_text メソッド)

  • TextSprite クラスを使ってメッセージを描画します。

7. テキストエリア描画 (draw_background_text_area メソッド)

  • メッセージエリアを描画します。
    • 半透明の青色背景を設定。
    • エリアの境界線を白色で描画します。

8. メニュー描画 (draw_menu_backgroud メソッド)

  • 左側にあるコマンドメニュー部分の背景を描画します。

9. ボタン描画 (draw_buttons メソッド)

  • 現在表示中のコマンドボタン(メインまたはサブコマンド)をすべて描画します。

10. コマンド切り替え

show_main_commands

  • メインコマンド(「攻撃」「魔法」「逃げる」)を表示するため、ボタンリストを切り替えます。

show_sub_commands

  • サブコマンド(「ホイミ」「メラ」「ヒャド」)を表示するため、ボタンリストを切り替えます。

11. マウスイベント処理 (handle_mouse_event メソッド)

  • マウスクリックイベントを処理します。
  • 現在表示中のボタンの中でクリックされたものを特定し、対応するアクションを実行します。

12. 各ボタンのアクション

  • attack: 「攻撃」を選択した際、メッセージリストに「攻撃」を追加。
  • escape: 「逃げる」を選択した際、メッセージリストに「逃げる」を追加。
  • hoimi: 「ホイミ」を選択した際、メッセージリストに「ホイミ」を追加し、メインコマンドに戻る。
  • mera: 「メラ」を選択した際、メッセージリストに「メラ」を追加し、メインコマンドに戻る。
  • hyado: 「ヒャド」を選択した際、メッセージリストに「ヒャド」を追加し、メインコマンドに戻る。

コードのポイント

  1. メッセージと描画の管理

    • メッセージリスト (battle_message) を用いてログを管理。
    • 描画処理を複数のメソッドに分割して、コードの可読性を向上。
  2. コマンドシステム

    • メインコマンドとサブコマンドを切り替える柔軟な仕組み。
  3. ユーザー入力の処理

    • マウスイベントをボタン単位で処理し、クリック時の動作を関連付け。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?