분류 전체보기 43

개념 정리 - C++ (메모리 관리)

I. C++의 메모리 관리1) 메모리의 종류프로그램이 사용하는 메모리는 크게 스택(Stack) 과 힙(Heap) 으로 나누어짐구분스택 (Stack)힙 (Heap)관리컴파일러가 자동으로 관리해줌프로그래머가 직접 관리해야 함속도빠름느림크기작음큼생명주기블록({}) 종료 시 자동 해제delete 할 때까지 유지 2) 스택 (Stack)① 함수가 실행될 때 메모리의 모습void Func(){ int a = 10;}Stack┌────────┐│ a = 10 │└────────┘ ② 함수가 종료될 때(블록{}을 벗어날 때) 메모리의 모습Stack(비어 있음)함수가 끝나는 순간 자동으로 메모리에서 사라짐 ③ 특징장점 - 빠름, 자동으로 관리됨, 메모리 누수가 없음단점 - 크기가 작음, 함수가 끝나면 사라짐 3..

개념 정리 - C++ (상속, 다형성)

I. 상속 (Inheritance)1) 상속의 필요성 비슷한 클래스가 여러 개 있을 때 공통 코드를 재사용하기 위해 사용함 예시 - 자동차, 자전거, 트럭은 색깔과 속도라는 공통 부분이 있음class Bicycle{ string color; int speed;};class Truck{ string color; int speed;};각각 구현하면 중복이 생김 Vehicle / \ Bicycle Truck그래서 공통 부분을 기본 클래스(부모 클래스)로 따로 뺌 2) 상속 문법class Vehicle{};class Bicycle : public Vehicle{};Bicycle은 Vehicle을 상속받음Bicycle의 기능과 Vehicle의..

개념 정리 - C++(클래스)

클래스 (Class)1) 클래스가 필요한 이유클래스가 없을 때의 예시 - 학생의 성적을 관리하는 프로그램int korean = 90;int english = 80;int math = 100;float GetAverage(int kor, int eng, int math);int GetMax(int kor, int eng, int math);과목 추가 -> 함수의 매개 변수 수정 필요학생이 여러 명 -> 변수가 많아짐점수를 아무 곳에서나 수정할 수 있음- 데이터와 기능이 따로 놀기 때문에 유지보수가 어려움 2) 클래스의 정의- 관련된 데이터(변수)와 기능(함수)을 하나로 묶어 놓은 설계도- 클래스를 호출할 때 세부사항은 몰라도 되고, 기능만 이해하고 작동하면 됨 3) 클래스의 구성class Student..

개념 정리 - C++(포인터와 레퍼런스)

I. 포인터 (Pointer)1) 포인터의 정의- 변수의 메모리 주소를 저장하는 변수int num = 10;int* ptr = #ptr에는 num의 주소가 들어 있음 2) 포인터를 사용하는 이유① 큰 데이터를 복사하지 않아도 됨- 값을 복사하면 데이터 크기만큼 복사 비용이 발생함int → 4Bytedouble → 8Bytechar → 1Byte- int arr[1000000]; 과 같이 큰 배열을 복사하면 매우 비효율적임- 포인터는 주소 하나(8Byte)만 전달하면 되어서 매우 빠름 ② 원본 데이터를 직접 수정할 수 있음int num = 10;int* ptr = #*ptr = 20;결과: num == 20 3) 주소 연산자 (&)- 변수의 주소를 얻음int nu..

개념 정리 - C++(조건문과 반복문)

I. 조건문 (Conditional Statement)1) 조건문의 정의- 조건의 참(true) / 거짓(false)에 따라 실행할 코드를 결정하는 문법- 프로그램의 흐름을 분기할 때 사용 2) if문if (score >= 60) //조건식{ cout - 조건식이 참이면 실행- 거짓이면 아무것도 하지 않음 3) if-else문if (num % 2 == 0){ cout - 조건식이 참이면 if의 실행문을 작동함- 거짓이면 else의 실행문을 작동함- 둘 중 하나만 실행 4) if-else if-else문if (score >= 90) cout = 80) cout = 70) cout - 위에서부터 차례대로 조건을 검사함- 가장 먼저 참이 되는 조건의 실행문을 작동함- 불필요..

개념 정리 - C++(배열과 함수)

