[C#] 10장. C# 패턴일치

1. C#의 시나리오: 마법사의 학교

이번 시간에는 C#의 기능을 사용한 마법사 학교의 신입생캐릭터를 만들어 마법 기술을 배우고, 이를 통해 적들을 물리치고 퀘스트를 완수하는 코드를 짜보겠습니다. C#의 기능은 마법의 힘과 같습니다. 다양한 마법(기능을) 배우고 사용해 문제를 해결합니다. 

  • 예시: Add라는 마법을 배우면, 두 숫자를 더하는 능력을 얻게됨
public class Magic
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}
  • 예시: Fireball 이라는 기술을 배우면, 적에게 볼의 구슬을 날려 피해를 주는 코드
    public void CastFireball()
    {
        Console.WriteLine("Fireball Created!");
    }
  • 예시: 패턴일치를 통해 상황에 맞는 마법을 사용함, switch 문이나 if문을 사용해 적절하게 마법 선택
  public void CastSpeel(string enemyType)
  {
      switch(enemyType)
      {
          case "Goblin":
              CastFireball();
              break;
          case "Dragon":
              // 다른 마법 사용
              break;
          default:
              Console.WriteLine("No Speel available");
              break;
      }
  }
  • 예시: 튜플을 사용해 여러 가지 정보를 묶어 전달하는 마법의 아이템을 정의할 수 있습니다. 여러 정보를 한 번에 사용할 수 있습니다.
 // 아이템의 이름과 가격을 함께 전달
 public (string, int) GetItem()
 {
     return ("Position", 50);
 }
  • 예시: 기타 형식 분배는 복잡한 마법의 조합을 쉽게 사용하는 방법으로, 튜플의 값을 쉽게 분해해 사용할 수 있습니다. 아이템 정보를 분해해 각각의 값을 사용할 수 있습니다.

전체 코드

using System;
public class Magic
{
   public static void Main()
    {
        // 캐릭터 정보 출력 
        string characterName = "마법사";
        int characterLevel = 1;

        Console.WriteLine($"캐릭터 이름: {characterName}");
        Console.WriteLine($"레벨:  {characterLevel}");

        Console.WriteLine("\n배운 마법 기술:");
        CastFireball();
        CastSpell("고블린");

        // 아이템 정보 출력
        var item = GetItem();
        var (itemName, itemPrice) = item; // 튜플 분해
        Console.WriteLine($"\n흭득한 아이템: {itemName}, 가격: {itemPrice}");
    }

    // 마법 기술 메서드
    public static void CastFireball()
    {
        Console.WriteLine("Fireball Created!");
    }

    public static void CastSpell(string enemyType)
    {
        switch(enemyType)
        {
            case "Goblin":
                CastFireball();
                break;
            case "Dragon":
                // 다른 마법 사용
                break;
            default:
                Console.WriteLine("No Speel available");
                break;
        }
    }

    // 아이템의 이름과 가격을 함께 전달

    // 아이템 정보를 분해해 각각의 값을 사용
    public static(string, int) GetItem()
    {
        return ("포션", 50);
    }
}
  • 캐릭터 정보:
    • 캐릭터의 이름과 레벨을 설정해 출력합니다.
  • 마법 기술:
    • CastFireball 이라는 메서드를 호출해 "파이어볼" 마법을 시전하는 메시지를 출력합니다.
    • CastSpell 메서드를 호출해 적의 타입에 따라 다른 마법을 시전합니다.
  • 아이템 정보:
    • GetItem 메서드를 사용해 아이템의 이름과 가격을 튜플로 반환하고, 이를 분해해 각각의 값을 출력합니다.

 

 

GitHub - Koras02/project

Contribute to Koras02/project development by creating an account on GitHub.

github.com

 

LIST