< '분류 전체보기' 카테고리의 글 목록 (13 Page)

전체글 179

[C++/백준 2751번] 수 정렬하기 2

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net #include #include using namespace std; void quick_sort(int* data, int start, int end) { if (start >= end) { return; } int pivot = start; int i = pivot + 1; int j = end; int temp; while (i j) { temp = data[j]; data[j] ..

[Paper2D로 게임만들기 복습] 2. 구조체, 열거형 변수, 게임 모드, 캐릭터 이동

에셋 파일들과 블루프린트 틀은 이전에 들었던 Rookiss 님의 '언리얼엔진으로 2D게임 만들기' 를 기반으로 했다. 구조체 강의를 들을 때는 기초적인 지식부터 쌓은 뒤 이후에 구조체를 적용하였는데, 리팩토링을 여러 번 할 필요 없이 미리 구조체를 만들어 놓았다. 구조체의 구성은 다음과 같다. . 이 CreatureData의 기본값은 일단 위와 같이 설정해 놓았고, 어짜피 데이터 테이블에서 데이터를 꺼내서 덮어씌워서 사용할 것이므로 크게 상관 없을 것이다. 다음으로 데이터 테이블을 만들어서 Knight 의 정보도 넣어 주었다. 이렇게 만든 데이터 테이블의 정보를 토대로 Creature 블루프린트에서 이 생물(기사/ 스켈레톤) 의 체력을 설정해 줄 수 있게 했다. 열거형 변수 위의 두 가지 상태를 만들어서..

[C++/백준 1018번] 체스판 다시 칠하기

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 해결 방법 네 가지 경우가 있다. (0,0) 이 B로 시작하고 현재 인덱스의 원소가 B인경우 (0,0) 이 B로 시작하고 현재 인덱스의 원소가 W인경우 (0,0) 이 W로 시작하고 현재 인덱스가 B인경우 (0,0) 이 W로 시작하고 현재 인덱스가 W인경우 이 네 가지 경우를 잘 생각해서 전부 세어주면 된다. Climits 헤더의 INT_MAX 를 사용하여 min 변수의 초기값을 설정해 주었..

[Paper2D로 게임만들기 복습] 1. 진행 계획

진행 계획 언리얼엔진 강의를 들으면서 Paper2D로 간단한 2D게임을 만드는 것까지 진행 해 보았는데, 대략 보름 정도의 휴식을 하였으니 다시 공부를 시작 할 예정이다. 당연히 강의만 들어서는 툴을 익히기는 힘들다고 판단된다. 따라서 에셋은 강의에서 제공받은 에셋을 그대로 사용하되, 블루프린트는 자력으로 만들어 보기로 한다. 아래의 절차를 따를 예정이다. 하루마다 만들 주제를 선정한다. ex) 캐릭터 이동, 데미지 계산 함수, 몬스터 배치 강의의 도움을 받지 않고 자력으로 만들어 본다. 일정 시간이 지나도 해결하지 못할 경우 강의를 다시 보거나 이전에 만들어 놓았던 완성품에서 해당하는 부분을 찾아본다. 혹은 내가 적어놓은 블로그 글을 확인해본다. 확인한 것을 토대로 다시 블루프린트를 만든다. 백준 공부..

[C++/백준 19532번] 수학은 비대면 강의입니다.

https://www.acmicpc.net/problem/19532 19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net 해결방법 간단히 다 해보면 된다. 브루트 포스 문제이므로 제시한 범위 내의 변수를 모두 탐색해서 두 연립 방정식을 동시에 만족하는 x,y 를 찾는다. #include #include using namespace std; int main() { int a, b, c, d, e, f; cin >>..

[C++/백준 2231번] 분해합

2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 해결방법 처음부터 모든 경우를 다 시행해 본다. 매번 자릿수를 구해주어 최소의 부분합을 구해 입력한 숫자와 맞는지 계속 검사한다. #include #include using namespace std; int main() { int N; cin >> N; int digit = 0; int ans = 1; int tmp = ans; ans = 1; while (ans < N) { digit = 0; int i = 0; int sum = ..

[Paper2D로 게임 만들기 필기] 9. 게임 인스턴스, 컴포넌트, UI, 유지보수

게임 인스턴스 이제껏 만들어서 사용하던 BP_gamemode 라는 gamemode는 레벨에 종속적이다. 따라서 레벨이 바뀌면(ex. 맵 이동) 정보가 휘발될 수 있음. 따라서 전역적인 변수는 관리가 힘들다. 그 다음으로 많이 사용한 get actor of class 는 정석적인 관리법은 아니다.(임의로 액터에 접근하여 데이터 관리) 따라서 게임 시작부터 끝까지 유지 되어야 하는 정보가 있다면 '게임 인스턴스' 를 사용한다. 게임 인스턴스는 게임의 시작과 끝까지 유지되는 클래스라고 생각하면 된다. 컴포넌트 컴포넌트의 종류는 두 가지인데, Actor Component와 Scene 컴포넌트 이다. 액터 컴포넌트(Actor Component) - 어느 액터에나 붙을 수 있는 컴포넌트 / 액터에 대한기능만 가지고..

[Paper2D로 게임 만들기 필기] 7-8. 타일 관련 작업, 몬스터 스폰 / AI 개선

7일차부터는 지금까지 짠 로직을 타일 기준으로 수정하는 작업을 했다. 함수 Pure 옵션 쉽게 말해서 함수의 옵션 중 Pure : 상태를 변경하지 않는 함수. 반환값만 돌려주거나 한다. ex) 플레이어의 위치는? -> (4, 5) Impure : 자유롭게 상태를 변경하는 함수. Get 함수 같은 경우는 디버깅의 간편성을 위해 Pure 로 설정해주는 것이 좋아 보인다. ( 코드에 변형을 가하냐 하지 않느냐를 다른 팀원도 간편하게 볼 수 있음) 위의 작업을 통해 타일을 한 칸씩 이동할 수 있다. 위의 함수는 목적지에 도착했는지 확인하는 함수인데, 벡터의 길이가 10 이하면 도착했다고 판별한다. 여기서 10은 임의로 정한 벡터 길이이다.(추후 수정 예정) Stop Move 가 아니면, 다음 목적지를 계산해서 ..

[Paper2D로 게임 만들기 필기] 6. Orthographic, 타일맵

Orthographic Projection 언리얼엔진은 3D 기반 엔진이기 때문에, 우리가 만들고 있는 액터들은 3D 객체를 2D처럼 보이게 해서 사용을 하고 있는 것이다. 따라서 아래와 같은 문제가 발생할 수 있다. 실행 화면 카메라에 원근이 적용되어 스켈레톤의 모습이 커지고, 심지어는 플레이어와 y축으로 겹치는 것도 볼 수 있다. 이때 필요한 것이 Orthographic 옵션이다. Orthographic Projection 은 직교 투영을 뜻하는데, 쉽게 말해 정사영이다. 이렇게 하면 3D임에도 2D와 같이 게임 화면이 표현된다. 물론 나중의 충돌 처리를 위해서는 플레이어와 몬스터 객체들을 같은 Y축 상에 배치해야 한다. BP_Knights 에서 Camera 를 선택한 뒤 Projection Mode..

[C++/백준 2745번] 진법 변환

https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 찾은 반례 : A 11 -> 17 출력 해결 : 알파벳 범위를 제대로 설정함. 코멘트 : 버그가 발생하면 쳐다보기보다는 직접 한줄씩 실행해 보자. #include #include #include #include using namespace std; int main() { string N; int B; char tmp; // string에서 char로 변경 cin >> N >> B; int num =..