분류 전체보기 203

C#으로 만드는 텍스트 Rpg (8)

미션 7: 예외 처리와 에러 로그목표: 예외 처리를 활용하여 안전한 게임 로직을 구현한다.미션:아이템 사용 시, 아이템이 없으면 적절한 예외 메시지를 출력해라.예외가 발생했을 때 에러 로그를 파일로 저장하는 코드를 작성해라. 마지막 미션이다. 예외처리를 해보고 에러 로그를 파일에 저장하는 것이다 . // ItemManagerpublic void LogError(Exception ex){ string logMessage = $"[{DateTime.Now}] 예외 발생: {ex.Message}\n{ex.StackTrace}\n"; File.AppendAllText("error_log3.txt", logMessage); Console.WriteLine("오류가 발생했습니다. 로그 파일을 확인하..

텍스트 Rpg - C# 2025.02.06

C#으로 만드는 텍스트 Rpg (7)

미션 6: 리플렉션을 활용한 동적 속성 접근목표: 리플렉션을 활용해 클래스의 정보를 탐색하고 동적으로 조작한다.미션:Player 클래스의 모든 프로퍼티와 값을 출력하는 리플렉션 코드를 작성해라.리플렉션을 활용해 Player 클래스의 체력 값을 동적으로 수정하는 코드를 작성해라.  미션6을 해결했다. 리플렉션이라는 기능을 사용해보는 것에 초점을 맞췄다. 그래서 텍스트 rpg에 필요한 기능이라기보다는리플렉션을 사용해볼 함수를 하나 만들었다.  이 리플렉션이라는 기능이 툴을 만들 때 아주 유용하게 사용되고 유니티에서는 플러그인이나 이벤트 시스템 좀 더 유연한 옵저버패턴을 만드는데 사용된다는데 아직 잘 모르겠다.  우선 리플렉션이란 컴파일타임이 아닌 런타임에 클래스의 프로퍼티, 필드, 함수 등이 뭐가 있는지 접..

텍스트 Rpg - C# 2025.02.06

C#으로 만드는 텍스트 Rpg (6)

미션 5: 람다와 LINQ목표: 람다와 LINQ를 활용해 데이터를 효율적으로 처리한다.미션:몬스터 리스트에서 체력이 가장 낮은 몬스터를 람다와 LINQ로 찾아라.아이템 리스트에서 체력 회복 아이템만 추출하는 코드를 작성해라.  LINQ는 C#에서 지원하는 sql언어 같은 것이다. 컬렉션이나 json등 여러가지 데이터에서 사용하여 데이터를 가공할 수 있는 아주 편리한 기능이다.  사용법은 sql 처럼 where, orderby, select 등을 사용할 수도 있고, 함수를 사용할 수도 있다.  이번 미션에서는 함수로 사용했다. // GameManager.cspublic List monsters;public List FindHalfHpMonster(){ return monsters?.Where(n =..

텍스트 Rpg - C# 2025.02.05

C#으로 만드는 텍스트 Rpg (5)

이번에는 기존 미션 계획 중간에 미션 4이후, 아이템 시스템에 대한 리팩토링 및 자동화 기능을 추가했다.  델리게이트를 이용해 아이템 사용시 이벤트를 발생시킬 수 있게했다. 또한 플레이어와 몬스터에도 델리게이트를 적용시켜 전투 시, 이벤트를 발생시킬 수 있도록 하였다.  아이템 시스템 자동화부분은 json 파일을 읽어와 각 아이템 클래스의 값들을 초기화하는 것이다.하드코딩되었던 부분을 json에서 읽어오도록 바꾸었다.  //public delegate void OnDead();public event Action OnDeadEvent;//public delegate void OnAttack();public event Action OnAttackEvent;플레이어와 몬스터 클래스에 모두 Action 델리케이..

텍스트 Rpg - C# 2025.02.05

C#으로 만드는 텍스트 Rpg (4)

미션4를 해결했다. 간단하게 공격과 죽었을 때의 이벤트가 발생하게끔 구현했다. 문법의 개념과 사용법 자체는 어렵지 않은 것 같다. 어떻게 설계에 사용되는지 익히면 될 것 같다. 여기선 간단하게 문장출력으로 구현했다.유니티에서는 여러가지 로직이 추가될 것 같다.  미션 4: 델리게이트와 이벤트목표: 델리게이트와 이벤트를 활용하여 게임의 상태를 관리한다.미션:체력이 0 이하가 되면 "게임 오버" 이벤트를 발생시키는 델리게이트와 이벤트를 만들어라.플레이어가 공격할 때 "공격 이벤트"를 발생시키고, 콘솔에 공격 메시지를 출력해라.몬스터가 죽으면 "몬스터 처치 이벤트"를 발생시켜라. 처음엔 delegate를 직접 커스텀해서 event를 각 player와 monster에 만들었는데, 이걸 IGameInterface..

