この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。
(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)
「src/mymod/scene_battle/proc/menu.py」の説明です。メニュー操作を管理するモジュールです。
from ...game import eventfrom .. import main # 型ヒント用from . import my
# メニュー管理async def manage(p: "main.SceneBattle", e: event.GEvent): # メニュー決定 if e.key_down == event.K_SEL: await my.start(p) # 自アクション開始 return
# メニュー選択(上下ループ) if e.key_down == event.K_DOWN: p.menu.sel += 1 if e.key_down == event.K_UP: p.menu.sel -= 1 max = len(p.menu.texts) if p.menu.sel < 0 : p.menu.sel = max - 1 if p.menu.sel >= max : p.menu.sel = 0
まずはインポート部分を示します。
from ...game import eventfrom .. import main # 型ヒント用from . import my
型ヒント用にmain
(src/mymod/scene_battle/main.py)を読み込みます。
自分の行動を実行するためのmy
を読み込みます。
メニューを管理するmanage()
関数です。
# メニュー管理async def manage(p: "main.SceneBattle", e: event.GEvent): # メニュー決定 if e.key_down == event.K_SEL: await my.start(p) # 自アクション開始 return
# メニュー選択(上下ループ) if e.key_down == event.K_DOWN: p.menu.sel += 1 if e.key_down == event.K_UP: p.menu.sel -= 1 max = len(p.menu.texts) if p.menu.sel < 0 : p.menu.sel = max - 1 if p.menu.sel >= max : p.menu.sel = 0
main.SceneBattle
オブジェクトを引数p
として受け取ります。p
を使うことで、main.SceneBattle
内でself
配下に書いていた値が全て使えます。
選択キーを押すと自分の行動を開始します。
上下キーを押すと、選択位置を変えます。
選択メニューは上下でループします。一番上で上を押すと、一番下に移動します。一番下で下を押すと、一番上に移動します。
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。
(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)