Day34 ウォームアップ(10分)【Unity 橋渡し②:回復と実行順】
第2部:Unity 橋渡し(Day33〜Day35)
※10分の使い方は、「進め方(10分の使い方)」を参照
※生成AIは使いません
※全部できなくてOK
※今日のゴール目安:提出A(問題1が動く)で合格、提出B(1・2)で標準到達、提出C+発展で上位到達
今日の準備(ウォームアップの前に)
- Day34.cs を追加する(ソリューションエクスプローラーで、プロジェクト「MiniPractice」を右クリック → 追加 → クラス → Day34.cs)
- Program.cs を開き、Main 内を
Day33.Run()からDay34.Run()に書き換える
最初に:コードの形を確認
Day33 の Enemy に **Heal(回復)**を足します。Unity でも「ダメージ」「回復」は 別のメソッドとして書くことが多いです。
internal class Day34
{
class Enemy
{
public string Name { get; set; }
public int Hp { get; set; }
public void TakeDamage(int amount)
{
Hp -= amount;
if (Hp < 0)
{
Hp = 0;
}
}
public void Heal(int amount)
{
Hp += amount;
}
public bool IsAlive()
{
return Hp > 0;
}
}
public static void Run()
{
// ここに書く
}
}
Heal…Hpがamountだけ増えます(教材では 上限なしです)- 実行順 … 先に
TakeDamage、あとでHealと、先にHeal、あとでTakeDamageではHpの結果が変わります。問題文の順番どおりに呼び出してください
🔹 出力について(教材共通)
教材では 簡潔な出力例(個数だけ・該当語のみ・数値のみなど)を載せています。条件・数え方・集約が正しければ、ラベル付きで出しても構いません。
🔹 Day33 の振り返り(1分)
TakeDamageでHpが減り、0 未満にはならない- 今日のポイント:
Healを足し、呼び出す順序が結果に効くことを確認する
進め方(10分の使い方)
- 最初の5分:自分の力だけで書いてみましょう。
- 後半5分:過去の自分のコード・教材を見てOKです。
1限の過ごし方(目安)
| 時間(目安) | 内容 |
|---|---|
| 0〜15分 | ウォームアップ |
| 15〜45分 | 学習時間(Slack・スライド・口頭の指示を最優先) |
| 45〜50分 | 振り返りなど |
提出ルール(重要)
- 提出A:問題1だけ / 提出B:問題1・2 / 提出C:問題1・2・3(+発展)
- GitHub:Commit → Push。Slack:「Day34 完了しました」
■ 問題1(基礎)
Enemy を1体、Run() の中で作ってください。
- Name …
"スライム" - Hp …
40
つづけて、つぎの順番どおりに 1回ずつ呼び出してください。
TakeDamage(50)Heal(12)
そのあと、つぎの 2行 を表示してください。
NameHp(教材の例ではTakeDamageで 0 になり、Healで 12 になるので12)
■ 問題2(条件)
次の enemies 配列を用意し、各 Enemy について、つぎの順番どおりに呼び出してください。
1体の Enemy につき、先に 下の1を1回、つづけて 2を1回、という順に呼び出し、同じ要領で 配列の先頭から順に、体を1体ずつ処理してください(全員分の TakeDamage を先にまとめて呼び出さないでください)。
TakeDamage(20)を1回Heal(5)を1回
Enemy[] enemies =
{
new Enemy { Name = "スライム", Hp = 45 },
new Enemy { Name = "ゴブリン", Hp = 12 },
new Enemy { Name = "オーク", Hp = 20 },
};
IsAlive() が true になる Enemy の Name を1行ずつ表示してください。
- 教材のデータでは 3体とも生存(
スライム・ゴブリン・オークの 3行)
■ 問題3(集計)
同じ enemies 配列(問題2と同じ処理のあと)について、IsAlive() が true の 体数を 1行で表示してください。
- 教材のデータでは
3
■ 発展A(余裕がある人)
次の enemies2 について、各 Enemy に対して TakeDamage(15) のあと Heal(4) の順で1回ずつ呼び出してください。
Enemy[] enemies2 =
{
new Enemy { Name = "スライム", Hp = 50 },
new Enemy { Name = "ゴブリン", Hp = 8 },
new Enemy { Name = "オーク", Hp = 22 },
new Enemy { Name = "ボス", Hp = 60 },
};
IsAlive() が true だけを List<Enemy> に入れ、つぎの 順序どおりに表示してください。
- 各
Name(1行ずつ) Hpの合計(1行)Hpの平均(整数割り算、1行)Hpの最大(1行)Hpの最小(1行)
数値の目安:生存は 4体。合計 103、平均 25、最大 49、最小 4。
■ 発展B(発展Aが動いたらチャレンジ)
Enemy に IsHealthy() メソッドを追加してください。
- 戻り値:
bool IsAlive()がtrueかつHpが30以上のときだけtrue
enemies2 の処理のあと、IsHealthy() が true になる Enemy の Name を1行ずつ表示してください。
- 教材の目安:
スライムとボスの 2行(数値は発展Aの処理後のHpに依存します)
⚠️ つまずきやすい点
- 問題1は必ず
TakeDamage→Healの順(問題文どおり) HealはHpを増やすだけ … 上限クリップはしません(教材どおり)
🎯 今日の目的
- 複数メソッドを 順番に呼ぶと状態が変わる、を体感する(Unity の
Start/Updateなど「いつ呼ばれるか」の土台)
次へ
Day35 では Player が Enemy を攻撃する(別インスタンスへメソッド)に進みます。



ディスカッション
コメント一覧
まだ、コメントがありません