TEXTBOOK SECTION / AI LEARNING

イベントを追加してみよう

Flutterアプリケーション開発概論の「人生ゲームを作る。サイコロ処理・イベント分岐・プレイヤー管理・データ設計・アニメーション」より、イベントを追加してみようを解説。生成AI、AI活用、DX、業務改善を実践しながら学べるオンライン教材です。

9人生ゲームを作る。サイコロ処理・イベント分岐・プレイヤー管理・データ設計・アニメーションFlutter / iOS / Android / MacOS / Windows / 基礎から学ぶ / 開発 / アプリ開発

OVERVIEW

この節で学べること

概要を表示する
項目内容
教材名Flutterアプリケーション開発概論
人生ゲームを作る。サイコロ処理・イベント分岐・プレイヤー管理・データ設計・アニメーション
イベントを追加してみよう
カテゴリFlutter / iOS / Android / MacOS / Windows / 基礎から学ぶ / 開発 / アプリ開発
学習内容生成AI、AI活用、DX、業務改善を実践しながら理解するための教材です。

TABLE OF CONTENTS

目次

CONTENT

ここから

忙しい方はここだけ見て

この章で触る場所は、ここです。

List<EventInfo> _createEventPool() {
  return const <EventInfo>[
    EventInfo(
      title: '副業が大成功',
      description: '週末に始めた小さな副業が話題になりました。思わぬ収入です。',
      cashChange: 300,
      category: EventCategory.work,
    ),
  ];
}

イベントを追加したいときは、EventInfo を1つ増やします。

EventInfo(
  title: '新しい仕事を受注',
  description: '知人から仕事を紹介され、まとまった収入が入りました。',
  cashChange: 400,
  category: EventCategory.work,
),

お金が増えるイベントは、プラスの数字にします。

cashChange: 400,

お金が減るイベントは、マイナスの数字にします。

cashChange: -300,

まずは、title・description・cashChangeだけ変える のがおすすめです。


この章でやること

この章では、人生ゲームのランダムイベントを追加してみます。

イベントとは、プレイヤーがイベントマスに止まったときに起きる出来事です。

例えば、こういうものです。

副業が大成功
急な出費
投資リターン
スマホ紛失
動画がバズる

イベントがあると、ゲームに予想外の展開が生まれます。

人生ゲームらしさを出す、とても大事な部分です。


今日のゴール

この章のゴールは、次の3つです。

1. イベントを作る場所が分かる
2. 収入イベントと出費イベントを作れる
3. 自分だけのイベントを追加できる

最初は、難しい処理を変えなくて大丈夫です。

まずは、イベントの文章と金額を変えてみましょう。


Step 1:_createEventPool()を探す

lib/main.dart を開きます。

検索で、次の文字を探してください。

_createEventPool

このようなコードがあります。

List<EventInfo> _createEventPool() {
  return const <EventInfo>[
    EventInfo(
      title: '副業が大成功',
      description: '週末に始めた小さな副業が話題になりました。思わぬ収入です。',
      cashChange: 300,
      category: EventCategory.work,
    ),
    EventInfo(
      title: '急な出費',
      description: '家電が突然故障。生活には欠かせないので買い替えました。',
      cashChange: -200,
      category: EventCategory.expense,
    ),
  ];
}

ここに、ランダムで出るイベントが並んでいます。


Step 2:EventInfoとは?

EventInfo は、イベント1つ分の情報です。

class EventInfo {
  const EventInfo({
    required this.title,
    required this.description,
    required this.cashChange,
    required this.category,
  });

  final String title;
  final String description;
  final int cashChange;
  final EventCategory category;
}

最初は、こう覚えればOKです。

EventInfo = イベント情報を入れる箱

Step 3:イベントの中身を見てみよう

イベントには、次の情報があります。

項目意味
titleイベント名副業が大成功
description説明文思わぬ収入です
cashChange現金の増減300, -200
categoryイベントの種類EventCategory.work

特に大事なのは、cashChange です。

ここがプラスならお金が増えます。

ここがマイナスならお金が減ります。


Step 4:収入イベントを作ってみよう

まずは、お金が増えるイベントを作ります。

EventInfo(
  title: '新しい仕事を受注',
  description: '知人から仕事を紹介され、まとまった収入が入りました。',
  cashChange: 400,
  category: EventCategory.work,
),

これは、次の意味です。

イベント名:新しい仕事を受注
説明文:仕事を紹介された
現金:400増える
カテゴリ:仕事

お金を増やしたい場合は、cashChange をプラスの数字にします。


Step 5:出費イベントを作ってみよう

次は、お金が減るイベントです。

EventInfo(
  title: 'パソコンが故障',
  description: '仕事で使っていたパソコンが壊れて、修理費がかかりました。',
  cashChange: -350,
  category: EventCategory.trouble,
),

