![4일차. 인벤토리 List 활용 & 스테이지 진행](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbUHse%2Fbtsz124f0Y2%2FrqbEfTPnLWKa1fCfWUcl5k%2Fimg.png)
4일차. 인벤토리 List 활용 & 스테이지 진행C#/텍스트 게임 "Shelter"2023. 11. 9. 19:41
Table of Contents
📌 인벤토리 List 활용
- List를 활용한 인벤토리 아이템 타입 추가 및 정렬 기능 추가
🔧 ToList
List<IItem> screenInventory = Inventory.ToList();
- Screen에 보여줄 용도로 List 값 복사
- List<T>는 참조 형식이다. 단순히 List1 = List2 와 같은 형식으로 대입하면 List2의 주소값만 List1에 대입되어 List1의 값이 변경되었을 때 List2의 값도 변경된다.
- ToList()를 사용하면 참조하지 않고 값만 복사 할 수 있다.
🔧 OrderBy, OrderByDescending
// 아이템 이름 오름차순 정렬 (ㄱㄴㄷ 순서)
screenInventory = Inventory.OrderBy(item => item.Name).ToList();
// 아이템 가격 내림차순 정렬 (비싼 가격 부터 시작)
screenInventory = Inventory.OrderByDescending(item => item.Price).ToList();
// 아이템 타입 오름차순 정렬
screenInventory = Inventory.OrderBy(item => item.ItemType).ToList();
- LINQ의 메서드 OrderBy를 통해 List 에서 추출된 값 정렬한다.
- 메서드 안에 정렬하고자 하는 프로퍼티를 작성하고 내림차순으로 정렬하고 싶으면 Descending 키워드를 명시한다.
🔧 Where
List<IItem> equipItemList = Inventory.Where(item => item.ItemType.TypeToString() == "장비").ToList();
- LINQ의 메서드 Where를 통해 조건자에 따라 값의 시퀀스를 필터링한다.
- Inventory 리스트에는 여러 타입 아이템이 들어가 있는데, 아이템 타입 구분 조건으로 장비 아이템만 뽑아낸다.
📌 스테이지 진행
📄 IStage.cs
// 스테이지 타입
public enum StageType
{
Battle,
Event,
Shop,
}
public interface IStage
{
public StageType StageType { get; }
public string Name { get; }
public string Desc { get; }
}
- Stage 인터페이스를 통해 전투, 이벤트, 상점등 자식클래스로 구체화 시킨다.
public static IStage[] Stages =
{
new StageBattle("스테이지 1", "첫번째 전투입니다."),
new StageEvent("스테이지 2", "첫번째 이벤트입니다."),
new StageBattle("스테이지 3", "두번째 전투입니다."),
new StageShop("상점", "첫번째 전투입니다."),
new StageEvent("스테이지 4", "두번째 이벤트입니다."),
new StageBattle("스테이지 5", "마지막 전투입니다.")
};
- 게임을 관리하는 Game.cs에서 배열화된 스테이지를 순서대로 호출하여 간단하게 게임진행을 할 수 있도록 구현
'C# > 텍스트 게임 "Shelter"' 카테고리의 다른 글
6일차. 게임 화면 꾸미기 (1) | 2023.11.13 |
---|---|
5일차. 상점 시스템 구현 (0) | 2023.11.10 |
3일차. 스크린 관리 (0) | 2023.11.08 |
2일차. 장비 관리 기능 구현 (0) | 2023.11.07 |
1일차. 텍스트 게임 "Shelter" 스타트 (0) | 2023.11.06 |