오늘의 학습 키워드

Int int.ComareTo(int value), List<T>.Sort(Comparison<T> comparison), Console.ForegroundColor

공부한 내용

목표 : 인벤토리를 내림차순으로 정렬

시도한 것 : List.Sort()와 람다를 사용하여 Int int.CompareTo(int value)로 앞의 int와 뒤의 int를 비교하여 정렬하였다.

문제 : 기본적으로 비교하면 오름차순으로 정렬된다.

해결 : -를 곱하고 반환해 반대로 정렬하게 하였다.(내림차순)

// 아이템 정렬
void ItemSort()
{
    string input = null;
    WriteInventoryInfo();

    input = Console.ReadLine();

    switch (input)
    {
        case "0":
            gameState = GameState.Inventory;
            break;
        case "1":
            inventory.Items.Sort((x, y) =>
            {
                // ComareTo
                // -는 내림차순
                return -x.Info.Name.Length.CompareTo(y.Info.Name.Length);
            });
            break;
        case "2":
            inventory.Items.Sort((x, y) =>
            {
                // ComareTo
                return -x.Info.IsEquiped.CompareTo(y.Info.IsEquiped);
            });
            break;
        case "3":
            inventory.Items.Sort((x, y) =>
            {
                // ComareTo
                return -x.Info.AttackModifier.CompareTo(y.Info.AttackModifier);
            });
            break;
        case "4":
            inventory.Items.Sort((x, y) =>
            {
                // ComareTo
                return -x.Info.DefenseModifier.CompareTo(y.Info.DefenseModifier);
            });
            break;
        default:
            Console.WriteLine("잘못된 입력입니다.\n");
            break;
    }
}

목표 : 콘솔 색 바꾸기

해결 : Console.ForegroundColor = ConsoleColor.Green;을 사용하여 콘솔 색을 초록색으로 바꾸었다.

 

오늘의 회고

 오늘은 상점 구매와 판매, 정렬을 구현하고 줄맞춤 버그를 수정했다. 정렬에서 Comparison을 사용하는데 좀 걸렸지만 int 값을 반환하는 것을 알고 내림차순으로 쉽게 정렬할 수 있었다. 줄 맞춤 버그는 어제부터 시달렸던 과제인데 한글이 2바이트를 먹는다는 것과 한글을 검출해서 공백에 패딩을 한 자리 주는 것으로 해결할 수 있었다.

 내일은 장착 개선, 던전입장, 휴식, 레벨업, 게임 저장을 해볼 생각이다. 이를 내일 제출(오후 6시)까지 구현하는 것은 어려울 수 있지만 최대한 구현해 볼 생각이고 이후로도 이번주 안에는 작업할 생각이다. 내일 열심히 해서 최대한 달성해보자. 내일도 파이팅!

 

 

참고 :

https://developer-talk.tistory.com/220

 

[C#]List 속성별로 정렬

이번 포스팅에서는 C#에서 속성별로 List 객체를 정렬하는 방법을 설명합니다. LINQ OrderBy() 메서드를 사용하여 정렬된 새로운 List를 생성하는 방법이 있으며, 기존 List를 정렬하는 List에 내장된 Sort

developer-talk.tistory.com

 

+ Recent posts