728x90

c# 33

텍스트 RPG 게임 : 완성과 마무리 - TIL#17

오늘의 알고리즘 오류 상황 오늘은 오류 상황이라기 보다는 알고리즘 공부에 굉장히 좋다고 생각한 문제를 가져와봤다. [정수 내림차순으로 배치하기] 문제 : 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. for (int i = 0; i < arr.Length; i++) { for (int j = i; j < arr.Length; j++) { if (arr[i] < arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } 코드 중간에 저번에 배웠던 선택 정렬이 쓰이는 모습을 볼 수 있다. https:/..

텍스트 RPG 게임 : 상점, 인벤토리에 기능 추가 - TIL#16

오늘의 알고리즘 오류 상황 문제 : 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. public class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; for (int i = 0; i < n; i++) { answer[i] = x + x * i; } return answer; } } 분명 문제의 조건에 위배되는 것도 없어보이는데 15문제 테스트 중 2개가 오류라며 알고리즘 통과 실패. 사실 글 쓰는 지금도 문제가 정확히 뭔지 이해가 되질 않는다...

텍스트 RPG 게임 : 기능 구현과 디버깅 - TIL#15

오늘의 알고리즘 오류 상황 문제 : 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 오늘 문제는 정수를 입력받아 그 수의 모든 약수를 더해서 반환하는 문제인데, 처음에 이 문제를 보자마자 내가 알고리즘 동작 순서로 계획했던 것은 수학에서 약수를 구하는 정석적인 방법으로 구하려고 했었다. 즉, 정수 n을 입력 받으면 -> n을 소인수분해 -> 중첩 반복문으로 약수 구해서 배열에 할당하는 방식으로 생각해서 실제로도 그렇게 시도를 했었다. 그러나, 당초에 소수라는 수는 규칙이 없거니와 그런 소수를 일일이 3000까지 등록하기엔 귀찮고, 2부터 3000까지의 소수를 구하려면 어떻게 해야하나 고민에 빠지게 되었다. 실제 수학에서도 소수를 구하는 방법은 한 가지 방법..

텍스트 RPG 게임 : ItemManger 나머지 기능 구현하기 - TIL#14

