CONTENT
ここから
忙しい方はここだけ
この章で触る場所は、ここです。
List<BoardTile> _createTiles() {
return const <BoardTile>[
BoardTile(
index: 0,
age: 20,
stage: 'スタート',
label: '人生のはじまり',
description: 'ここから人生ゲームが始まります。',
type: TileType.start,
),
];
}
人生ゲームのマスは、BoardTile で作ります。
1マスには、次の情報があります。
index 何番目のマスか
age 何歳のマスか
stage 人生の時期
label マスの名前
description 説明文
type マスの種類
price 物件価格
rent 通行料
まずは、label と description を変えるだけでOKです。
label: '初めてのアルバイト',
description: '初めてアルバイトをして、少しだけお金を稼ぎました。',
文字を変えて保存し、アプリで表示が変われば成功です。
この章でやること
この章では、人生ゲームの「マス」を作る場所を見ていきます。
ゲームの中で、プレイヤーはサイコロを振ってマスを進みます。
そのマスには、いろいろな種類があります。
給料をもらうマス
イベントが起きるマス
物件を買えるマス
税金を払うマス
ゴールするマス
このマスを作っているのが、_createTiles() です。
今日のゴール
この章のゴールは、次の3つです。
1. _createTiles() が人生のマスを作る場所だと分かる
2. BoardTile の中身が少し分かる
3. マスの名前や説明文を自分で変えられる
全部を理解しようとしなくて大丈夫です。
まずは、文字を変えて画面に反映される体験をしましょう。
Step 1:_createTiles()を探す
lib/main.dart を開きます。
検索で、次の文字を探してください。
_createTiles
このようなコードがあります。
List<BoardTile> _createTiles() {
return const <BoardTile>[
BoardTile(
index: 0,
age: 20,
stage: 'スタート',
label: '人生のはじまり',
description: 'ここから人生ゲームが始まります。サイコロを振って、仕事・お金・資産形成の道を進みます。',
type: TileType.start,
),
BoardTile(
index: 1,
age: 21,
stage: '学生・準備期',
label: '準備の日々',
description: '大きな収支はありません。これからの人生に向けて、少しずつ経験を積みます。',
type: TileType.normal,
),
];
}
ここに、人生ゲームのマスが並んでいます。
Step 2:BoardTileとは?
BoardTile は、人生ゲームの1マス分のデータです。
例えば、このマスを見てみます。
BoardTile(
index: 4,
age: 25,
stage: '初任給・収入期',
label: '初任給',
description: '仕事の成果として給料を受け取ります。現金が増え、次の選択肢が広がります。',
type: TileType.payday,
),
これは、こういう意味です。
4番目のマス
25歳のマス
初任給・収入期
マス名は「初任給」
給料マスなので、お金が増える
画面に表示される文字も、ここから作られています。
Step 3:BoardTileの中身を確認する
BoardTile には、次の情報があります。
| 項目 | 意味 | 例 |
|---|---|---|
index | マスの番号 | 0, 1, 2 |
age | 年齢 | 20, 25, 65 |
stage | 時期 | 学生・準備期 |
label | マスの名前 | 初任給 |
description | 説明文 | 現金が増えます |
type | マスの種類 | TileType.payday |
price | 物件価格 | 300 |
rent | 通行料 | 80 |
最初に変えるなら、label と description がおすすめです。
Step 4:マスの種類を確認する
マスの種類は、TileType で決めます。
enum TileType {
start,
normal,
payday,
event,
property,
tax,
goal,
}
意味はこちらです。
| 種類 | 役割 |
|---|---|
TileType.start | スタート地点 |
TileType.normal | 何も起きない通常マス |
TileType.payday | 給料が入るマス |
TileType.event | ランダムイベントが起きるマス |
TileType.property | 物件を買えるマス |
TileType.tax | お金を支払うマス |
TileType.goal | ゴール地点 |
マスの動きは、この type で変わります。
Step 5:まず文字だけ変えてみよう
最初は、安全に文字だけ変えます。
変更前です。
BoardTile(
index: 1,
age: 21,
stage: '学生・準備期',
label: '準備の日々',
description: '大きな収支はありません。これからの人生に向けて、少しずつ経験を積みます。',
type: TileType.normal,
),
変更後です。
BoardTile(
index: 1,
age: 21,
stage: '学生・準備期',
label: 'はじめての挑戦',
description: '小さな挑戦を始めました。まだ大きな成果はありませんが、確実に前へ進んでいます。',
type: TileType.normal,
),
type は変えずに、label と description だけ変えています。
これなら壊れにくいです。
Step 6:保存して確認する
変更したら保存します。
Macの場合です。
command + S
Windowsの場合です。
Ctrl + S
アプリが起動中なら、ターミナルで r を押します。
r
変わらない場合は、R を押します。
R
画面のマス名が変わっていれば成功です。
Step 7:年齢を変えてみよう
マスの年齢も変えられます。
変更前です。
age: 21,
変更後です。
age: 22,
すると、画面上の年齢表示が変わります。
ただし、年齢は順番に増えるようにしておくと自然です。
20歳
22歳
24歳
25歳
30歳
のように、だいたい上から増えていればOKです。
Step 8:物件マスを見てみよう
物件マスには、price と rent があります。
BoardTile(
index: 2,
age: 23,
stage: '社会人スタート期',
label: '小さなカフェ',
description: '小さなカフェに投資できます。',
type: TileType.property,
price: 300,
rent: 80,
),
意味はこちらです。
| 項目 | 意味 |
|---|---|
price | 購入価格 |
rent | 他のプレイヤーが止まったときの通行料 |
例えば、もっと高い物件にしたい場合です。
price: 500,
rent: 150,
ただし、最初は大きく変えすぎなくてOKです。
Step 9:物件名を変えてみよう
例えば、「小さなカフェ」を「小さな本屋」に変えてみます。
変更前です。
label: '小さなカフェ',
description: '小さなカフェに投資できます。所有すると、他のプレイヤーが止まった時に通行料を得られます。',
変更後です。
label: '小さな本屋',
description: '小さな本屋に投資できます。所有すると、他のプレイヤーが止まった時に通行料を得られます。',
まずはこのくらいの変更で大丈夫です。
文字が変わるだけでも、自分のゲームらしくなります。
Step 10:イベントマスを見てみよう
イベントマスは、このように作られています。
BoardTile(
index: 3,
age: 24,
stage: '変化の時期',
label: 'ライフイベント',
description: '人生には予想外の出来事がつきものです。',
type: TileType.event,
),
type が TileType.event なので、このマスに止まるとランダムイベントが起きます。
具体的なイベント内容は、別の場所にあります。
_createEventPool()
この章では、イベントマスの名前や説明だけ分かればOKです。
Step 11:給料マスを見てみよう
給料マスは、TileType.payday です。
BoardTile(
index: 4,
age: 25,
stage: '初任給・収入期',
label: '初任給',
description: '仕事の成果として給料を受け取ります。現金が増え、次の選択肢が広がります。',
type: TileType.payday,
),
このマスに止まると、現金が増えます。
実際にいくら増えるかは、別の処理で決まっています。
_handleTileEffect()
この章では、
TileType.payday = 給料マス
と覚えれば大丈夫です。
Step 12:税金マスを見てみよう
税金マスは、TileType.tax です。
BoardTile(
index: 6,
age: 28,
stage: '社会の現実期',
label: '税金・支払い',
description: '収入が増えると、税金や固定費も発生します。現金が減ります。',
type: TileType.tax,
),
このマスに止まると、現金が減ります。
これも、実際にいくら減るかは別の処理で決まっています。
まずは、
TileType.tax = 支払いマス
と覚えればOKです。
Step 13:ゴールマスを見てみよう
最後のマスは、TileType.goal です。
BoardTile(
index: 19,
age: 65,
stage: 'ゴール',
label: '人生の集計',
description: 'ゴールです。現金と所有資産を合計し、最終順位を決定します。',
type: TileType.goal,
),
このマスに着くと、プレイヤーはゴールします。
全員がゴールすると、最終順位が決まります。
ゴールマスは、基本的に最後に置きます。
Step 14:マスを増やすときの注意
マスを増やすこともできます。
ただし、初心者のうちは注意が必要です。
大事なのは、index の番号です。
0
1
2
3
4
のように、上から順番になるようにします。
悪い例です。
0
1
2
5
6
途中が飛んでいると、分かりにくくなります。
最初は、既存のマスの文字を変えるだけで十分です。
Step 15:おすすめのカスタマイズ例
慣れてきたら、ゲームのテーマを変えられます。
学校生活ゲーム
入学式
部活動
テスト
文化祭
受験
卒業
仕事・キャリアゲーム
初出勤
副業開始
転職
昇進
独立
大型案件
投資ゲーム
少額投資
株式投資
不動産購入
税金
暴落イベント
資産形成
店舗経営ゲーム
開業
初売上
広告出稿
スタッフ採用
設備投資
2店舗目出店
マスを変えるだけで、別のゲームになります。
触ってみよう
今回は、1つだけマスを変更してみましょう。
探す場所はこちらです。
BoardTile(
index: 1,
age: 21,
stage: '学生・準備期',
label: '準備の日々',
description: '大きな収支はありません。これからの人生に向けて、少しずつ経験を積みます。',
type: TileType.normal,
),
これを、次のように変えてみます。
BoardTile(
index: 1,
age: 21,
stage: '挑戦のはじまり',
label: 'はじめての挑戦',
description: '小さな挑戦を始めました。すぐに結果は出ませんが、未来の自分を少しだけ助けてくれます。',
type: TileType.normal,
),
保存して、画面の表示が変われば成功です。
よくあるエラーと直し方
1. カンマを消してしまった
悪い例です。
label: 'はじめての挑戦'
description: '小さな挑戦を始めました。',
正しくはこちらです。
label: 'はじめての挑戦',
description: '小さな挑戦を始めました。',
各行の最後にカンマが必要です。
2. 文字のクォーテーションを消した
悪い例です。
label: はじめての挑戦,
正しくはこちらです。
label: 'はじめての挑戦',
文字は ' で囲みます。
3. typeの書き方を間違えた
悪い例です。
type: event,
正しくはこちらです。
type: TileType.event,
TileType. を忘れないようにします。
4. priceやrentを文字にしてしまった
悪い例です。
price: '300',
rent: '80',
正しくはこちらです。
price: 300,
rent: 80,
数字は ' で囲みません。
5. indexが重なっている
悪い例です。
BoardTile(index: 2, ...)
BoardTile(index: 2, ...)
同じ番号が2つあると、分かりにくくなります。
基本は、上から順番にします。
0, 1, 2, 3, 4...
この章で覚えること
この章で覚えることは、3つだけです。
1. _createTiles() が人生のマスを作る場所
2. BoardTile が1マス分のデータ
3. 最初は label と description だけ変えると安全
これだけで十分です。
やる気を維持するコツ
人生ゲームは、マスの名前を変えるだけで一気に自分の作品になります。
難しいコードを書かなくても、
初任給
副業
税金
投資
ゴール
を、
入学式
部活動
テスト
文化祭
卒業
に変えれば、学校生活ゲームになります。
まずは小さく変える。
そして、動いたら喜ぶ。
この積み重ねで、自然とコードに慣れていきます。
チェックリスト
□ _createTiles() を見つけた
□ BoardTile が1マス分のデータだと分かった
□ index の意味を確認した
□ age の意味を確認した
□ label の意味を確認した
□ description の意味を確認した
□ type の意味を確認した
□ TileType の種類を確認した
□ label を1つ変更した
□ description を1つ変更した
□ 保存して画面で確認した
まとめ
この章では、人生ゲームのマスを作る場所を確認しました。
マスは _createTiles() の中で、BoardTile として作られています。
label を変えるとマスの名前が変わり、description を変えると説明文が変わります。
最初は、type や index を大きく変えずに、文字だけ変更するのがおすすめです。
次の章では、プレイヤーを作って、名前・色・所持金・現在地を確認していきます。