텍스트 Rpg - C# 2025.02.03

C#으로 만드는 텍스트 Rpg (3)

세번째 미션을 해결했다. 제네릭과 인터페이스를 써보는건데, List 타입을이용해서 제너릭을 사용하고 플레이어와 몬스터에서 반드시 필요한 변수들에 대한 인터페이스를 만들었다.  미션 3: 제네릭과 인터페이스목표: Generic과 Interface를 활용하여 재사용 가능한 코드를 작성한다.미션:IGameCharacter 인터페이스를 만들고, 이름, 체력, 공격력 프로퍼티를 정의해라.Player와 Monster 클래스가 이 인터페이스를 구현하도록 수정해라.제네릭 리스트를 사용해 여러 몬스터를 관리하고, 플레이어가 몬스터를 선택적으로 공격할 수 있는 코드를 작성해라. 1. GameManager에서 몬스터를 배열로 Monster[] 로 관리한던걸 List 로 바꿨다. -> 고정된 배열대신 List를 사용. 2. ..

텍스트 Rpg - C# 2025.02.01

C#으로 만드는 텍스트 RPG (2)

두번 째 미션을 해결했다. 이번에도 우선 구현하는데 초점을 뒀고 어떻게하면 더 효율적인지 고민해봤다. 그럼에도 개선점이 있어보이지만 앞으로 유니티로 발전시키면서 개선해나갈 생각이다. 아이템기능을 추가하는 미션이었는데 리스트와 딕셔너리를 활용해 인벤토리, 아이템을 관리하는 기능을만드는 것이었다.  미션 2: 리스트와 딕셔너리를 활용한 아이템목표: List와 Dictionary를 활용해 데이터를 관리한다.미션:Item 클래스를 만들고, 이름과 효과를 프로퍼티로 추가해라.플레이어의 인벤토리를 관리하는 List을 생성해라.아이템 사용 상태를 출력하는 코드를 작성해라. 아이템 4가지의 기획이다. 아이템 종류 기획1. 체력 회복 물약이름: 생명의 물약효과: 플레이어의 체력을 50 회복.설명: "마시자마자 체내에서 ..

텍스트 Rpg - C# 2025.01.31

C#으로 만드는 텍스트 RPG (1)

먼저 첫번째 미션을 해결했다.우선 플레이가 가능하게 구현하는데에 초점을 맞췄다. 앞으로 미션을 해나가면서 개선해나갈 것이다.  미션 1: 기본 구조와 클래스 설계목표: 클래스와 객체를 사용하여 기본 게임 구조를 설계한다.미션:Player 클래스에 이름, 레벨, 체력, 공격력을 프로퍼티로 추가하고, Attack 메서드를 만들어라.Monster 클래스에 이름, 체력, 공격력을 추가하고, TakeDamage 메서드를 만들어라.플레이어와 몬스터가 서로 공격하며 체력을 깎는 간단한 로직을 작성해라. 첫번째 미션은 게임의 기본로직을 만드는 것이다.  public class Player{ int _hp=100; int _exp = 0; public string Name { get; set; } ..

텍스트 Rpg - C# 2025.01.25

C#으로 만드는 텍스트 Rpg (0)

우선 이 프로젝트는 C# 강의를 듣고 C#문법에 대해 이해해보고 사용해보고자 시작하는 프로젝트이다. 기획은 chatgpt를 이용했다. 어떤 기능을 넣을지, 내용과 텍스트는 어떻게할지, 단계별로 어떤 기능을 구현할지지, 그리고 그 기능을 어떤 문법이나 특성을 활용하여 만들지 등을 조언받았다.  이 프로젝트의 목적은 오직 C#의 특성, 문법등을 직접 사용해서 게임에 적용해보고 이해하는데 있다. 또한 단계별로 직접코드 작성 후, gpt가 알려주는 테스트방식을 사용해볼 예정이다.  이후, 유니티로 기능을 옮기고 유니티에 맞게 조금씩 바꿔가며 유니티문법과 기능도 익히면서 텍스트 rpg에 Ui 등을 넣고 좀 더 게임답게 만들어볼 생각이다. 그 중, 첫 단계인 콘솔로 텍스트 rpg 기능을 구현해보려 한다.  우선 마..

텍스트 Rpg - C# 2025.01.24