오늘의 알고리즘 오류 상황 문제: 정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요. using System; public class Solution { public int solution(int num1, int num2) { double a = (double)num1; double b = (double)num2; double quotient = a / b; int answer = (double) quotient * 1000; // 나중에 보니 여기가 문제였음;; return answer; } } C#은 정수형 변수 끼리 '/' 연산자로 나눗셈을 하면 몫과 나머지로 구분해 정수형 몫..

텍스트 RPG 게임 : EventManager 이해하기 등 - TIL#13

어제 작업하던 것에 이어서... 우리 프로젝트의 가장 중추적인 역할을 하는 EventManager를 마저 이해해보았다. 그리고, 맡은 ItemManager 스크립트의 기능을 하나 둘 씩 추가하게 되었다. 이전 글) https://sicilian-najdorf.tistory.com/16 텍스트 RPG 게임, 팀원과 협업하기 - TIL#12 저번에 개별적으로 텍스트 RPG 게임을 구현해보는 과제가 있었다. 오늘 추가로 팀원끼리 협업해서 추가 기능을 넣은 텍스트 RPG 게임을 개발하는 과제가 생겼는데, 우리 팀에서는 각자 구현했던 sicilian-najdorf.tistory.com 1. EventManager.cs 의 구조 EventManager는 다음과 같은 구조를 가지고 있다. 일단 EventType이라는..

텍스트 RPG 게임, 팀원과 협업하기 - TIL#12

저번에 개별적으로 텍스트 RPG 게임을 구현해보는 과제가 있었다. 오늘 추가로 팀원끼리 협업해서 추가 기능을 넣은 텍스트 RPG 게임을 개발하는 과제가 생겼는데, 우리 팀에서는 각자 구현했던 콘솔 게임의 스크립트를 차례로 발표하고, 가장 괜찮은 사람의 것을 바탕으로 팀 전체의 프로젝트를 진행하기로 결정했다. 그런데 팀원 중 한 분이 게임엔진급으로 확장성이 매우 좋은 스크립트를 구현하셔서 (난 내가 배웠던 C#의 기능을 이렇게 다채롭게 쓸 수 있다는 것을 처음 알았다.) 팀원 모두 그것을 바탕으로 프로젝트를 진행하기로 했다. 1. 프로젝트의 구조와 역할 분담 프로젝트 파일은 여러 개의 C# 스크립트로 구성되어 있다. 여기서 Utilities.cs와 EventManager.cs는 프로젝트의 중추적인 역할을 ..

C# : 정렬, 탐색 알고리즘 - TIL#11

알고리즘하면 빼먹을 수 없는 정렬, 탐색 알고리즘이다. 정렬 알고리즘은, 어떤 데이터 세트가 있을 때, 특정 순서(오름차순, 내림차순 등)로 배열하는 알고리즘이다. 즉, {5, 1, 2, 6, 4, 3}이란 데이터가 주어진다면, 오름차순으로 {1, 2, 3, 4, 5, 6}으로 정리하는 방법 등을 말한다. 정렬 알고리즘은 대표적으로 4가지가 있다. 선택 정렬 (Selection Sort) 삽입 정렬 (Insertion Sort) 퀵 정렬 (Quick Sort) 병렬 정렬 (Merge Sort) https://www.youtube.com/watch?v=kPRA0W1kECg 정렬 알고리즘을 방법별로 아주 쉽게 이해할 수 있는 영상. 시각화랑 청각화가 동시에 되어있다. 위 영상에서 처음 4개의 정렬 알고리즘이..

텍스트 RPG 게임 만들기 (3), 알고리즘 기초 - TIL#10

어제 만들던 것에 이어서 남은 필수 요구사항을 구현하기로 했다. 상점에서 구매 시 골드가 부족한 경우 처리 장비해서 변화된 능력치 상태창에 표시 InputAction에서 의도된 입력 외의 입력 처리 아이템 종류 더 추가하기 https://sicilian-najdorf.tistory.com/11 텍스트 RPG 게임 만들기 (2) - TIL#9 오늘은 어제까지 했던 것과 다르게 C# 문법에 대해 공부를 따로 하지는 않고 4주차 과제인 '텍스트 RPG 게임 만들기'의 필수 기능을 구현을 최대한 하기 위한 시간을 가지도록 했다. 지난번에 코드 sicilian-najdorf.tistory.com 우선, 상점에서 골드가 부족할 때 아이템 구매를 하려고 하면 "Gold가 부족합니다!" 라는 메시지를 띄우려 한다. i..

텍스트 RPG 게임 만들기 (2) - TIL#9

오늘은 어제까지 했던 것과 다르게 C# 문법에 대해 공부를 따로 하지는 않고 4주차 과제인 '텍스트 RPG 게임 만들기'의 필수 기능을 구현을 최대한 하기 위한 시간을 가지도록 했다. 지난번에 코드의 뼈대만 진짜 간략하게 만들어봤는데... 게임? 이라고 하기도 뭐한 뼈만 남은 닭다리였다. 오늘 추가한 기능과 코드를 설명하는 방식으로 살펴보고, 마지막에 전체 코드를 싣기로 하였다. 먼저, 가장 중요한 Player 클래스에 '플레이어와 관련 있는 행동'을 메서드로 추가하고, 인벤토리를 만들었다. (아이템 정보는 GameScene 클래스에 있다.) public class Player { // 플레이어의 능력치 public int level = 1; public string name = "Chad"; publi..

C# 기초 문법 나머지, 텍스트 RPG 게임 만들기 - TIL#8 (2)

https://sicilian-najdorf.tistory.com/9 C# 기초 문법 나머지, 텍스트 RPG 게임 만들기 (1) - TIL#8 어제는 객체 지향 프로그래밍(OOC)과 가장 중요한 개념인 객체와 클래스를 중점적으로 다뤄봤었다. 오늘은 이어서 인터페이스(Interface)에 대해서 배웠는데, 인터페이스는 USB 포트와 같이 클래스 sicilian-najdorf.tistory.com 이전 글에 이어서 TIL을 작성한다. 이번 글에선 LINQ, 고급 자료형, 본격적인 텍스트 RPG 게임 만들기에 대해 다룰 것이다. LINQ란? .NET 프레임워크에서 제공되는 쿼리 언어 확장이다. 데이터베이스에서 다양한 작업을 지원하는 확장인데, 데이터를 다뤄서 그런지 정보처리기능사를 준비할 때 배웠던 SQL과 ..

728x90