I. 배열 (Array)1) 배열의 정의- 같은 자료형의 여러 데이터를 하나의 이름으로 관리하는 자료구조 배열을 사용하지 않을 때int score1;int score2;int score3;int score4;int score5; 배열을 사용할 때int score[5];- 효율적인 관리 가능 2) 배열의 구조int score[5];자료형 int변수 이름 score원소 개수 [5] 메모리 내부 모습score┌────┬────┬────┬────┬────┐ │ │ │ │ │ │ └────┴────┴────┴────┴────┘ 0 1 2 3 4 ..

개념 정리 - C++(변수와 입출력)

변수와 입출력1) C++ 프로그램의 기본 구조- 모든 C++ 프로그램은 main() 함수에서 시작됨#include using namespace std;int main() { cout 구성설명#include 입출력 기능(cin, cout)을 사용하기 위한 헤더using namespace std;std::를 생략하기 위해 사용int main()프로그램의 시작점(진입점)return 0;프로그램이 정상 종료되었음을 운영체제에 알림 2) 변수 (Variable)- 데이터를 저장하기 위해 메모리에 이름을 붙여 놓은 공간int age = 20;예시) 메모리에는 정수 하나가 저장되고, 그 공간의 이름이 age가 됨 - 자료형 + 변수 이름으로 구성int score;char grade;double average;..

TIL - 본캠프 6일차

I. Blueprint - FPS 슈팅 게임 개발 프로젝트 기능 추가 및 개선 개요오늘은 FPS 프로젝트에 플레이 경험을 개선하는 기능들을 추가하고, 기존 시스템의 동작 방식을 조금 더 자연스럽게 수정하는 작업을 진행했다. 플레이어의 이동(앉기, 달리기), 총알 및 재장전 시스템, 아이템 획득 조건, UI 개선 등을 구현하면서 게임의 완성도를 높였고, 중복되는 블루프린트 로직을 정리하는 리팩터링도 함께 진행했다. 구현 과정1) 힐링 포션 획득 조건 수정 기존에는 플레이어의 체력이 최대 체력이어도 힐링 포션을 획득하면 포션이 사라졌다.이를 최대 체력이 아닐 때만 획득할 수 있도록 수정하여 불필요한 아이템 소모가 발생하지 않도록 변경했다. 또한, 최대 체력일 때는 포션을 획득할 수 없기 때문에 플레이어의 이..

TIL - 본캠프 5일차

I. Blueprint - FPS 슈팅 게임 개발 세션 (5회차)개요오늘은 FPS 프로젝트에 게임 플레이 요소를 더욱 풍부하게 만들기 위해 회복 아이템과 탄약 아이템을 추가하고, 게임 진행 상태를 관리하는 GameMode와 MainHUD를 구현하였다. 또한 제한 시간과 남은 적 수를 화면에 표시하고, 승리와 패배 조건을 설정하여 게임의 시작부터 종료까지 하나의 흐름으로 완성하였다. 마지막으로 게임 종료 시 플레이어와 적의 동작을 모두 멈추도록 개선하여 보다 자연스러운 게임 종료 화면을 구현하였다. 구현 과정1) 회복 아이템(Healing Potion) 구현 ① Fab에서 빨간색 힐링 포션 메시를 프로젝트에 임포트하였다.② Actor를 상속받는 포션 블루프린트를 생성하였다.③ Static Mesh를 추가하..

TIL - 본캠프 4일차

I. Blueprint - FPS 슈팅 게임 개발 세션 (4회차)개요오늘은 FPS 프로젝트에 필요한 HUD(UI) 와 적 AI, 그리고 플레이어 피격 시스템을 구현했다.Widget Blueprint를 이용해 체력과 탄약을 표시하는 HUD를 제작하고, Collision과 Overlap 이벤트를 활용하여 플레이어를 추적하고 폭발 공격을 수행하는 적 AI를 만들었다. 마지막으로 Apply Damage와 Event Any Damage를 이용해 플레이어의 체력을 감소시키고 UI가 함께 갱신되도록 구현하면서 게임의 기본 전투 흐름을 완성했다. 구현 과정1) 위젯 블루프린트(HUD)① HUD 제작Widget Blueprint(WB_HUD) 생성-> Canvas Panel 배치-> Progress Bar를 이용하여 H..