召喚の呪文をテーマにしたWinFormアプリでオブジェクト指向を学ぶ

2024年8月23日

このチュートリアルでは、召喚の呪文をテーマにしたWinFormアプリを作成し、オブジェクト指向プログラミング(OOP)の基本概念を実際に体験します。学習者は、クラスを使ってオブジェクト(クリーチャー)を生成し、それらのオブジェクトに対してメソッド(攻撃)を呼び出す体験を通じて、OOPの基本を理解できるようになります。

オブジェクト指向についてイメージをつかむ

このチュートリアルに取り組む前に確認しておきましょう

オブジェクト指向の基本概念

まず、オブジェクト指向プログラミングの基本概念について説明します。

  • クラスとオブジェクト: クラスはオブジェクトを生成するための設計図です。オブジェクトはクラスに基づいて生成される実体であり、属性(プロパティ)や動作(メソッド)を持ちます。
  • カプセル化: データとその操作を1つのユニットにまとめることで、データの隠蔽を図ります。
  • 継承: 既存のクラスを基に新しいクラスを作成し、コードの再利用を促進します。
  • ポリモーフィズム: 異なるクラスが同じインターフェースを共有し、それぞれが異なる振る舞いをすることができます。

ステップ 1: 新しいWinFormプロジェクトの作成

  1. Visual Studioを開き、新しいプロジェクトを選択します。
  2. Windows フォーム アプリ (Windows Forms)を選び、プロジェクトに適切な名前を付けます(SummonCreaturesApp:サモン・クリーチャーズ)クリーチャー召喚。
  3. 作成されたプロジェクトを開きます。

ステップ 2: フォームのデザイン

フォーム上に以下のコントロールを追加し、それぞれの名前とテキストを設定します。

  • Label: クリーチャーの名前を表示するラベル(creatureNameLabel)。
  • TextBox: クリーチャーの名前を入力するテキストボックス(creatureNameTextBox)。
  • Button: 召喚ボタン(summonButton)。
  • Button: 攻撃ボタン(attackButton)。
  • ListBox: 召喚されたクリーチャーのリストを表示するリストボックス(creatureListBox)。
  • Label: アクションの結果を表示するラベル(actionResultLabel)。

ステップ 3: クラスの作成

ソリューションエクスプローラーで、新しいクラスファイルを追加し、SummonedCreatureクラスを作成します。

public class SummonedCreature
{
    public string Name { get; set; }
    public int Level { get; set; }

    public SummonedCreature(string name, int level)
    {
        Name = name;
        Level = level;
    }

    public string Attack()
    {
        return $"{Name} がレベル {Level} で攻撃をした!";
    }
}

クラスの説明

  • Name: クリーチャーの名前を表すプロパティです。
  • Level: クリーチャーのレベルを表すプロパティです。
  • Attackメソッド: クリーチャーが攻撃するメッセージを返します。

ステップ 4: 召喚機能の実装

Form1.csに戻り、召喚ボタンのクリックイベントを実装します。

private List<SummonedCreature> summonedCreatures = new List<SummonedCreature>();

private void summonButton_Click(object sender, EventArgs e)
{
    string name = creatureNameTextBox.Text;
    int level = new Random().Next(1, 101); // ランダムにレベルを設定
    SummonedCreature creature = new SummonedCreature(name, level);
    
    summonedCreatures.Add(creature);
    creatureListBox.Items.Add($"{name} (レベル {level})");
    actionResultLabel.Text = $"{name} が召喚されました!";
}

追加された機能

  • List<SummonedCreature> summonedCreatures: 召喚されたクリーチャーを管理するリストです。
  • summonButton_Click: ボタンがクリックされたとき、クリーチャーを召喚しリストに追加します。

ステップ 5: 攻撃機能の実装

攻撃ボタンのクリックイベントを実装します。

private void attackButton_Click(object sender, EventArgs e)
{
    if (creatureListBox.SelectedIndex >= 0)
    {
        SummonedCreature selectedCreature = summonedCreatures[creatureListBox.SelectedIndex];
        actionResultLabel.Text = selectedCreature.Attack();

        creatureNameLabel.Text = $"{selectedCreature.Name}";
    }
    else
    {
        actionResultLabel.Text = "攻撃するクリーチャーを選択してください。";
    }
}

追加された機能

  • エラーハンドリング: 攻撃する前にクリーチャーが選択されているかを確認し、選択されていない場合にエラーメッセージを表示します。

ステップ 6: アプリの実行とテスト

アプリケーションを実行して、召喚の呪文を使ってクリーチャーを召喚し、リストからクリーチャーを選択して攻撃させてみましょう。

応用

このアプリを拡張して、次のような機能を追加することができます。

  • クリーチャーの属性(例: 火、水、風)を追加SummonedCreatureクラスに新しいプロパティを追加します。
  • 複数の攻撃方法Attackメソッドを拡張し、ランダムで異なる攻撃メッセージを返すようにします。
  • クリーチャーの経験値システム: クリーチャーが攻撃するたびにレベルが上がる機能を実装します。

まとめ

このチュートリアルでは、OOPの基本を体験するために、召喚の呪文をテーマにしたWinFormアプリを作成しました。このアプリを通じて、クラスとオブジェクトの関係、メソッドの使い方、そしてエラーハンドリングについて学習することができます。

参考

このチュートリアルを終えた後、チャレンジしてみましょう