반응형 [C++ 게임 개발 시리즈] Day 5: 첫 번째 게임 프로젝트: 간단한 2D 게임 만들기 (2) 적 추가 및 충돌 처리이번 단계에서는 적 캐릭터를 추가하고, 플레이어와 적이 충돌했을 때 게임 오버 상태를 구현하겠습니다.적 캐릭터 추가적 캐릭터 정의:main.cpp 파일에 적 캐릭터를 정의합니다.적 캐릭터는 플레이어 캐릭터와 같은 방식으로 사각형 모양으로 만듭니다.// 메인 함수 내부에 추가 (플레이어 캐릭터 정의 아래)sf::RectangleShape enemy(sf::Vector2f(50.0f, 50.0f));enemy.setFillColor(sf::Color::Red);enemy.setPosition(200.0f, 150.0f); // 임의의 위치에 배치적 캐릭터 이동:간단한 AI를 사용하여 적이 플레이어를 따라다니도록 만듭니다.적의 속도를 정의하고, 매 프레임마다 플레이어의 위치를 향해 이동합.. 2024. 8. 1. [C++ 임베디드 시스템 프로그래밍 시리즈] Day 5: GPIO 제어 기초 GPIO 제어 기초임베디드 시스템에서 GPIO(General Purpose Input/Output)는 매우 중요한 역할을 합니다. GPIO 핀을 통해 다양한 센서와 액추에이터를 제어할 수 있습니다. 오늘은 GPIO 핀의 다양한 설정과 제어 방법을 학습하겠습니다.1. GPIO 핀 모드 설정GPIO 핀은 입력(Input), 출력(Output), 풀업(Pull-up), 풀다운(Pull-down) 모드로 설정할 수 있습니다. 입력 모드 (Input Mode)입력 모드는 외부 신호를 읽는 데 사용됩니다. 버튼이나 센서의 상태를 읽을 때 사용됩니다.pinMode(pin, INPUT); // 핀을 입력 모드로 설정 출력 모드 (Output Mode)출력 모드는 외부 장치로 신호를 보내는 데 사용됩니다. LED나 모터.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 6: constexpr과 상수 표현식 C++11부터 도입된 constexpr 키워드는 컴파일 시간에 평가될 수 있는 상수 표현식을 정의할 수 있게 합니다. 이는 프로그램의 성능과 안정성을 높이는 데 유용합니다. 오늘은 constexpr의 사용법과 상수 표현식에 대해 자세히 학습하겠습니다.constexpr (상수 표현식)constexpr의 기본 사용법constexpr 키워드는 변수, 함수, 생성자 등에 사용할 수 있습니다. constexpr로 선언된 변수는 반드시 컴파일 시간에 값을 결정할 수 있어야 합니다. 기본 예제#include constexpr int square(int x) { return x * x;}int main() { constexpr int result = square(5); std::cout 이 예제에서 .. 2024. 8. 1. [C++ 마스터] Day 6: 반복문 (for, while, do-while) 반복문 (Loops)반복문은 특정 조건이 만족되는 동안 코드 블록을 반복 실행하는 데 사용됩니다. C++에는 for, while, do-while 반복문이 있습니다. 1. for 문for 문은 초기화, 조건 검사, 증감식으로 구성된 반복문입니다. 반복 횟수가 정해져 있을 때 주로 사용합니다.for (int i = 0; i 위 코드에서 i는 0부터 시작하여 4까지 1씩 증가하며 반복됩니다. 2. while 문while 문은 조건이 참인 동안 코드를 반복 실행합니다. 조건이 거짓이 되면 반복이 종료됩니다.int i = 0;while (i 위 코드에서 i는 0부터 시작하여 5 미만일 때까지 1씩 증가하며 반복됩니다. 3. do-while 문do-while 문은 최소 한 번 실행한 후 조건이 참인 동안 반복.. 2024. 8. 1. [C++ 성능 최적화 및 고급 테크닉] Day 6: 불필요한 복사 방지 (copy elision) 불필요한 복사란?불필요한 복사는 객체를 복사하는 과정에서 발생하는 오버헤드입니다. 이는 성능 저하와 메모리 사용 증가를 초래할 수 있습니다. C++에서는 이러한 불필요한 복사를 방지하기 위한 다양한 기법을 제공합니다. 불필요한 복사 방지 기법1. RVO(Return Value Optimization)와 NRVO(Named Return Value Optimization)RVO와 NRVO는 컴파일러가 반환값을 최적화하여 불필요한 복사를 방지하는 기법입니다. 예제 코드#include class MyClass {public: MyClass() { std::cout 위 코드는 MyClass 객체를 반환할 때 RVO와 NRVO가 적용되어 불필요한 복사를 방지합니다. 2. 이동 시멘틱스 (Move.. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 6: 네트워크 프로토콜 기초 네트워크 프로토콜 기초네트워크 프로토콜은 네트워크 상에서 데이터를 주고받는 규칙을 정의한 것입니다. 프로토콜은 데이터의 형식, 전송 방식, 오류 처리 등을 규정합니다. 네트워크 통신의 대부분은 여러 프로토콜의 조합으로 이루어집니다.OSI 7계층 모델OSI(Open Systems Interconnection) 모델은 네트워크 통신을 7개의 계층으로 나눈 모델입니다. 각 계층은 특정한 기능을 담당하며, 서로 독립적으로 동작합니다.물리 계층 (Physical Layer): 물리적인 매체를 통해 데이터를 전송합니다. (예: 케이블, 전파)데이터 링크 계층 (Data Link Layer): 인접한 네트워크 노드 간의 데이터 전송을 담당합니다. (예: Ethernet, Wi-Fi)네트워크 계층 (Network La.. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조] Day 6: 트리의 기본 개념 트리 (Tree)트리는 계층적 자료구조로, 노드(Node)와 간선(Edge)으로 구성됩니다. 트리는 하나의 루트(Root) 노드를 가지며, 각 노드는 자식 노드를 가질 수 있습니다. 트리는 사이클이 없는 비순환 그래프입니다.트리의 용어:루트 노드 (Root Node): 트리의 최상위 노드입니다.부모 노드 (Parent Node): 특정 노드의 바로 위에 있는 노드입니다.자식 노드 (Child Node): 특정 노드의 바로 아래에 있는 노드입니다.리프 노드 (Leaf Node): 자식 노드가 없는 노드입니다.서브트리 (Subtree): 노드와 그 자손 노드들로 이루어진 트리의 부분 집합입니다.높이 (Height): 루트 노드에서 리프 노드까지의 최대 경로 길이입니다.이진 트리 (Binary Tree)이진 .. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트] Day 3: SFINAE와 개념 SFINAE(Substitution Failure Is Not An Error)는 템플릿 메타프로그래밍에서 중요한 개념으로, 템플릿 인자 치환 실패가 오류를 일으키지 않도록 하는 원리입니다. 이를 통해 조건부로 템플릿을 선택할 수 있습니다. 오늘은 SFINAE와 함께 개념(Concepts)에 대해 학습하겠습니다.SFINAESFINAE란?SFINAE는 "Substitution Failure Is Not An Error"의 약자로, 템플릿 인자 치환이 실패하더라도 이를 오류로 간주하지 않고, 다른 템플릿이 선택될 수 있도록 합니다. 이를 통해 템플릿 특수화나 함수 오버로딩 시 특정 조건에 따라 선택할 수 있습니다. SFINAE의 기본 사용법다음은 SFINAE를 사용하여 특정 타입에 대해서만 템플릿을 활성화하.. 2024. 8. 1. [C++ 성능 최적화 및 고급 테크닉] Day 3: 코드 프로파일링 및 벤치마킹 코드 프로파일링프로파일링은 프로그램의 성능을 분석하고, 성능 병목 지점을 식별하는 과정입니다. 이를 통해 최적화가 필요한 부분을 정확히 파악할 수 있습니다. 프로파일링 도구gprof: GNU 프로파일러로, C/C++ 프로그램의 성능을 분석하는 도구입니다.Valgrind: 메모리 디버깅과 프로파일링을 위한 도구입니다.perf: 리눅스 성능 분석 도구로, 다양한 하드웨어 성능 카운터를 제공합니다. gprof 사용법다음은 gprof를 사용하여 C++ 프로그램을 프로파일링하는 예제입니다. 1. 코드 컴파일프로파일링 정보를 포함하여 코드를 컴파일합니다.g++ -pg main.cpp -o main 2. 프로그램 실행프로파일링 데이터를 생성하기 위해 프로그램을 실행합니다../main 3. 프로파일링 결과 분석gpro.. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 3: 소켓 프로그래밍 기초 (UDP) UDP 소켓 프로그래밍UDP(User Datagram Protocol)는 비연결형 프로토콜로, 신뢰성보다는 빠른 데이터 전송을 목적으로 합니다. UDP는 데이터의 순서나 무결성을 보장하지 않기 때문에, 주로 실시간 스트리밍, 게임 네트워크, 간단한 요청-응답 등의 용도로 사용됩니다. UDP 소켓 프로그래밍의 주요 함수소켓 생성socket() 함수: 소켓을 생성합니다.domain: 주소 체계 (예: AF_INET - IPv4)type: 소켓 타입 (예: SOCK_DGRAM - UDP)protocol: 프로토콜 (일반적으로 0으로 설정)int socket(int domain, int type, int protocol);서버 측 소켓 프로그래밍bind() 함수: 소켓에 IP 주소와 포트 번호를 바인딩합니다.i.. 2024. 8. 1. 이전 1 ··· 36 37 38 39 40 41 42 ··· 51 다음 반응형