728x90

분류 전체보기 64

Unity 게임 개발 입문 : 탑다운 슈팅 프로젝트 - TIL#20

오늘의 알고리즘 문제 [제일 작은 수 제거하기] 문제 : 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. public class Solution { public int[] solution(int[] arr) { if (arr.Length == 1) { int[] answer = new int[1]; answer[0] = -1; return answer; } else { int[] answer = new int[arr.Length - 1]; int minidx =..

Unity 입문하기, 세팅과 기본 조작 - TIL#19

오늘은 오류 발생과 문제 해결이 일어날 만한 활동을 하기보다는 Unity 입문 강의를 수강하는데 초점을 맞췄으므로 이에 맞춰 글을 쓰기로 했다. (아직 전체 완강을 하지 못해서 간단한 내용만 정리한 뒤 나머지는 내일 올리기로 한다.) 게임 엔진은 게임 개발을 매번 기초부터 하게 되면 상당한 시간적 손해가 발생하기 때문에 개발에 있어 강력한 도구와 기능적 편의를 제공한다. Unity 또한 게임 엔진이기 때문에 쉽고 강력한 기능들이 들어있어서 게임 개발에 자주 이용된다. 새 프로젝트를 만들어서 열어보면, 처음 상태는 다르겠지만 보통 다음과 같은 구조를 하고 있다. (다음 설정은 Window 탭 > Layouts > 2 by 3 이다.) 각 창의 기능을 대략적으로 요약하면 다음과 같다. Scene : Unit..

텍스트 RPG 게임 : 팀 프로젝트 발표 - TIL#18

오늘의 알고리즘 오류 상황 [나누어 떨어지는 숫자] 문제: array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. public class Solution { public int[] solution(int[] arr, int divisor) { int count = 0; foreach (int element in arr) { if (element % divisor == 0) { count++; } } int[] answer = new int[count]; count = 0; foreach (int element in arr..

텍스트 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이라는..

중간 점검 : EventManager는 어떻게 동작하는가

AddListener로 해당 이벤트 사용하겠다 선언 -> (해당 이벤트가 동작하면) 상속받은 OnEvent 메서드에서 관련 동작 수행 해당 이벤트가 동작하는 것을 알리려면 PostEvent로 해당 이벤트가 수행됐음을 나타냄 -> 해당 이벤트를 Listener로 등록한 모든 클래스의 OnEvent 실행 예시) EventManager.Instance.AddListener(EventType.eGameEnd, this); = 'eGameEnd'라는 이벤트가 동작하면, OnEvent를 실행하겠다 라고 지금 클래스에 등록 EventManager.Instance.PostEvent(EventType.eItemChage, data); = 'eItemChange' 라는 이벤트를 등록한 모든 클래스에게 동작했음을 알리고, ..

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

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

728x90