본문 바로가기

전체 글

(842)
[백준 17265번] 나의 인생은 수학과 함께 (C++) 문제링크 : https://www.acmicpc.net/problem/17265 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, minV = MAX, maxV = -MAX;int dx[] ={1, 0}, dy[] = {0, 1};char arr[5][5];void dfs(int y, int x, int n){ if(y==N-1 && x==N-1) { minV = min(minV, n); //최솟값, 최댓값 갱신 maxV = max(maxV, n); return; } for(int i=0; i= N || nx >= N) c..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-37 라인트레이스에서 액터 무시하기저번에 강의에서 AI가 총을 자기 자신에게 쏘는 것을 볼 수 있었다.이번엔 해당 오류를 고쳐보자. 이를 위해 우선 Gun.cpp에 있는 PullTrigger() 함수로 돌아가자.여기서 FCollisionQueryParams Params를 선언하고, 해당 Params를 AddIngoredActor 함수를 통해 총과 총의 주인인 캐릭터가 무시되도록 해주자.그리고 해당 Parmas를 LineTraceSingleByChannel에 할당해주면 간단하게 해결이 가능하다. 이제 다른 문제가 남아있는데, 바로 캐릭터가 죽었음에도 불구하고 총을 쏘고 또 캡슐 컴포넌트 또한 남아있다는 것이다.이를 위해 ShooterCharacter 클래스의 TakeDamage 함수로 돌아가자.해당 함수에서 만..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-36 C++에서 BTServices이번에는 행동 트리의 새로운 개념인 서비스에 대해 알아본다.기존에 AIController의 Tick 함수에 구현했던 내용을 서비스를 통해 구현하게 된다.(플레이어 위치, 플레이어 마지막 위치 등)Tick은 매프레임마다 탐색을 하므로 대신 서비스 기능을 사용하여 일정 구간마다 탐색하도록 하게 된다. 우선 행동 트리에서 서비스를 생성해보자.우리가 생성할 기능은 AI가 플레이어 방향을 따라오도록 Default Focus 기능이다. 해당 기능을 통해 기존에는 무조건 앞에만 바라보던 AI가 플레이어 위치에 따라 자연스럽게 방향을 따라오게 된다. 이제 이러한 서비스를 Vscode에서 직접 만들어보자.이를 위해 C++ 클래스를 생성해주는데, 우리는 블랙보드 키 값을 통해 설정할 것 이므로..
[백준 17213번] 과일 서리 (C++) 문제링크 : https://www.acmicpc.net/problem/17213 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;ll N, M;ll dp[31][31];void func(){ dp[0][0]=1; //첫 번째 값 1 for(int i=1; i> N >> M; func(); cout  중복 조합 문제이다.간단하게 생각해보면 nHm 이지만, 모든 종류의 과일이 적어도 1개씩 있어야 한다는 조건 때문에 nHm-n이 된다.이를 조합으로 변환하여 계산을 해주면 된다.그러면 nCr = n+r-1Cr = n+m-n+1Cm-n이 된다.해당 계산은 파스칼 삼각형 공식을 ..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-35 폰(Pawn)을 사용하는 BTTask이번에는 AI 시야에 플레이어가 들어오면 AI가 사격을 하도록 기능을 추가해보자.이에 앞서 기존 시야에 들었을 시 플레이어 위치까지 오는 범위를 늘려주자.해당 범위가 너무 좁으면 AI가 총을 플레이어와 너무 가까운 위치에서 사격을 하게 되므로 수정해주는 것이 좋다. 그리고 추가적으로 Observe Blackboard Value 값도 활성화 해주자.해당 기능을 활성화 하지 않았을 시 AI가 플레이어를 따라올 때 자연스럽게 계속 따라오는 것이 아니라 우선 플레이어 위치까지 이동 후에 다시 변경된 플레이어 위치로 이동한다.우리는 자연스럽게 계속 업데이트된 플레이어 위치로 따라오는 것을 원하기에 해당 값을 활성화 해주자. 이제 쏘는 기능을 추가하기 위해 또 새롭게 C++ 클래..
[백준 4097번] 수익 (C++) 문제링크 : https://www.acmicpc.net/problem/4097 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int arr[250001];int dp[250001];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); while(true) { int result = -MAX; cin >> N; if(N==0) break; for(int i=0; i> arr[i]; dp[0] = arr[0]; for(int i=1; i 구간이 비어..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-34 BTTasks 실행하기이제 Task 기능을 직접 실행해보자.현재 우리가 필요한 기능은 선택된 블랙보드 키 값을 지우는 것이다. 우선 베이스 클래스에 어떤 내용이 존재하는지 알아보자.Blackboardbase 헤더에서 UBTTaskNode를 선택하고 F12를 누르면 해당 내용을 볼 수 있다.그럼 상단에 다음과 같은 함수들을 볼 수 있다. 4개를 순서대로 간단히 살펴보면,ExecuteTask가 Task를 실행하는 것이고, AbortTask는 Task 중단, TickTask는 매틱마다 Task 실행, Onmessage는 Task에 메시지를 보낼 때 사용된다.우리가 주로 봐야할 것은 위 3가지 함수이며, 여기서 사용하게 될 것은 단순 실행하는 ExcuteTask가 된다.  이어서 CPP에 작성해주자. #incl..
게임 개발 - Bickering Trip 게임 공유 링크 : https://drive.google.com/file/d/1Yni460bHI8DKhJXFASFJYFk1JD6WQecX/view?usp=drive_link 4학년 1학기 게임 프로그래밍 수업을 들으면서 중간 및 기말고사를 대체하는 3인 팀 프로젝트로 만들었던 게임이다.3인 팀 프로젝트이기는 하지만, 나머지 팀원의 협조성이 낮아 사실상 혼자서 진행하게 되었다. 게임 제목은 Bickering Trip으로 직역하면 티격태격 여행, 말다툼하는 여행이다.컨셉은 남매 2명이서 같이 여행을 다니는 것이다.보통 사이좋은 남매가 다소 드문 편이기에 남매가 같이 여행을 다녔을 시 티격태격하며 말다툼을 많이 할 것으로 생각하여 제목을 Bickering Trip으로 정하였다. 장르는 기본적으로 플랫포머이며 ..