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,
なので、イベント金額は最初はこのくらいがおすすめです。
| 種類 | おすすめ金額 |
|---|---|
| 小さな収入 | 100〜200 |
| 大きな収入 | 300〜700 |
| 小さな出費 | -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 がプラスなら現金が増え、マイナスなら現金が減ります。
最初は、title、description、cashChange を変えるだけで十分です。
次の章では、サイコロ処理を見ながら、1〜6の数字をランダムに出す仕組みを理解していきます。