전체 글 (842) 썸네일형 리스트형 Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-41 액터 반복하기현재 플레이어 컨트롤러에 대해서만 GameHadEnded 함수를 호출하고 있다.하지만 AI 에게도 마찬가지로 게임이 종료되었음을 알려줄 필요가 있다.이를 위해서 레벨에 존재하는 모든 컨트롤러에 대해 접근을 할 수 있어야 하는데, TActorRange 템플릿 클래를 통해 하게 된다. 우선 누가 이겼는지 판별을 위해 게임 종료 함수를 새롭게 만들어주자. 그리고 TActorRange를 통해 레벨에 존재하는 컨트롤러를 모두 찾게 된다.템플릿 클래스이므로 템플릿에 목표 대상인 AController를 넣어주고,for 반복문을 통해 모든 컨트롤러에 대해 접근하게 된다. 이후 해당 컨트롤러가 AI인지, 플레이어인지 체크하기 위해 IsPlayerController 함수를 사용하여 판별해주고,해당 함수를 통해.. [백준 17291번] 새끼치기 (C++) 문제링크 : https://www.acmicpc.net/problem/17291#include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int dp[20];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; dp[0] = dp[1] = 1; //초기값 for(int i=2; i 기본적으로 매년 분열하므로, dp식을 매번 직전 값에 2배를 해준다.이후 감소되는 케이스를 보면, 짝수년도 4번 분열 + 홀수년도 3번 분열이므로 사실상 짝수년도에서만 분열되었던 값들이 사라지게 되는 것을 알 수 있다. 이에 4번 .. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-40 패배 화면 띄우기지금은 패배시 아무것도 뜨지 않고 5초 후에 레벨이 재시작된다.완성도를 높이기 위해 패배시 화면에 출력될 UI를 만들어보자. 이를 위해 우선 UI 폴더를 생성하고 위젯 블루프린트를 생성하자.그리고 이어서 화면에 띄울 Text를 생성해주자. 텍스트는 우측 디테일 패널을 통해 위치 앵커 설정, 색상, 글씨 크기 등이 조정 가능하다. 이제 해당 위젯을 출력하기 위해 PlayerController 클래스를 통해 해당 위젯을 설정하자.헤더에서는 TSubclassOf 클래스로 위젯을 설정하여 위젯만 할당하도록 범위를 제한해주었다. 이후 CreateWidget() 함수를 통해 위젯을 생성하고, AddToViewport() 함수를 이용하여 화면에 출력하도록 하자. 컴파일 하기에 앞서서 추가로 해야할 작.. [백준 17391번] 무한부스터 (C++) 문제링크 : https://www.acmicpc.net/problem/17391 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, M;int arr[301][301];bool visited[301][301];int dx[] = {0, 1};int dy[] = {1, 0};void bfs(){ queue>q; q.push({0, 0, 0}); visited[0][0] = 1; while(!q.empty()) { auto [y, x, cnt] = q.front(); q.pop(); if(y == N-1 && x == M.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-39 C++에서 타이머 설정하기게임 종료에 대해서 더 구체화를 해보도록하자.기존에 PawnKilled를 통해 폰이 죽었을 시 로그메시지가 뜨도록 했지만, 이번에는 PlayerController에 속한 함수인 GameHasEnded 함수를 통하여 플레이어가 죽었을시 게임이 종료되는 로그메시지를 출력해보도록 하자. 이를 위해 PlayerController를 우선 얻고, 해당 컨트롤러를 통해 GameHadEnded 함수를 호출한다.해당 함수는 해당 플레이어에 대한 포커스 포인터와 bool 값(승패 여부)를 필요로 하는데, 여기서 포커스 기능은 필요없으므로 null로 넘겨준다. 그리고 이제 GameHadEnded 함수를 오버로딩해서 사용하기도하고, 레벨을 다시 시작하는 등의 동작 구현을 위해 PlayerControl.. [백준 6571번] 피보나치 수의 개수 (python) 문제링크 : https://www.acmicpc.net/problem/6571dp = [0 for i in range(1001)]dp[1] = 1dp[2] = 2for i in range(3, 1001) : dp[i] = dp[i-1] + dp[i-2]while(True): a, b = map(int,input().split()) if a == 0 and b == 0 : break cnt = 0 for i in range(1, 1001) : if a 피보나치 계산에 따라 수가 매우 커지므로 python으로 푸는 것이 용이한 문제이다.C++로 풀 경우 문자열로 바꾸어서 계산할 필요가 있다. 이외에는 사전에 피보나치를 dp를 통해 미리 계산해놓고 입력받은.. [백준 14607번] 피자 (Large) (C++) 문제링크 : https://www.acmicpc.net/problem/14607#include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;ll N;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; cout 백준 14606번과 유사하지만 N의 범위 때문에 14606번을 풀었던 점화식을 그대로 사용한다면 메모리 초과가 발생하는 문제이다.참고링크 : https://blob-thinking.tistory.com/386 [백준 14606번] 피자 (Small) (C++)문제링크 : https://www.acmicpc.net/pr.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-38 게임 종료하기이제 전반적인 기능을 만들었으니, 게임을 종료하는 방법도 다뤄보자.이와 관련된 클래스는 게임모드에서 다루게 된다. 게임모드는 게임과 관련된 규칙을 다루게 되기 때문에 기본적인 죽음에 대한 PawnKilled 함수를 기본 게임모드에 virtual로 생성하고, 또 다른 게임모드를 만들어 해당 함수에 오버라이딩하도록 구현할 것이다.우선 강의에서는 C++로 생성하였기 때문에 게임모드가 있다고 하였으나 놓친 부분이 있는지 내 환경에는 보이지 않아 따로 만들어주었다. 여기서 이제 Pawnkilled 함수를 구체적 내용은 구현하지 말고 몸체만 선언해주자. 이제 해당 게임모드를 기반으로 다시 오버라이딩 할 서브 게임모드를 만들어주자. 그리고 해당 게임모드 클래스에 PawnKilled를 호출해야 할 위치를 .. 이전 1 ··· 15 16 17 18 19 20 21 ··· 106 다음