과제

Day18 - 인터페이스 일반 과제

qltjfeo55555 2024. 12. 13. 14:11

과제 ) 인터페이스 구현

RPG 게임에 수많은 NPC가 있습니다. 어떤 NPC는 그냥 아무 기능 없이 가끔 랜덤한 시간에 대사를 뱉기도 하고, 특정 NPC는 플레이어와 G와 같은 키로 상호작용을 하여 강화 혹은 창고와 같은 기능을 수행할 수 있습니다.

 

  • NPC 뼈대 클래스 작성
    • 모든 NPC들이 상속받을 추상클래스를 하나 만듭니다.
    • 모든 NPC는 좌표 x를 가지고 있습니다.
    • 모든 NPC는 이름을 가지고 있습니다.
  • 플레이어어와 상호작용 할 수 있는 특정 NPC들이 사용할 인터페이스 제작
    • 이름은 IInteractable을 추천드립니다.
    • 이 인터페이스 속엔 Interact() 메서드를 선언합니다.
    • 추가적인 내용을 담고 싶다면 프로퍼티, 메서드를 더 넣습니다.
  • NPC 구현(모두 위에서 만든 추상클래스 하나를 상속받습니다)
    • 강화 NPC: 플레이어와 상호작용 기능합니다. 상호작용을 수행 시, 강화를 수행한다는 관련 문자열을 출력합니다
    • 창고 NPC: 플레이어와 상호 작용 가능합니다. 상호작용을 수행 시, 창고 상호작용을 수행한다는 문자열을 출력합니다
    • 잡 NPC: 플레이어와 상호 작용은 없습니다. 그냥 존재합니다
    • 추가적으로 원하는 NPC를 자유 구현 합니다.
  •  

 

//뼈대 클래스 
abstract class NPC 
{
    public int posX;
    public string NpcName;
   
}

//인터페이스
interface IInteractable
{
    void Interact();
}

//npc, interface(상호작용) 상속
class FortificationNpc : NPC, IInteractable
{
    public void Interact()
    {
        Console.WriteLine("강화npc");
    }
}

//npc, interface(상호작용) 상속
class WarehouseNpc : NPC, IInteractable
{
    public void Interact()
    {
        Console.WriteLine("창고npc");
    }

}

//npc, 상호작용안함
class JobNpc : NPC
{
    public void Interact()
    {
        Console.WriteLine("잡npc");
    }
    
}
  • 플레이어 구현
    • Player 클래스를 만듭니다.
    • 플레이어는 x좌표를 하나 가지고 있습니다.
    • 플레이어가 여러 NPC와 상호작용할 수 있도록 InteractWithNPC(IInteractable npc) 메서드를 작성하세요.
      • 이 메서드는 전달된 NPC의 **Interact()**를 호출합니다 
  • 검증
    • 메인서 플레이어를 하나 만듭니다.
    • 세 NPC를 만듭니다.
    • 세 NPC를 한 번씩 플레이어의 InteractWithNPC의 인자값으로 넣어보고 가능한지 테스트 해봅니다.
 internal class Player
 {
     int PlayerposX;

     public void InteractWithNPC(IInteractable npc)
     {
         //인터페이스의 함수
         npc.Interact();
     }

 }
 
 //main()
 //{
 ////new 할당
 //Player player = new Player();
 //FortificationNpc fortificationNpc = new FortificationNpc();
 //WarehouseNpc warehouseNpc = new WarehouseNpc();
 //JobNpc jobNpc = new JobNpc();
  
 ////인터페이스 관련 함수출력 
 //player.InteractWithNPC(fortificationNpc);
 //player.InteractWithNPC(warehouseNpc);
 
 //인터페이스 상속 안해서 인터페이스 관련된건 안됌
 //player.InteractWithNPC(jobNpc);
 //}

결과값

 

인터페이스를 상속 한 클래스는 잘 나오는데 상속 하지 않는 클래스는 안나오는걸 확인했다.

 

 

 

 

 

 

https://record5555.tistory.com/27

 

Day18 - 인터페이스 심화

https://record5555.tistory.com/26 Day18 - 인터페이스 일반 과제과제 ) 인터페이스 구현RPG 게임에 수많은 NPC가 있습니다. 어떤 NPC는 그냥 아무 기능 없이 가끔 랜덤한 시간에 대사를 뱉기도 하고, 특정 NPC

record5555.tistory.com