본문 바로가기

게임 개발 일지92

Delegate를 이용한 CallBack 함수 만들기 / LINQ 사용법 C# 문법 복습 delegate // 델리게이트 선언 public delegate void EnemyAttackHandler(float damage); // 적 클래스 public class Enemy { // 공격 이벤트 public event EnemyAttackHandler OnAttack; // 적의 공격 메서드 public void Attack(float damage) { // 이벤트 호출 OnAttack?.Invoke(damage); // null 조건부 연산자 // null 참조가 아닌 경우에만 멤버에 접근하거나 메서드를 호출 } } // 플레이어 클래스 public class Player { // 플레이어가 받은 데미지 처리 메서드 public void HandleDamage(float d.. 2023. 11. 14.
TextRPG - 텍스트 색상 변경 / CheckValidInput C# 스크립트를 이용해 콘솔 RPG 게임 만들기 텍스트 색상 변경 함수 콘솔을 실행했을 때 WriteLine 단위로 색상을 변경하기 위해 보통 아래와 같은 코드를 사용한다. Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("1. 인벤토리"); Console.ResetColor(); 만약 RPG 게임처럼 매 장면마다 색상 변환이 필요한 상황에서 위와 같은 코드를 계속 사용하는 것은 개발자도 불편하고, 스크립트도 더 무거워진다. 이 때, 색상변환에 필요한 코드를 함수로 만든다면 코드 입력을 효율적으로 할 수 있다. private static void ShowHighlightedText(string text) { Console.Foregroun.. 2023. 11. 13.
TextRPG - 인벤토리 생성 C# 스크립트를 이용해 콘솔 rpg 게임 만들기. 필수 과제 3가지 1) 인벤토리에 아이템을 띄우기 2) 장착관리 누르면 장착관리 페이지로 넘어가기 3) 장착한 아이템 E 표시하고 캐릭터 스탯에 반영하기 2~3주차 강의자료를 보면서 어떤 코드를 활용할 수 있을 지 생각했다. 인벤토리 생성 foreach 문 int[] itemID = { 0, 1, 2, 3 }; foreach (int itemID in ItemInfo) { Console.WriteLine(item); } Item 클래스에 아이템 정보 (ItemId, ItemName, ItemAtk, ItemDef, ItemComm)를 입력하고 foreach 문을 통해 ItemId 를 불러와 해당 번호에 맞는 아이템의 정보를 출력하기. DisplayInve.. 2023. 11. 10.
같은 스크립트에서 하나의 솔루션만 작동시키기 같은 프로젝트 내 게임이 여러 개일 때 하나만 플레이하기 같은 프로젝트 안에 2개 이상의 게임 script를 만든 경우 디버깅을 하면 Main이 하나가 아니라며 오류가 떴었다. 그럴 때마다 실행하고자 하는 script를 제외한 나머지를 모두 ctrl+K+C를 사용해 주석처리 했는데.. 무척 번거로웠다. 때마침 오늘 발표 시간에 동기분께서 보다 깔끔하게 script를 디버깅하는 방법을 알려주셨다. (무한 감사😊) 1) Program 스크립트 만들기 (Main 제어 역할) Program 이라는 script를 새로 만들어 이곳에서만 Main을 제어하도록 한다. (따라서 기존 게임 script 에 들어있던 모든 Main 을 수정해야 한다.) Main 안에는 Script명.Start(게임명) 형식으로 코드를 작성.. 2023. 11. 9.
C# 콘솔 - Snake 게임 만들기 C# 문법 종합반 3주차 강의를 듣고 3주차 과제를 만들었다. 클래스와 변수명 등은 과제의 샘플코드를 참고했다. 각 변수를 움직이게 하는 주요 로직에 대해 계속 공부했다. (함수 해석하기) Snake (뱀과 먹이 게임) Problem 1 게임 시작 시 뱀이 움직이지 않고 바로 GAME OVER 되는 현상 원인은 Snake 메서드의 Direction 설정 오류이다. // Snake.cs public class Snake { public List body; public Direction direction; public Snake(Point tail, int length, Direction _direction) { direction = _direction; body = new List(); for (int i.. 2023. 11. 8.
조건문의 이해 / 배열과 리스트 주요 학습 키워드 1. for문과 while문의 차이 for 문과 while문이 수행하는 내용은 같다. 개발자는 코드의 흐름에 따라 어떤 반복문을 사용할지 선택할 수 있다. 1) for 문은 반복 횟수가 직관적으로 보일 때 사용하며, 반복 조건을 한 눈에 확인할 수 있어 가독성이 좋다. 2) while 문은 반복 조건이 뚜렷하게 보일 때 사용하며, 반복 조건에 따라 조건문의 실행 횟수가 달라질 수 있고 for 문에 비해 더 간결한 코드를 만들 수 있다. 2. 배열 배열을 이용해 코드에서 동일한 데이터 유형을 갖는 요소를 한 번에 모아 관리할 수 있다. int[] array1 = new int[5]; // 크기가 5인 int형 배열 선언 string[] array2 = new strin.. 2023. 11. 7.