PythonとPygameで作る レトロ風RPG 全コード

同人誌について

 この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。

 同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。

(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)


11-3 進行1 メニュー

公開:2024-07-22

説明と全体コード

 「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 に更新)

 技術系同人誌など まとめページ


トップページに戻る
Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について