게임 개발/언리얼 강의 (클라-서버)
-
#include 로 .h 헤더 파일을 넣음. -> 통째로 복사해서 긁어오는 방식. 꼭 필요한 것만 넣는게 좋음. #pragma once: 실수로 같은 내용이 두번 들어갈 수 있는데, 한번만 들어가게 해 주는 키워드. 컴파일러에서 지원하는 것. #ifndef, #define, #endif 를 사용하는 방식도 있음. 얘는 언어에서 지원하는 방법.
파일 분할 관리#include 로 .h 헤더 파일을 넣음. -> 통째로 복사해서 긁어오는 방식. 꼭 필요한 것만 넣는게 좋음. #pragma once: 실수로 같은 내용이 두번 들어갈 수 있는데, 한번만 들어가게 해 주는 키워드. 컴파일러에서 지원하는 것. #ifndef, #define, #endif 를 사용하는 방식도 있음. 얘는 언어에서 지원하는 방법.
2023.10.27 -
#include using namespace std; #include const int MAX = 1000; int board[MAX][MAX] = {0, }; int N; void PrintBoard() { int digit = 0; int temp = N*N; while (temp > 0) { temp /= 10; digit++; } for (int i = 0; i < N; i++) { cout
[언리얼 MMORPG pt1] 달팽이 문제#include using namespace std; #include const int MAX = 1000; int board[MAX][MAX] = {0, }; int N; void PrintBoard() { int digit = 0; int temp = N*N; while (temp > 0) { temp /= 10; digit++; } for (int i = 0; i < N; i++) { cout
2023.10.27 -
#include using namespace std; void ReverseStr(char* str) { int len = strlen(str); for (int i = 0; i < len/2; i++) { swap(str[i], str[len - i - 1]); } } void StrCat(char* dst, char* src) { int len = strlen(src); int lenDst = strlen(dst); for (int i = 0; i < len; i++) { *(dst + len + i) = src[i]; } } int StrCmp(char* str1, char* str2) { while (*str1 != '\0' || *str2 != '\0') { if (*str1 < *str2) {..
[언리얼 MMORPG pt1] 문자열 함수 구현#include using namespace std; void ReverseStr(char* str) { int len = strlen(str); for (int i = 0; i < len/2; i++) { swap(str[i], str[len - i - 1]); } } void StrCat(char* dst, char* src) { int len = strlen(src); int lenDst = strlen(dst); for (int i = 0; i < len; i++) { *(dst + len + i) = src[i]; } } int StrCmp(char* str1, char* str2) { while (*str1 != '\0' || *str2 != '\0') { if (*str1 < *str2) {..
2023.10.27 -
#include using namespace std; // 오늘의 주제: 다차원 배열 int main() { int a[10] = { 1, 2, 3 }; int first[5] = { 4, 2, 3, 4, 1 }; int second[5] = { 1, 1, 5, 2, 2 }; int apartment2D[2][5] = { { 4, 2, 3, 4, 1 }, { 1, 1, 5, 2, 2 } }; // 인덱스 이용 for (int floor = 0; floor < 2; floor++) { for (int room = 0; room < 5; room++) { cout
[언리얼 MMORPG pt1] 다차원 배열#include using namespace std; // 오늘의 주제: 다차원 배열 int main() { int a[10] = { 1, 2, 3 }; int first[5] = { 4, 2, 3, 4, 1 }; int second[5] = { 1, 1, 5, 2, 2 }; int apartment2D[2][5] = { { 4, 2, 3, 4, 1 }, { 1, 1, 5, 2, 2 } }; // 인덱스 이용 for (int floor = 0; floor < 2; floor++) { for (int room = 0; room < 5; room++) { cout
2023.10.27 -
#include using namespace std; // 오늘의 주제: 다중 포인터 void SetNumber(int* a) { *a = 1; } /* * 에서 const가 별표 전에 오느냐 뒤에 오느냐에 따라 의미가 다른데 별표 전에 오면 msg 자체는 다른 주소로 교체 가능하되 (msg는 주소를 담는 바구니죠), 실제 그 주소를 타고 가서 있는 데이터 (char)를 바꿀 수 없다는 의미입니다. 반면 const가 별표 뒤에 오면, 포인터 값 자체를 바꿀 수 없게 됩니다. */ void SetMessage(const char* msg) { // msg 매개변수는 스택에 추가로 생성된다. // 즉 main 함수의 msg와는 다른 메모리 공간에 저장된다. // 즉, 값복사가 이루어진것. msg = "Bye..
[언리얼 MMORPG pt1] 다중 포인터#include using namespace std; // 오늘의 주제: 다중 포인터 void SetNumber(int* a) { *a = 1; } /* * 에서 const가 별표 전에 오느냐 뒤에 오느냐에 따라 의미가 다른데 별표 전에 오면 msg 자체는 다른 주소로 교체 가능하되 (msg는 주소를 담는 바구니죠), 실제 그 주소를 타고 가서 있는 데이터 (char)를 바꿀 수 없다는 의미입니다. 반면 const가 별표 뒤에 오면, 포인터 값 자체를 바꿀 수 없게 됩니다. */ void SetMessage(const char* msg) { // msg 매개변수는 스택에 추가로 생성된다. // 즉 main 함수의 msg와는 다른 메모리 공간에 저장된다. // 즉, 값복사가 이루어진것. msg = "Bye..
2023.10.26 -
#include using namespace std; // 오늘의 주제: 포인터 vs 배열 void TestFunc(char param[]) // 배열을 함수인자로 넘기면 알아서 포인터로 치환한다. { // 어셈블리를 까 보면 결국 포인터로 전달 param[0] = 'A'; } int main() { // 문자열 == 문자의 배열 cout
[언리얼 MMORPG pt1] 포인터 vs 배열#include using namespace std; // 오늘의 주제: 포인터 vs 배열 void TestFunc(char param[]) // 배열을 함수인자로 넘기면 알아서 포인터로 치환한다. { // 어셈블리를 까 보면 결국 포인터로 전달 param[0] = 'A'; } int main() { // 문자열 == 문자의 배열 cout
2023.10.26