개발 161

C++ 배치고사 필수 문제

1번. 배열 원소 합하기long long sum(const vector& v) { long long Sum = 0; for(int i = 0; i 벡터 사이즈는 size() 반드시 붙여준다... C++은 무조건 length(), size()로 길이 구하는 건 다 함수니까 () 붙인다.Array는 쓸 일 없으니 까먹어도 된다. 2번. 윤년 구하기bool is_leap(int y) { if(y%4 ==0 && y%100 != 0) { return true; } else if(y%400 == 0) { return true; } else { return false; }} 4의 배수지만 100의 배수는 아니면 tru..

C++ 팀프로젝트 - 텍스트 RPG 게임 만들기(5)

Unique pointer와 Shared Pointer 사용처 차이소유자가 1명으로 명확하다 → unique_ptr (인벤토리 슬롯, 플레이어 장비 등)여러 곳에서 참조해야 한다 → shared_ptr (퀵슬롯 + 인벤토리 동시 참조, 파티원 공유 버프 등) 캐릭터 장비캐릭터 장비같은 경우는 보통 인벤토리와 equipped를 나눠서 캐릭터에 작성한다. 윈도우 콘솔에 사운드 넣기 #pragma once#include #pragma comment(lib, "winmm.lib")class SoundManager {public: static SoundManager& getInstance() { static SoundManager instance; // 최초 1회만 생성 re..

C++ 팀프로젝트 - 텍스트 RPG 게임 만들기(4)

몬스터 턴은 수행 후 바로 턴이 끝나버려서 실드가 적용되지 않는다. 몬스터의 실드는 다음 턴까지 유지되는 것으로 바꿨다. #pragma once#include "Character.h"class Monster : public Character {public: Monster(int HP, Dice& CharacterDice, string Name) : Character(HP, CharacterDice, Name), IsShieldTurn(false) {}; virtual void TakeShield(int Shield_) { if (Shield_ Shield = 0; } this->Shield += Shield_; Is..

C++ 팀프로젝트 - 텍스트 RPG 게임 만들기(2)

사운드 기능을 만들어보면 좋을 것 같다. void EndTurn(); 추가 전투중이 아닐 때 다이스를 볼 수 있게 만듦레벨업 시에는 MaxHP += 3 해주기 죽은 상태죽으면 체력은 0 고정 아이템 힐링포션 HP+5 TakeHealTakeShield 테이크 데미지에서 데미지를 받을 수 있게 조정 현재 경험치가 목표 경험치에 도달하면 레벨업 나중에 주사위 면을 강화하기 const 멤버변수는 초기화 리스트나 선언 시에 초기화해야한다. 생성자 본문에서는 안 됨. 함수 리팩토링// 대미지 입음void Character::TakeDamage(int Damage){ // 대미지 계산 int Damage_ = Damage - Shield; // 실드가 데미지보다 크면 0 대미지로 처리 if ..

C++ 팀프로젝트 - 텍스트 RPG 게임 만들기(1)

첫번째 팀프로젝트로 C++을 사용한 턴제 전투가 있는 RPG를 만들기로 하였다. 우리 조는 슬라이스 앤 다이스라는 주사위를 이용한 로그라이크 턴제 RPG게임을 모작하기로 했다. Github 리포지토리 생성Github 리포지토리를 새 프로젝트에 충돌없이 연결하려면 이렇게 진행하면 된다.Github에서 ReadMe, .gitIgnore 없이 빈 리포지토리를 생성한다.비주얼 스튜디오로 새 프로젝트를 만들고, 해당 디렉토리를 git init으로 리포지토리로 만든다.Git 주소를 원격 리포지토리로 설정한다..gitignore 파일을 직접 생성한다.파일 커밋 후 Push한다. 만약 리포지토리 생성할 때 ReadMe나 .gitIgnore를 만들었다면, 파일이 충돌하므로 리포지토리를 새로 만들거나 force push를..

C++ 기초 - 찾고, 자르고, 바꾸기

stringstring은 사실 vector의 사촌문자(char)를 연속 메모리에 담는 것 find - 검색 위치를 반환s.find("World")를 호출하면 시작 인덱스(위치)를 반환한다.npos="no position"의 줄임말size_t pos = s.find("검색어");if(pos != string::npos){ // pos는 시작 위치}find를 쓰면 반드시 npos 체크!find의 두 번째 매개변수어디서부터 찾을지를 지정ctrl + F 등에서 사용s.find("Hello", 7)시간 복잡도: 최악O(n*m)(원본 길이*검색어 길이) substr 파일 확장자 분리filename = "game_save.dat"find('.') -> 위치 9substr(0,9) -> "game_save" (파일명)..

Unreal 부트캠프 - C++ 블루프린트 클래스 만들기 과제

https://igae-dev.tistory.com/86 C++ 기초 - 언리얼 엔진 기본 개념언리얼 엔진은 기존에 설치해두었으므로, C++을 언리얼에 적용하는 부분을 중점적으로 필기한다. Visual Studio도 2022 버전이 이미 설치되어 있으므로 C++을 사용한 게임 개발 도구만 추가되어있는지igae-dev.tistory.com 이 이후 기초적인 C++ 블루프린트 클래스 만들기 과제를 진행하였다.근데 뭘 알려주고 과제를 하라고 해야지 C++ 액터만들기 달랑 알려주고 움직임 구현하라는 게 맞나?강의 대신 클로드가 열일해줬다. 생성한 Cpp 액터 클래스 우클릭하면 Create Blueprint class based on CppCharacter 컨텐트 폴더 아래 블루프린트 폴더 생성부터 해주고 우..

게임 스토리 만드는 툴, Twine

https://twinery.org/ Twine / An open-source tool for telling interactive, nonlinear storiesEach of Twine's built-in story formats has an online guide: Chapbook Harlowe Snowman SugarCubetwinery.org 게임 스토리 만들기에 대해 찾아보다가 이러한 툴을 언급한 글을 보고 찾아보았다. 만져보니 게임북 형식의 텍스트 어드벤처 게임 만들기에 적합한 것 같고, itch.io로 바로 내보내기도 가능한 듯하다. 아직 툴을 잘 몰라 툴 내에서 변수 조작이나 노드 관리를 하기는 어렵지만, 이걸로 게임 스토리를 짜보는 것도 괜찮겠다.