📌 키 조작 캐릭터 생성을 제외하고는 번호로 입력 받지않고 키보드 조작으로 해결을 하려한다. 기본적인 씬들 (상태, 인벤토리) 에서는 단 보기만 하고 나가면 되는 간단한 기능을 구현 장비 관리창은 장비를 보는 기본 상태와 장착하는 관리 상태로 단계를 구분
📌 팀 프로젝트 개인 과제를 마치고, 일주일 간 팀 프로젝트로 같이 협업하는 기간을 주었다 그런데 나는 다음주에 동원 훈련이 예정돼 있어, 3일에 시간안에 필수 기능을 구현해야 한다. 📌 캐릭터 생성 📄 CreateCharacterScene.cs // 캐릭터 생성 씬 public class CreateCharacterScene : Scene { // 단계별 캐릭 생성 private enum CreateStep { Name, Job, Exit } private CreateStep currentStep = CreateStep.Name; // 현 단계 private string errorMessage = string.Empty; // 에러 메세지 private string createName = string...
📌 게임 마무리 일주일간 구현하면서 부족한 부분 마무리 하기 📌 구현 목록 🔧 장비 장착 시 스탯 반영 // 스탯 타입 public enum StatType { ATK, DEF, ACC, EVA, None, } // 장비 장착 시, 스탯 추가 private void AddStat(StatType statType, int stat) { switch (statType) { case StatType.ATK: Game.Player.Atk += stat; break; case StatType.DEF: Game.Player.Def += stat; break; case StatType.ACC: Game.Player.Acc += stat; break; case StatType.EVA: Game.Player.Eva +=..
📌 게임 화면 꾸미기 콘솔 화면 크기를 조정하여 게임 사이즈를 고정한다. 고정된 게임 사이즈 내에서, 출력되는 글자 위치를 정렬한다. 그리고 플레이어가 보는 메인 화면과 상태이상을 나타내는 사이드 화면을 구현한다. 📌 구현 목록 📄 Renderer.cs // 콘솔 화면 출력 클래스 public static class Renderer { private static int width; private static int sideWidth; private static int height; public static void Initialize() { Title = "SHELTER"; ForegroundColor = ConsoleColor.White; Clear(); CursorVisible = false; wid..
📌 상점 시스템 구현 상품 리스트를 생성하고, 해당 상품을 플레이어 인벤토리에 다시 관리할 수 있는 기능 구현 🔧 Buy // 상품 리스트 복사 public static List productLists = Game.ShopProducts.ToList(); // 상품 구매 static void Buy() { var item = productLists[currentItemIdx]; if (item == null || item.IsEmptyItem()) return; // Bool 체크를 통해 상품 구매 if (Game.player.IsTrade(item.Price)) { Game.player.Inventory.Add(item); productLists.Remove(item); } } Game.cs에서 선언한..
📌 인벤토리 List 활용 List를 활용한 인벤토리 아이템 타입 추가 및 정렬 기능 추가 🔧 ToList List screenInventory = Inventory.ToList(); Screen에 보여줄 용도로 List 값 복사 List는 참조 형식이다. 단순히 List1 = List2 와 같은 형식으로 대입하면 List2의 주소값만 List1에 대입되어 List1의 값이 변경되었을 때 List2의 값도 변경된다. ToList()를 사용하면 참조하지 않고 값만 복사 할 수 있다. 🔧 OrderBy, OrderByDescending // 아이템 이름 오름차순 정렬 (ㄱㄴㄷ 순서) screenInventory = Inventory.OrderBy(item => item.Name).ToList(); // 아이..
📌 준비 로비, 메인, 인벤토리, 장비관리 등등, 앞으로 화면을 출력하고 제어할 클래스 구현 📌 개발 📄 ScreenManager.cs public class ScreenManager { // 스크린 타입에 맞게 화면 출력 public void DisplayScreen(ScreenType screenType) { IScreen screen = screenType switch { ScreenType.Main => new ScreenMain(), ScreenType.MyInfo => new ScreenMyInfo(), ScreenType.Inventory => new ScreenInventory(), ScreenType.Equipment => new ScreenEquipment(), _ => new Scre..
📌 준비 상단 와이어프레임을 기준으로 Character.cs 에서 아이템 리스트와 장비관리 클래스를 추가하여, 장비 관리 기능을 만들려고 한다. 보유중인 아이템 목록 보여주기 장착중인 아이템 따로 표시 보여주기 각 타입별로 하나의 아이템만 장착가능 📌 개발 📄 Equipment.cs // 장비 슬롯 타입 열거형 public enum EquipSlot { Weapon, Armor, } // 플레이어 장비 관리 클래스 public class Equipment { // Key : 장비 슬롯, Data : 해당 장비 아이템 private Dictionary equipped = new(); // 클래스 생성자 public Equipment() { var slots = Enum.GetValues(); foreach..
1. 개요 포스트 아포칼립스 분위기 장르로, 황폐한 세계의 안전한 장소인 "Shelter" 를 찾아가는 간단한 텍스트 게임 만들기 2. 개발 진행 - 로비 화면 (로비 디자인) HTML 삽입 미리보기할 수 없는 소스 상단 사이트에서 내가 원하는 디자인의 로비 타이틀을 뽑아오고, 프로젝트의 글로벌 변수들을 모아놓을 클래스를 정의한다. 📄Globals.cs // 전역 변수 모음 클래스 public static class Globals { // 로비 타이틀 아스키 아트 public const string LobbyTitle = @" _____ _ _ ______ _ _______ ______ _____ / ____| | | | | | ____| | | |__ __| | ____| | __ \ | (___ | ..