これは、次の意味です。

イベント名:パソコンが故障
説明文:修理費がかかった
現金:350減る
カテゴリ:トラブル

お金を減らしたい場合は、数字の前に - をつけます。


Step 6:EventCategoryを確認しよう

イベントの種類は、EventCategory で決めます。

enum EventCategory {
  income,
  expense,
  work,
  health,
  family,
  investment,
  chance,
  trouble,
}

意味はこちらです。

種類使う場面
EventCategory.income収入
EventCategory.expense出費
EventCategory.work仕事
EventCategory.health健康
EventCategory.family家族
EventCategory.investment投資
EventCategory.chanceチャンス
EventCategory.troubleトラブル

カテゴリによって、イベント画面の色やアイコンが変わります。

最初は、近いものを選べばOKです。


Step 7:どこに追加すればいい?

イベントは、return const <EventInfo>[ の中に追加します。

例えば、ここに追加します。

List<EventInfo> _createEventPool() {
  return const <EventInfo>[
    EventInfo(
      title: '副業が大成功',
      description: '週末に始めた小さな副業が話題になりました。思わぬ収入です。',
      cashChange: 300,
      category: EventCategory.work,
    ),

    // ここに新しいイベントを追加
    EventInfo(
      title: '新しい仕事を受注',
      description: '知人から仕事を紹介され、まとまった収入が入りました。',
      cashChange: 400,
      category: EventCategory.work,
    ),
  ];
}

大事なのは、最後のカンマです。

),

これを忘れないようにしましょう。


Step 8:イベントが出るタイミング

イベントは、イベントマスに止まったときに出ます。

イベントマスは、_createTiles() の中でこう作られています。

BoardTile(
  index: 3,
  age: 24,
  stage: '変化の時期',
  label: 'ライフイベント',
  description: '人生には予想外の出来事がつきものです。',
  type: TileType.event,
),

type: TileType.event のマスに止まると、_createEventPool() の中からランダムに1つ選ばれます。

つまり、流れはこうです。

イベントマスに止まる
↓
イベント一覧からランダムで1つ選ぶ
↓
イベント画面を出す
↓
現金を増やす、または減らす

Step 9:イベントを増やすとゲームが面白くなる

イベントが少ないと、同じ出来事が何度も出やすくなります。

イベントを増やすと、ゲームに変化が出ます。

収入イベント
出費イベント
仕事イベント
健康イベント
投資イベント
トラブルイベント

をバランスよく入れると、人生ゲームらしくなります。


Step 10:おすすめイベント例

そのまま追加しやすいイベント例です。

収入イベント

EventInfo(
  title: '臨時ボーナス',
  description: '日頃の努力が評価され、臨時ボーナスを受け取りました。',
  cashChange: 500,
  category: EventCategory.income,
),

出費イベント

EventInfo(
  title: '急な家電買い替え',
  description: '冷蔵庫が突然故障し、買い替え費用が発生しました。',
  cashChange: -400,
  category: EventCategory.expense,
),

投資イベント

EventInfo(
  title: '投資が好調',
  description: '少しずつ続けていた投資が伸び、利益が出ました。',
  cashChange: 450,
  category: EventCategory.investment,
),

トラブルイベント

EventInfo(
  title: '財布を落とす',
  description: '外出中に財布を落としてしまい、痛い出費になりました。',
  cashChange: -300,
  category: EventCategory.trouble,
),

Step 11:ゲームバランスを考えよう

イベントを作るときは、金額のバランスが大事です。

今回の初期所持金は、だいたいこの設定です。

cash: 1500,

なので、イベント金額は最初はこのくらいがおすすめです。

種類おすすめ金額
小さな収入100200
大きな収入300700
小さな出費-100-200
大きな出費-300-600

いきなり 5000-5000 にすると、ゲームバランスが大きく崩れます。

最初は小さめにしましょう。


Step 12:イベント名の作り方

イベント名は、短く分かりやすくします。

良い例です。

副業が大成功
スマホ紛失
投資リターン
臨時ボーナス
医療費

長すぎると、画面で読みづらくなります。

悪い例です。

長年努力してきた副業がついに大きく成功して収入が入った

これは説明文に書きましょう。

タイトルは短く。

説明文で少し詳しく。

この形が読みやすいです。


Step 13:イベントをテーマ別に変えよう

このゲームは、イベントを変えるだけで別の教材にできます。

学校生活ゲーム

テストで高得点
部活の大会に出場
文化祭で売上達成
参考書を購入
通学定期をなくす

仕事ゲーム

新規契約を獲得
資料作成で評価
パソコン故障
出張費発生
副業が伸びる

投資ゲーム

株価上昇
配当金を受け取る
急な暴落
不動産収入
税金支払い

