과제

Day18 - 인터페이스 심화

qltjfeo55555 2024. 12. 17. 14:15

https://record5555.tistory.com/26

 

Day18 - 인터페이스 일반 과제

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

record5555.tistory.com

 

심화 과제) 근거리에 있을때만 상호 작용 가능하게 구현

플레이어는 상호작용 가능한 모든 NPC들과, 언제나 소통할 수 있는 건 아닙니다. 거리가 가까울때만 상호작용이 가능합니다. 이를 구현하기 위해 필요한 다양한 필드, 메서드, 프로퍼티등을 구현합니다.

  • 메인서 다양한 종류의 NPC 를 만들고, 모든 NPC를 담은 NPC 배열을 하나 만듭니다
  • 플레이어에게 ShowInteractable 이라는 메서드를 만들고 인자로 모든 NPC가 들어있는 배열을 받습니다.
    • 이 함수가 실행되면 플레이어와의 거리가 5 미만인 NPC들 중, 상호작용 가능한 NPC의 이름을 전부 출력하는 기능을 작성하세요.
  • 플레이어 초기 x값은 5로 하고, NPC 중 하나는 x좌표가 3, 또 다른 하나는 x 좌표가 7, 또 다른 하나는 x가 12 등등 다양한 위치에 상호작용, 불가능한 npc를 두고 테스트 하는 코드를 작성합니다.

 

 internal class Player
 {
     //플레이와 각npc차이가 5이하면 출력
     //절댓값 기능 사용, Math.Abs
     public void ShowInteractable(NPC[] totalnpc)
     {
         for (int i = 0; i < totalnpc.Length; i++)
         {
             //절댓값(npc위치-player위치)<5
             if (Math.Abs(totalnpc[i].posX- PlayerposX)<5)
             {
                 Console.Write(totalnpc[i].NpcName + " ");
                 Console.WriteLine(totalnpc[i].posX);
             }
         }
     }
 }
 
 
//main()
//{
//new 할당
//Player player = new Player();
//FortificationNpc fortificationNpc = new FortificationNpc();
//WarehouseNpc warehouseNpc = new WarehouseNpc();
//JobNpc jobNpc = new JobNpc();

////클래스 배열 생성
//NPC[] TotalNpc = new NPC[3];

//값 대입
//TotalNpc[0] = fortificationNpc;
//TotalNpc[1] = warehouseNpc;
//TotalNpc[2] = jobNpc;

//fortificationNpc.posX = 3;
//fortificationNpc.NpcName = "강화npc";
//warehouseNpc.posX = 12;
//warehouseNpc.NpcName = "창고npc";
//jobNpc.posX = 1;
//jobNpc.NpcName = "잡npc";

//거리가 5이하면 출력
//player.ShowInteractable(TotalNpc);
//}

절댓값 Math.Abs()

등록된 기능 Math.Abs 사용 했다. 괄호 안에 값이 음수인지 정수인지 관련 없이 절대 값으로 반환한다.

 //Math.Abs()내장 되어 있는 기능
 public static int Abs(int value)
 {
     if (value >= 0)
     {
         return value;
     }

     return AbsHelper(value);
 }

 private static int AbsHelper(int value)
 {
     if (value == int.MinValue)
     {
         throw new OverflowException(Environment.GetResourceString("Overflow_NegateTwosCompNum"));
     }

     return -value;
 }

 

 

끝으로 결과적으로 거리가 5 이상들은 출력이 안돼는 모습이다.

 

 

 

 

 

 

'과제' 카테고리의 다른 글

Day21 - Linked List(연결 리스트) 과제  (1) 2024.12.18
Day19 - 큐, 리스트 심화  (0) 2024.12.17
Day18 - 인터페이스 일반 과제  (0) 2024.12.13
Day17 - 상속,추상 class  (0) 2024.12.12
Day16 - static 심화  (0) 2024.12.12