11-3 進行1 メニュー
同人誌について
この連載は、同人誌『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 event
from .. 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 event
from .. 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 に更新)
このnoteの記事と、Webページに一部抜粋版を掲載しています。
技術系同人誌など まとめページ