- [ C# ]C# #12 TextRPG 42023-08-22 20:46:25변경점 [인벤토리 클래스] 두개로 쓸대없이 나누어져있던 인벤토리 아이템을 보여주는 메서드를 하나로 통합했다. bool형 매개변수를 선언하여 참일때만 아이템 목록 앞에 숫자가 보여지며 인벤토리-장착관리 창에서 호출된다. 외부 라이브러리인 ConsoleTables를 가져와 사용하였다. 이는 쉽게 표 형태를 그려주는 역할을 한다. 각 아이템 별 이름, 효과, 설명을 AddRow을 통해 바로 행 요소에 집어 넣을 수 있다. 이를 통해 더 깔끔한 인벤토리 인터페이스를 구성할 수 있었다. [게임 매니저 클래스] 출력되는 특정한 텍스트의 색상을 변경하였으며, 특정한 동작을 할 때 삡소리가 나오는 기능을 추가하였다. Console.ForegroundColor 메서드와 ConsoleColor.# 메서드를 활용하여 다음에..
- [ C# ]C# #11 TextRPG 32023-08-21 20:38:05변경점 [아이템 클래스] 아이템 정보를 저장하는 새로운 클래스, Item 클래스를 만들었다. 아이템명, 설명, 추가 수치(추가 공격력, 추가방어력)를 기본적인 매개변수로 가지고 있다. 그리고 기존 Inventory 클래스에서 리스트로 관리하던 장착 여부 리스트를 없애고 새로운 클래스의 bool형 매개변수로 선언하였다. [인벤토리 클래스] 이제 Inventory 클래스에서는 Item 클래스의 정보들을 가지고 있는 아이템 리스트를 만든 후에 생성자에서 값들을 할당해야한다. 또한 장착 사인 [E]는 Item 클래스의 bool형 변수 isEquipped에 의해 관리된다. ChangeEquip 메서드에서 또한 isEquipped에 의해 아이템의 장착 상태를 변경할 수 있으며 아이템이 장착 상태인 경우, 공격력/방..
- [ C# ]C# #10 TextRPG 22023-08-20 23:21:30변경점 사용자 입력 처리를 개선하였다. 입력값 검사 메서드는 유효한 입력값의 범위를 두 매개변수를 통해 외부에서 지정할 수있다. 게임 내에서는 정수형 입력값만을 받기 때문에 사용자가 실제 입력한 값을 정수로 변환한다. 그리고, 입력된 문자열이 정수로 변환되면, 프로그램은 이 숫자를 사용하여 조건문을 실행한다. 입력값이 정수로 변환될 수 있는지를 확인하고 변환이 가능한 경우에만 유효한 입력으로 판단한다. 또한, 매개변수에서 지정한 범위 내에서의 정수만 유효한 입력으로 판단한다. 아이템 정보와 장착 시스템을 관리하는 인벤토리 클래스를 만들었다. 아이템들을 저장하는 문자열 리스트 items와 아이템 장착 상태를 저장하는 bool 리스트 equip을 선언하였고 값을 추가하였다. 아이템을 출력하는 루프마다 equ..
- [ C# ]C# #9 알고리즘 기초 22023-08-19 20:04:25선택정렬(Selection Sort) 선택정렬은 가장 작은/큰 데이터를 맨 앞으로 순서대로 이동시켜 정렬시키는 알고리즘이다. 첫 번째 루프에서, 첫 번째 인덱스의 값(data[0])과 나머지 인덱스의 값들과 비교하여 가장 작은 값을 첫 번째 인덱스의 값과 교환한다. 두 번째 루프에서, 두 번째 인덱스의 값(data[0+1])과 나머지 인덱스의 값들과 비교하여 가장 작은 값을 두 번째 값과 교환한다.(첫 번째 값은 제외) 이런 방식으로 배열 길이 만큼 루프 반복을 하여 순서대로 데이터를 정렬시킨다. SWAP 코드: 두 변수를 바꾸려면 기존의 값을 저장하는 변수(temp)가 하나 더 필요하다. //Input int[] data = { 3, 2, 1, 4, 5 }; int N = data.Length; //의..
- [ C# ]C# #8 TextRPG 12023-08-18 20:55:33개요 개인 과제인 C# 콘솔 텍스트 RPG게임이다. 일단 필수 구현 부분에서의 뼈대와 클래스 설계를 진행하였는데 로직 자체에 문제가 많고 효율성이 떨어져서 버그가 많이 발생하기 때문에 입력처리 관련 기능은 전부 없애고 다시 최적화하여 작성할 예정이다. 초기 기본 클래스는 다음과 같이 크게 3 부분으로 나눌 예정이다. 캐릭터 클래스: 플레이어의 기본 속성과 행동을 정의. 레벨, 체력, 공격력, 방어력, 이름, 직업.. 레벨업, 경험치 획득 등과 관련된 메서드 아이템 클래스: 게임 매 아이템들의 이름, 설명, 효과(방어력 증가, 공격력 증가) 정의. 게임 매니저 클래스: 게임의 진행, 화면 표시, 사용자 입출력 처리 등. 코드 namespace TextRPG { internal class GameManage..
- [ C# ]C# #7 스네이크 게임2023-08-18 13:55:00개요 3주차 과제 중 스네이크 게임이다. 초기 게임 구조 설계와 각 클래스별 생성자를 구현하는 부분은 완료하였지만 세부적인 메서드를 작성하는 것이 감이 잡히지 않아서 풀이 코드를 참조하면서 작업을 진행하였다. 그 후 모든 코드를 해석하고 이해하는 과정을 주석으로 남기는 것으로 마무리하였다. 설명 Main 메서드: 프로그램의 시작점이다. 뱀과 음식의 생성, 게임 실행 및 초기화, 충돌체크, 게임 오버 등을 제어. DrawWalls 메서드: 게임의 벽을 그리는 역할. WriteGameover 메서드: 게임 오버 메시지를 출력. WriteText 메서드: 텍스트를 지정된 위치에 출력. 키 입력처리: Console.KeyAvaiable()을 통해 사용자의 키 입력 여부를 확인하고 Console.ReadKey()..
- [ C# ]C# #6 알고리즘 기초2023-08-17 21:09:32오늘은 프로그래머스 알고리즘 문제와 3주차 과제를 진행하려고 계획했다. 하지만 기본적인 기초 개념들이 잘 잡히지 않아서 많은 시간을 고민에 투자하여도 막히는 부분이 다수 있었다. 그래서 배운 내용을 토대로 기본 문법만을 사용하여 구현할 수 있는 정말 기초적인 알고리즘을 스스로 짜보았다. 합계(SUM) //Input int[] scores = { 100, 75, 50, 37, 90, 95 }; int sum = 0; //Process: SUM for(int i = 0; scores.Length; i++} { if( scores[i] > 80) { sum += scores[i] } } //Output Console.WriteLine($"{scores.Length}명의 점수 중 80점 이상의 총합: {sum}..
- [ C# ]C# #5 클래스, 객체, 상속, 다형성2023-08-16 19:35:43클래스와 객체 데이터와 데이터를 조작하는 메서드를 묶어서 하나의 단위로 정의하는 객체 생성을 위한 일종의 설계도. 클래스는 속성(멤버 변수, 필드)과 동작(메서드)을 가짐. //클래스의 구조 [접근 제한자] class ClassName { // 필드 (클래스의 데이터) // 메서드 (클래스의 동작) } 객체 : 객체는 클래스를 기반으로 생성된 모든 것. 인스턴스 : 클래스를 기반으로 생성된 실제 객체. "클래스명 식별자 = new 클래스명();" 을 통해 객체 생성(메모리 공간을 할당 받음) 필드(Fields) : 클래스나 구조체 내에서 객체의 상태(데이터)를 저장하는 변수. 메서드(Methods) : 클래스나 구조체 내에서 객체의 동작(기능)을 정의하는 함수. class Person { //필드 pub..