- [ C# ]C# #21 TextRPG_Team 12023-08-28 21:09:20진행상황 필수 요구 사항 3번, 전투 시스템을 담당하게 되었다. 공격력 랜덤 배율 등의 생각보다 디테일하게 신경써야할 요소들이 있었다. 두 개의 클래스를 추가하게 되었으며 하나는 몬스터의 기본 정보들을 담고있는 Monster 클래스이다. 아이템이 추가되는 방식과 비슷하게 Program 클래스에서 몬스터 정보를 세팅할 수 있다. Program 클래스 내의 DisplayBattle과 DisplayBattleStart 메서드를 통해 전투 화면을 출력하였다. 이 부분에서 신경써야 할 사항은 몬스터의 숫자와 종류의 랜덤 생성이었다. 새 리스트를 만들고 랜덤의 몬스터를 선택 후 랜덤의 인덱스의 요소를 추가하는 방식으로 구현하였다. 전투를 관리하는 BattleManager 클래스는 우선 생성자를 통해 전투에 꼭 필요..
- [ C# ]C# #20 알고리즘 코드카타 12023-08-27 23:27:49짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. num을 2로 나눈 나머지를 확인하여 짝수인지 홀수인지를 판별하는 문제. num이 2로 나누어 떨어진다면(num % 2 ==0이 참이라면) answer을 Even으로 설정하고, 그렇지 않다면 Odd로 설정. public class Solution { public string solution(int num) { string answer = ""; if(num%2 == 0){ answer = "Even"; }else{ answer = "Odd"; } return answer; } } 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution..
- [ C# ]C# #19 정렬 알고리즘2023-08-26 22:27:15정렬 알고리즘(Sort Algorithm) 주어진 데이터 세트를 특정 순서(오름차순, 내림차순, 사전식 등)로 배열하는 방법. 버블 정렬(Bubble Sort) 배열의 첫 번째 요소부터 마지막 이전의 요소까지 순차적으로 옆의 요소들을 비교. 옆의 요소들의 순서가 잘못되어 있다면 두 요소들을 교환. 이를 통해 더 큰 요소가 뒤로 이동. 비교와 교환을 배열의 길이만큼 반복하여 정렬. // Input int[] data = { 3, 2, 1, 4, 5 }; int N = data.Length; // 배열의 길이 // Process: Bubble Sort for (int i = 0; i < N - 1; i++) // i = 0 to N-1 { for (int j = 0; j < N - i - 1; j++) //..
- [ C# ]C# #17 TextRPG - 턴제 전투2023-08-25 19:49:18개요 4주차 과제인 턴 기반 콘솔 RPG 게임이다. 인터페이스 개념을 활용하여 캐릭터와 아이템을 체계적으로 관리하는 것을 중심으로 개발을 진행하였다. 스테이지가 시작되면 플레이어와 몬스터가 교대로 턴을 진행하며 스테이지 클리어 시 더 강한 몬스터가 나오는 구조이다. 플레이어나 몬스터 중 하나가 죽으면 스테이지가 종료된다. 설명 ICharacter 인터페이스: 캐릭터의 기본 속성을 정의하며 모든 캐릭터 클래스는 이 인터페이스를 구현한다. Warriror 클래스: 플레이어의 캐릭터를 나타낸다. StagesCleared라는 속성을 통해 클리어한 스테이지 수를 확인한다. TakeDamage 메서드를 통해 피해를 받는다. Monster 클래스: Warrior 클래스와 같이 ICharacter 인터페이스를 구현하며..
- [ C# ]C# #16 델리게이트, 람다, LINQ, 고급 자료형 및 기능2023-08-24 21:28:54델리게이트(Delegate) 델리게이트는 메서드 참조하는 타입이다. 변수에 메서드를 할당하여 해당 메서드를 참조할 수 있다. 델리게이트는 여러 개의 메서드를 동시에 호출할 수도 있으며 클래스 내에서 발생하는 특정한 상황을 다루는 매커니즘인 이벤트(Event)의 처리를 위해서도 사용된다. //기본 선언 구조 delegate 반환 형식 델리게이트명(파라미터); // 델리게이트 선언 public delegate void EnemyAttackHandler(float damage); // 적 클래스 public class Enemy { // 공격 이벤트 public event EnemyAttackHandler OnAttack; // 적의 공격 메서드 public void Attack(float damage) { ..
- [ C# ]C# #15 인터페이스, 열거형, 예외 처리, 값형과 참조형2023-08-24 20:34:02인터페이스(Interface) 클래스 혹은 구조체간의 공통된 기능을 공유하여 공통된 동작을 정의하는데 사용된다. 다중 상속이 지원되지 않는 C#에서 인터페이스는 다중 상속을 지원하여 더 다양한 동작을 조합하고 수행한다. 클래스와 인터페이스 간에 느슨한 결합을 형성하여 유연한 설계를 가능하게 한다. (느슨한 결합은 각 클래스와 객체들 간의 의존성을 최소화하여 수정, 변경의 영향을 최소화하는 개념이다.) 인터페이스 정의하기 public interface IMovable // 대문자 I를 인터페이스명 앞에 붙힌다 { void Move(int x, int y); // 이동 메서드 선언 } 인터페이스를 구현하는 클래스 생성하기 public class Player : IMovable { public void Mov..
- [ C# ]C# #14 블랙잭2023-08-23 21:22:37개요 3주차 과제 중 블랙잭 게임이다. 구현해야하는 내용은 다음과 같다. 설명 Suit, Rank 열거형: Suit은 카드 무늬를 나타내며 Rank는 카드 숫자를 나타내고 2부터 14까지의 값을 가지고 있다. Card 클래스: 무늬와 숫자를 가지는 한장의 카드를 표현하는 클래스이며 게임에서의 점수를 반환한다. Deck 클래스: 덱을 표현하는 클래스로 여러장의 카드를 리스트로 구성한다. Shuffle 메서드를 통해 카드를 섞고 DrawCard 메서드를 통해 카드 한장을 뽑아 반환한다. Hand 클래스: 플레이어의 패를 나타내는 클래스로 카드를 패에 추가하고 점수를 계산하는 역할을 한다. Player 클래스: 플레이어를 나타내는 클래스로 플레이어의 패를 구성한다. DrawCardFromDeck 메서드를 통해..
- [ C# ]C# #13 알고리즘 기초 32023-08-23 16:51:57병합 오름차순으로 정렬되어 있는 정수 배열을 하나로 병합하는 알고리즘이다. 각 배열의 병합을 통해 만들어진 머지 배열의 길이는 각 배열의 길이의 합과 같다. 각 배열의 첫번째 인덱스의 값을 비교하여 작은 것을 머지 배열에 넣는다. 머지 배열에 들어가지 않은 값과 다른 배열의 다음 인덱스의 값을 비교하여 작은 것을 머지 배열에 넣는다. 머지 배열의 인덱스 k는 값이 넣어졌을 때 무조건 증가하고 비교 후 값이 빠진 쪽 배열의 인덱스(i or j)를 증가시킨다. 위 작업을 둘 중 하나라도 배열의 끝에 도달할 때까지 반복한다. 그 때, 배열이 끝나지 않은 다른 배열의 나머지 값들을 모두 머지 배열에 넣는다. //Input int[] first = { 1, 3, 5 }; int[] second = { 2, 4 }..