店舗経営ゲーム

新商品がヒット
広告費を支払う
スタッフ採用
設備が故障
常連客が増える

自分の作りたいテーマに合わせて変えてみましょう。


触ってみよう

今回は、イベントを2つ追加してみます。

_createEventPool() の中に、次の2つを追加してください。

EventInfo(
  title: '新しい仕事を受注',
  description: '知人から仕事を紹介され、まとまった収入が入りました。',
  cashChange: 400,
  category: EventCategory.work,
),
EventInfo(
  title: 'パソコンが故障',
  description: '仕事で使っていたパソコンが壊れて、修理費がかかりました。',
  cashChange: -350,
  category: EventCategory.trouble,
),

保存して、アプリを再読み込みします。

r

イベントマスに止まって、追加したイベントが出れば成功です。

ランダムなので、すぐに出ないこともあります。

何度かサイコロを振って試してみましょう。


よくあるエラーと直し方

1. カンマを忘れた

悪い例です。

EventInfo(
  title: '新しい仕事を受注',
  description: '知人から仕事を紹介されました。',
  cashChange: 400,
  category: EventCategory.work,
)
EventInfo(
  title: 'パソコンが故障',
  description: '修理費がかかりました。',
  cashChange: -350,
  category: EventCategory.trouble,
),

正しくはこちらです。

EventInfo(
  title: '新しい仕事を受注',
  description: '知人から仕事を紹介されました。',
  cashChange: 400,
  category: EventCategory.work,
),
EventInfo(
  title: 'パソコンが故障',
  description: '修理費がかかりました。',
  cashChange: -350,
  category: EventCategory.trouble,
),

EventInfo(...) の最後にカンマをつけます。


2. 文字の ' を消した

悪い例です。

title: 新しい仕事を受注,

正しくはこちらです。

title: '新しい仕事を受注',

文字は ' で囲みます。


3. マイナスをつけ忘れた

出費イベントなのに、こう書くとお金が増えます。

cashChange: 350,

お金を減らしたい場合は、こうです。

cashChange: -350,

出費には - をつけます。


4. categoryの書き方を間違えた

悪い例です。

category: work,

正しくはこちらです。

category: EventCategory.work,

EventCategory. を忘れないようにします。


5. 追加したイベントが出ない

イベントはランダムです。

追加しても、すぐに出るとは限りません。

イベント一覧の中からランダムで1つ選ばれる

何度かイベントマスに止まって確認しましょう。


この章で覚えること

この章で覚えることは、3つだけです。

1. イベントは _createEventPool() に書く
2. EventInfo がイベント1つ分のデータ
3. cashChange がプラスなら収入、マイナスなら出費

まずはこれだけで大丈夫です。


やる気を維持するコツ

イベントを追加すると、ゲームが一気に自分の作品になります。

サイコロ処理や難しいロジックを変えなくても、イベントの中身を変えるだけで世界観が変わります。

人生ゲーム
↓
仕事ゲーム
↓
投資ゲーム
↓
学校生活ゲーム
↓
店舗経営ゲーム

「文章を変えるだけでもアプリは変わる」

これを体感できると、プログラミングはかなり楽しくなります。


チェックリスト

□ _createEventPool() を見つけた
□ EventInfo がイベント情報だと分かった
□ title の意味を確認した
□ description の意味を確認した
□ cashChange の意味を確認した
□ category の意味を確認した
□ 収入イベントを1つ追加した
□ 出費イベントを1つ追加した
□ 保存して再読み込みした
□ イベントマスで動作を確認した

まとめ

この章では、人生ゲームのイベントを追加しました。

イベントは _createEventPool() の中に、EventInfo として書かれています。

cashChange がプラスなら現金が増え、マイナスなら現金が減ります。

最初は、titledescriptioncashChange を変えるだけで十分です。

次の章では、サイコロ処理を見ながら、1〜6の数字をランダムに出す仕組みを理解していきます。

FAQ

よくある質問

イベントを追加してみようは医療関係者向けだけの内容ですか。
医療分野の例が含まれる場合もありますが、医療関係者だけに限定した内容ではありません。生成AI、AI活用、DX、業務改善、プロトタイプ開発など、一般的なAI学習の事例として読める内容です。
AI初心者でも読めますか。
はい。AIをこれから学ぶ方、数学が苦手な方、仕事でAIを使いたい方にも読み進めやすいように、教材の章と節の流れに沿って整理しています。
サムネイル画像は必ず表示されますか。
はい。教材にcoverUrlが設定されている場合はその画像を表示し、未設定の場合は代替サムネイル画像を表示します。
Flutterアプリケーション開発概論のほかの章も読めますか。
はい。教材トップから章立てを確認でき、前後の節へもページ下部のナビゲーションから移動できます。