Unreal - Posture Progress / Hit Direction
·
Unreal 프로젝트 다이어리/두번째 프로젝트
위젯을 만들어줍니다위젯을 만들어주었습니다 델리게이트를 사용하여 첫번째 빨간색 프로그래스바가 hp에 따라 변동하며시간이 지나면 흰색 프로그래스바가 빨간 프로그래스바를 따라오도록 설계했습니다void UEnemyStatusWidget::UpdateMainHPBar(float currentHp, float maxHp){ if (ProgressBar_InnerBar) { float barPercent = currentHp / maxHp; barPercent = FMath::Clamp(barPercent, 0.f, 1.f); ProgressBar_InnerBar->SetPercent(barPercent); targetHpPercent = barPercent; if (GetWorld()->GetTimerMa..
프로그래머스(C++) - 소수 찾기
·
C++ 프로그래머스/Exhaustive search
●문제 ●입출력 사용 알고리즘 : 완전탐색사용 수학공식 : 에라토스테네스의 체 문제해석 : 현재 string타입 numbers의 숫자로 만들수있는 모든 경우의 수ex ) 17이면 1, 7, 17, 71 중에 소수의 갯수 반환 푼방법 : 모든 경우의 수를 가정단 set을 사용하여 중복인 경우를 방지 (만약 1117 인경우 1, 1, 11, 11 이렇게 중복이나온다)모든 경우의 수에서 중복을 방지하여 set에 넣는다재귀함수를 사용하여 풀이 에라토스테네스의 체 공식을 사용하여 소수를 구하는함수를 만든다숫자 n까지의 소수를 판별하는 공식은 2부터 n의 루트 까지 계산을 하면된다 (sqrt 사용)#include #include #include #include #include using namespace std;s..
Algorithm - Exhaustive search (완전탐색)
·
C++ 프로그래머스/Exhaustive search
완전탐색(Exhaustive search)이란?컴퓨터의 계산능력을 이용하여 경우의 수를 모두 나열하면서 답을 찾는법을 뜻한다예시로 자물쇠 4자리를 풀때 0000부터 9999까지 10000가지의 수를 모두 무식하게 다 나열하면서 푸는 방식을 뜻한다 "무식하게 다 계산하여 푼다"의 의미인 Brute-Force(브루트 포스) 라고 도 부른다 완전탐색을 써야할때는 경우의 수가 작을때 (입력으로 주어지는 데이터N의 크기가 매우 작을 때 )문제 조건이 명확하게 모든 경우중 최적값을 찾아라 일때구현이 쉽고 효율보다는 정확해야할경우 완전탐색 그 자체가 알고리즘은 아니고 문제 해결 방법이기때문에완전 탐색 방법을 이용하기 위해서는 여러가지 알고리즘 기법이 사용됩니다완전 탐색 기법단순 Brute-Force비트마스크(BitM..
Unreal - HitInterface 상호작용
·
Unreal 프로젝트 다이어리/두번째 프로젝트
적이 Override하여 사용할 HitInterface를 만들어줍니다#pragma once#include "CoreMinimal.h"#include "UObject/Interface.h"#include "HitInterface.generated.h"USTRUCT(BlueprintType)struct FGameHitSystemData{ GENERATED_BODY() //공격 데미지 UPROPERTY(BlueprintReadWrite) float damageAmount; //공격 방향 UPROPERTY(BlueprintReadWrite) FVector hitDirection; //패링가능 여부 UPROPERTY(BlueprintReadWrite) bool bCanParry; //넉백강도 UPROPERTY(B..
Unreal - Hash 기반 AI/Enemy 데이터 설계하기
·
Unreal 프로젝트 다이어리/두번째 프로젝트
rpg같은 게임에는 수많은 적, ai가 존재합니다만약 AI한마리한마리 직접 코딩한다면 코드가 어마어마하게 많아지고 유지보수가 힘듭니다Hash알고리즘을 사용하여 수많은 적, 데이터 를 관리할수있습니다그래서 추가, 및 삭제 즉 유지보수가 편한 구조가 필요합니다 제가 선택한 방식은 데이터테이블의 Key : 행 Value : 값을 사용한 Hash알고리즘으로 구현하였습니다 데이터테이블에서 값을 설정하고Base가되는 Enemy에서 데이터테이블의 값을 인식한뒤그값으로 동기화를 해주는방식으로 구현하였습니다 데이터테이블의 값이 될 구조체를 선언해주었습니다#pragma once#include "CoreMinimal.h"#include "UObject/Interface.h"#include "EnemyDataTable.gen..
Unreal - 콤보 공격
·
Unreal 프로젝트 다이어리/두번째 프로젝트
플레이어의 애니메이션을 담당할 DataTable 구조체를 위해부모클래스를 없음 으로 선택하고 c++클래스를 제작해줍니다 데이터테이블에 액션타입, 사용애니메이션, 다음콤보공격으로 넘어가기위한 최대 입력시간그리고 콤보의 순서인덱스값 등을 선언해주었습니다#pragma once#include "CoreMinimal.h"#include "CharacterAnimDataTable.generated.h"UENUM(BlueprintType)enum class ECharacterAction : uint8{ BasicAttack UMETA(DisplayName = "Basic Attack"), Dodge UMETA(DisplayName = "Dodge"), AirAttack UMETA(Dis..
Unreal - 무기 Draw
·
Unreal 프로젝트 다이어리/두번째 프로젝트
사용할 무기 Actor를 만들어준뒤 기본설정public: virtual void Tick(float DeltaTime) override; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySword") class USceneComponent* sceneComp; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySword") class UStaticMeshComponent* swordMesh; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySword") class UCapsuleComponent* swordCapsuleComp; ..
프로그래머스(C++) - H-Index
·
C++ 프로그래머스/Sort
●문제 ●입출력 사용 알고리즘 : 정렬 알고리즘문제해석 citation 왼쪽에서부터 보면, 내림차순을 했을때 "i번째 논문은 i+1번째로 많이 인용된 논문 이 됨.즉 예시가 [3, 0, 6, 1, 5 ]인경우 내림차순하여 [6, 5, 3, 1, 0][6, 5, 3, 1, 0][1, 2, 3, 4, 5]4번째인 1이 4보다 작아지는 경우가 조건이 끊기는 조건이때 3번째 인덱스가 hidden-index답은 3#include #include #include using namespace std;int solution(vector citations) { //[3, 0, 6, 1, 5] //1. 내림차순 해주기 [6, 5, 3, 1, 0] -> a //2. 인덱스+1이랑 비교해주기 [ 1, 2, ..
프로그래머스(C++) - 가장 큰 수
·
C++ 프로그래머스/Sort
●문제 ●입출력 사용 알고리즘 : introsort풀이방식 vector 를 to_string으로 문자열로 바꾼뒤 임시값 vector temp임시값에 넣어준뒤앞수 a 뒷수 b를 합쳤을때 더 큰수를 앞으로 "정렬" 풀이#include #include #include using namespace std;string solution(vector numbers) { //비교 첫번째 numbers[i]의 값들중에 1의 자리수 값이 가장 큰 수 //비교 두번째 numbers[i]의 값들중에 10의 자리수 값이 더 큰 수 string answer = ""; vector temp; //number의 값을 string으로 변환해서 temp로 집어넣기 for (int i : numbers) ..
프로그래머스(C++) - k번째 수
·
C++ 프로그래머스/Sort
●문제 ●입출력 사용알고리즘 : sort문제해석 : array배열의 2차원배열의 command[0]번부터 command[1]까지 자른뒤정렬한뒤 command[3]배열값을 return하여 완성하면 return값 도출 풀이#include #include #include using namespace std;vector solution(vector array, vector> commands){ vector answer; for (int i = 0; i temp; for (int j = commands[i][0] - 1; j 점수 : 1레벨 : 1