授業案:DQM4の配合をPythonで再現しよう(小学校高学年〜中学生)

執筆・編集 · 更新

  • 対象:教材(ゲームのデータは例として一部だけ使用)
  • 資料確認
  • 中級
  • 確認方法の説明
ひとことで言うと

配合表を「辞書」というデータの形で書き、作りたいモンスターから材料をさかのぼるプログラムを作る授業案です。「関数が自分自身を呼ぶ(再帰)」というむずかしい考え方を、子どもたちが大好きなゲームのしくみで体験できます。

紙とペンで「この子の親はどれ?」とたどるところから始めます。答えが見えてきたら、親を調べる同じ手順を、Pythonの関数に一回分だけ書いてみましょう。

ねらい

  • 配合表を、データ(辞書)として表せる
  • 作りたいものから、必要な材料をさかのぼって考えられる
  • 関数が自分自身を呼ぶ「再帰」の動きを、図にかいて説明できる

進め方(45分 × 2回の例)

時間 やること
1回目の前半 配合表を紙にかき、「メタルハンターを作るには何がいる?」を手でさかのぼる
1回目の後半 配合表をPythonの辞書にする
2回目の前半 さかのぼる関数を作って動かす
2回目の後半 自分で考えた空想のモンスターと配合を足して、友だちと問題を出し合う

プログラム

# 配合表:作れるモンスター → 親2体
recipes = {
    "スライムナイト": ("スライムタワー", "メソコボルト"),
    "さまようよろい": ("スライムナイト", "たけやりへい"),
    "トルトリーナ": ("メタッピー", "フェアリードラゴン"),
    "メタルハンター": ("トルトリーナ", "さまようよろい"),
}


def materials(name, depth=0):
    """name を作るのに必要な、配合で作れない材料を集める"""
    print("  " * depth + name)
    if name not in recipes:
        return [name]
    left, right = recipes[name]
    return materials(left, depth + 1) + materials(right, depth + 1)


if __name__ == "__main__":
    need = materials("メタルハンター")
    print("集める材料:", "、".join(need))
    print("配合の回数:", len(need) - 1)

動かすと、メタルハンターから材料までの「木」が、字下げつきで表示されます。最後に、集める材料の一覧が出ます。2体から1体を作るので、この教材のように、毎回2体から1体を作り、手持ちも使わずに最後の1体まで組み立てる場合、配合回数は「材料の数 − 1」になる、という発見も子どもたちと話し合えます。

子どもたちへの問いかけのれい

場面 問いかけ
紙でさかのぼるとき 「メタルハンターの親の、そのまた親はだれ?」
辞書にするとき 「左がモンスター、右が親。表とどこが同じ?」
再帰を動かすとき 「関数が自分をよんだら、次はどこから始まる?」
ふり返り 「材料が4つなら、配合は何回?どうしてそうなる?」

答えを先に教えるより、紙の木の図とプログラムの字下げを見くらべてもらうと、「同じ形だ!」と自分で気づく子が多くなります。

行き止まりの条件を、紙の図で確認する

「メタルハンター」を起点に、トルトリーナの先をたどります。メタッピーのように教材の辞書で親が定義されていない名前に行き着いたら、その枝はそこで止まります。子どもに止まる場所を丸で囲んでもらうと、コードの if name not in recipes がどこを担当しているか見つけやすくなります。

もっとやってみたい人へ

  • 同じ材料が2回出てきたら、数をかぞえる(Pythonの collections.Counter を使う)
  • 持っているモンスターを辞書にして、持っているものは集めなくてよいようにする(このサイトの配合プランナーと同じ計算です)

注意したいこと

ゲームのデータは、例として少しだけ使っています。授業では、子どもたちが空想のモンスターを考えて配合表を作る活動を中心にすると、権利の面でも安心です。出張授業やワークショップのご相談はご依頼からどうぞ。

評価のめやす

段階 できること
A 自分で考えた配合表を辞書にして、材料をさかのぼるプログラムを動かせる
B 用意された辞書に1行足して、結果がどう変わるか説明できる
C 紙の上で、材料をさかのぼれる

プログラミングがはじめての子は、Cの「紙でさかのぼる」だけでも十分な学びです。ゲームが好きな気持ちを入口に、「調べて・整理して・伝える」力を育てていきましょう。

関連する図鑑・エリア・記事

DQM4のプレイ動画

YouTube 再生リストドラゴンクエストモンスターズ4 枯れ木の国のビアンカ・フローラ沖縄マイクラ部【クロスウェーブ】が、実際に遊んだようすを動画にまとめています。攻略ページとあわせて見ると、場所や動きがわかりやすくなります。新しい動画は再生リストに追加していきます。

GMNAVI.JP・YouTubeの関連記事と動画

公式掲示板

配合レシピ・質問は掲示板へ!

このサイトの掲示板はYouTubeコミュニティです。見つけた配合、自慢のチーム、攻略の質問を書きこんでね。

掲示板をひらく使い方と約束

名前や学校、住所など、自分のことがわかる情報は書かないでね。

この記事のMarkdown版

広告