목록C++ (73)
오븐 노트
#include using namespace std; struct StatInfo { int hp; // +0 int attack; // +4 int defence; //+8 }; void EnterLobby(); StatInfo CreatePlayer(); // 포인터x void CreateMonster(StatInfo* info); // 포인터o // player 승리 시 true 패배시 false bool StartBattle(StatInfo* player, StatInfo* monster); int main() { EnterLobby(); return 0; } void EnterLobby() { cout hp = 0; if (player->hp == 0) return false; } } https..
#include using namespace std; void SetHP(int* hp) { *hp = 100; } int main() { // 포인터 사용 int hp = 1; SetHP(&hp); // 포인터 사용 int number = 1; // 타입의 불일치 // 아래 캐스팅의 경우 늘어난 바이트 수에 따라 다음 주소를 침범하게 되는데 해당 주소에 다른 값이 존재하고 있을 경우 덮어씌워버리는 일을 해버림 __int64* ptr = (__int64*)&number; *ptr = 0xAABBCCDDEEFF; return 0; } https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [C++과 언리얼로 만드는 ..
#include using namespace std; int main() { // 지금까지 사용한 방식 // number라는 이름의 4바이트 정수 타입의 바구니를 만든다 // number라는 변수 스택 메모리에 할당 // number = 1이라 함은, number 바구니에 1이라는 숫자를 넣으라는 의미 // 따라서 스택 메모리에 있는 특정 주소(number 바구니)에 우리가 원하는 값을 넣은 셈 // number는 비유하자면 메모리에 이름을 붙인 것 // 단점은 TextRPG 원본 수정 // 특정 메모리를 강제로 조작할 수 있게 만들어 주는 수단이 포인터. int number = 1; // TYPE* 변수이름; // 2가지 요소 // - TYPE // - * // 바구니는 바구니이지만 // [주소를 저장..
#include using namespace std; enum playerType { PT_Knight = 1, PT_Archer = 2, PT_Mage = 3, }; enum MonsterType { MT_Slime = 1, MT_Orc = 2, MT_Skeleton = 3, }; struct ObjectInfo { int type; int hp; int attack; int defence; }; // 구조체 멤버의 타입이 각기 다른 경우 padding 값이 할당되어 정렬됨 ObjectInfo playerInfo; ObjectInfo monsterInfo; void EnterLobby(); void SelectPlayer(); void EnterField(); void CreateRandomMonste..
#include using namespace std; enum playerType { PT_Knight = 1, PT_Archer = 2, PT_Mage = 3, }; enum MonsterType { MT_Slime = 1, MT_Orc = 2, MT_Skeleton = 3, }; int playerType; int hp; int attack; int defance; int monsterType; int monsterHp; int monsterAttack; int monsterDefence; void EnterLobby(); void SelectPlayer(); void EnterField(); void CreateRandomMonster(); int main() { // 랜덤 시드 설정 srand(t..
#include using namespace std; void PrintValue(int result) { cout
#include using namespace std; // 값 지정 필수인 상수 const int SCISSORS = 1; const int ROCK = 2; const int PAPER = 3; // 비슷한 용도끼리 묶은 열거형 // 값 지정은 선택 사항 // 값 지정 하지 않을 경우 첫번째 요소의 값은 0 // 값 지정 하지 않을 시 초기값부터 자동으로 +1 // 사용하는 습관 들이기 enum ENUM_SRP { ENUM_SCISSORS = 1, ENUM_ROCK, ENUM_PAPAER }; // # -> 전처리 지시문 // 지시 된 사항을 연산조차 하지 않고 그대로 복붙하는 매크로 // 1) 전처리 2) 컴파일 3) 링크 // 최대한 지양 #define DEFINE_TEST 1 + 2 #define..
#include using namespace std; int main() { // 가위 바위 보 srand(time(0)); // 시드 설정 const int SCISSORS = 1; const int ROCK = 2; const int PAPER = 3; int win = 0; int all = 0; while (true) { cout input; if (input == SCISSORS) { switch (computerValue) { case SCISSORS: cout