전체 글 (842) 썸네일형 리스트형 [백준 17271번] 리그 오브 레전설 (Small) (C++) 문제링크 : https://www.acmicpc.net/problem/17271 17271번: 리그 오브 레전설 (Small)규환이는 리그 오브 레전설이라는 게임을 좋아한다. 이 게임에서는 N초의 시간 동안 싸움을 하는데, 규환이가 플레이하는 캐릭터는 A, B 두 가지 스킬을 사용할 수 있다. A 스킬의 시전 시간은 1www.acmicpc.net#include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, M;int dp[10001];const int MOD = 1000000007;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); c.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-37 타격 파티클 현재 발사체를 발사할 때 타격효과가 없어서 다소 심심하게 느껴진다. 이를 개선하기 위해 발사체에 대해 타격 파티클을 추가해주자. 파티클은 맨 처음 해당 강의를 위해 다운받은 자료에 기본으로 들어있는 것을 사용한다. 먼저 발사체 클래스에서 UParticleSystem에 대한 변수를 선언해주어야 한다. 컴파일을 하고 언리얼에서 위 파티클을 직접 할당해주자. 이제 할당한 파티클을 발사체가 무언가를 맞히는 순간 스폰함으로서 파티클을 사용하게 된다. 이를 위해 다음과 같은 함수를 사용한다. 해당 함수는 언리얼 공식 문서에서 가져온 내용이나, VScode 에서 해당 함수를 살펴보면 오버로드 된 함수가 추가로 존재하는 것을 볼 수 있다. 우리는 그 중에서 하나를 선택하여 사용할 것이며, 해당 함수는 다음.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-36 게임 오버 UHD 게임 승패 유무에 대해 간단하게 print string으로 표시했었지만, 이제 위젯으로 출력해보록하자. 이를 위해 기존 위젯을 복사하여 게임 승패용 위젯을 하나 만들어주자. 이후 Create Widget을 통해 위젯을 생성하고, 해당 return value에서 Display Text를 얻는 것이 가능하다. 또 Display Text에서 Set Text를 얻는 것이 가능하여 원하는 텍스트를 위젯을 통해 출력이 가능하다. 하지만 우리는 게임 승패 유무를 체크하는 bool 타입 변수를 사용하고 있지 않다. 이를 활용하여 게임 승패에 맞는 텍스트를 출력해줄 필요가 있다. 이때 사용할 수 있는 것이 Select 함수이다. 해당 함수를 통해 인덱스를 받고, 리턴 값 또한 원하는 것으로 조절이 가능.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-35 승패 조건 기본적인 게임의 틀은 완성하였으니, 이제 승패 조건을 설정해주자. 승패 조건은 당연하게도 탱크가 죽으면 진 것이고, 탱크가 살아있고 남은 터렛을 모두 파괴하면 승리이다. 우리는 위젯으로 게임 승패에 대해 출력해줄 것이므로, 전과 같이 BlueprintImplementableEvent를 사용하여 함수를 선언해준다. 승패 유무 체크를 위한 간단한 bool 타입 변수도 가지게 된다. 해당 함수는 어디서 호출되어야 할까. 바로 탱크가 죽는 순간과 타워가 죽는 순간이다. 이는 게임모드에서 ActorDied 함수로 구현을 했었기 때문에 간단하게 바로 파악이 가능하다. 탱크가 죽는 순간은 게임에서 진 것이기 때문에 false의 값을 넘기도록 하였다. 게임에서 이기는 조건인 타워가 모두 죽는 조건은 먼저 체.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-34 카운트 다운 시간 표시하기 이제 print string을 통해 표현했던 것을 위젯으로 나타내볼 것이다. 이를 위해 그래프에서 다시 디자이너로 돌아가서 텍스트 블록에 대해 변수 여부를 체크해주어야 한다. 이러면 이제 해당 텍스트 블록에 대해 float 변수 카운트 다운과 같이 변수로서 접근이 가능해진다. 해당 변수를 끌어와서 Get을 해주고, 해당 핀에서 끌어보면 해당 변수에 대한 Set 함수를 얻을 수 있다. 이제 이를 통해 원하는 텍스트 할당이 가능하고, 실행 핀을 통해서 원하는 숫자로 Switch on Int 함수에서 값 연결이 가능하다. 나머지 값들도 전부 print string을 삭제하고 위와 같이 바꿔주자. 현재 상태에서 출력해보면 숫자 1과 2가 왼쪽으로 치우처서 출력이 된다. 이는 기본 정렬.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-33 카운트다운 타이머 게임이 시작되는 것을 알 수는 있지만, 몇 초 후에 시작되는 지는 정확히 알 수 없다. 이를 위해 얼마나 더 기다려야 하는지 시작 딜레이 즉 카운트 다운를 위젯에 띄워주도록 하자. 우선 기존 위젯 블루프린트에서 우측 상단의 그래프를 눌러주면 이벤트 그래프 창으로 넘어갈 수 있다. 그리고 카운트 다운을 위한 float 변수를 하나 추가해주자. 컴파일을 하고 나면 맨 아래 기본값에서 값 수정이 가능해진다. 이제 이를 이용하여 매틱마다 카운트 다운을 출력해보자. Event Tick에 있는 Delta Time을 이용하여 매 프레임마다 카운트 다운의 값을 감소시켜가며 출력하게 된다. 매 프레임의 시간이 짧으므로, 매우 촘촘한 간격으로 출력되는 모습을 볼 수 있다. 우리가 원하는 건 1, 2, 3.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-32 게임 시작 위젯 게임이 시작되기에 앞서 3초 간의 딜레이를 가지고 탱크가 움직이게 된다. 완성도를 위해 이를 위젯을 이용하여 게임 준비 시간임을 알려주어 보자. 마찬가지로 게임모드에서 해당 함수를 구현하게 된다. 해당 함수는 BlueprintImplementableEvent인데, 이는 C++에서 호출되는 C++ 함수지만 실제 기능은 블루프린트에서 구현한다는 것을 의미한다. 블루프린트에서 다뤄야하므로, private에서 선언은 불가능하다. 이제 기능 자체는 블루프린트에서 다루므로, 단순히 해당 함수가 실행되는 위치만 지정해준다. 이제 언리얼로 돌아가서 위젯 블루 프린트를 작성해주자. 이제 해당 위젯 블루프린트에서 우선 캔버스 패널을 생성해주자. 캔버스 패널을 통해 화면상 원하는 위치에 위젯 요소 배치를 하.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-31 게임 시작 게임을 시작하자마자 바로 플레이 되는 것은 다소 부자연스러울 수 있다. 따라서 게임 시작하기에 앞서 딜레이를 주고, 일정 딜레이를 가진 이후에 본격적인 게임이 시작되도록 해보자. 먼저 딜레이를 위한 변수와, 해당 기능을 위한 함수를 선언해주자. 해당 내용들은 게임모드에 대한 이야기이므로, 게임 모드 클래스에서 선언 및 구현하게 된다. 해당 함수는 게임이 시작할 때 실행되므로 BeginPlay에서 호출하게 된다. 기존 BeginPlay 안에는 Tank와 Tank에 대한 컨트롤러를 얻는 과정이 있다. 해당 기능 또한 우리가 구현할 함수에 합쳐주었다. 먼저 딜레이 시간 동안은 탱크가 움직일 수 없다. 우리는 이를 SetPlayerEnableState 함수를 따로 구현하여 설정을 해준 적이 있다. 여.. 이전 1 ··· 27 28 29 30 31 32 33 ··· 106 다음