System Developer | Algorithm Enthusiast | Low-level Programmer
C++ ํด๋์ค์ ์ค๋งํธ ํฌ์ธํฐ๋ก ์ค๊ณํ ์ ํฌํ RPG ์์คํ
// ์ ํฌ ๋ฃจํ ์์
class Battle {
public:
void battle_line(Character* character, Map::Map_node* map, bool char_first) {
Monster* monster = map->monster;
if (!monster || !monster->get_live()) {
std::cout << "์ด ์นธ์๋ ๋ชฌ์คํฐ๊ฐ ์์ต๋๋ค.\n";
return;
}
int char_def_p = ((character->get_defence_init() / (character->get_defence_init() + 43333.0) * 65 + 5)
+ (65 * (1 + pow(-2.71828182846, (-character->get_defence_init() / 93800.0))) + 5)) * 5000;
bool turn = char_first;
while (character->get_live() && monster->get_live()) {
if (turn) {
if (random(0, 10000) > mon_def_p)
monster->set_hp(monster->get_hp() - character->get_damage_init());
if (monster->get_hp() <= 0) {
monster->set_live(false);
std::cout << monster->get_name() << " ๊ฒฉํ!\n";
Level_Manager lm;
lm.add_exp(character, monster->get_exp_pd());
return;
}
} else {
if (random(0, 10000) > char_def_p)
character->set_hp(character->get_hp() - monster->get_damage_init());
if (character->get_hp() <= 0) {
character->set_live(false);
std::cout << character->get_name() << " ์ฐ๋ฌ์ง...\n";
return;
}
}
turn = !turn;
}
}
};
C์ธ์ด๋ก ์ค๋ฒ ๋ฑ๊ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ ๋ ผ๋ฆฌ์ ์ฌ๊ณ ๋ ฅ๊ณผ ์ต์ ํ ๋ฅ๋ ฅ ํฅ์
// ํ์ ๋ ฌ ๊ธฐ๋ฐ ์ ๋ ฌ ์์
void heapify(Books arr[], int arr_size, int i, int islast) {
int largest = i;
int left = i * 2 + 1;
int right = i * 2 + 2;
if (islast) {
if (left < arr_size && isBestseller(arr[largest], arr[left])) largest = left;
if (right < arr_size && isBestseller(arr[largest], arr[right])) largest = right;
} else {
if (left < arr_size && isnamesort(arr[largest], arr[left])) largest = left;
if (right < arr_size && isnamesort(arr[largest], arr[right])) largest = right;
}
if (largest != i) {
Books temp = arr[largest];
arr[largest] = arr[i];
arr[i] = temp;
heapify(arr, arr_size, largest, islast);
}
}
C์ธ์ด๋ก ์ง์ ๊ตฌํํ ์๋ฃ๊ตฌ์กฐ (LinkedList, BST, Heap, Merge Sort, Graph)
// ๋งํฌ๋ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ์ด์ง ํ์ ํธ๋ฆฌ
typedef struct BST {
long long data;
long long count;
struct BST* left;
struct BST* right;
} BST;
BST* make_BST(long long data) {
BST* node = (BST*)malloc(sizeof(BST));
node->data = data;
node->count = 1;
node->left = NULL;
node->right = NULL;
return node;
}
void insert_node(long long data, BST** head) {
if ((*head) == NULL) { *head = make_BST(data); return; }
BST* temp = *head;
BST* last = NULL;
while (temp) {
last = temp;
if (temp->data > data) temp = temp->left;
else if (temp->data < data) temp = temp->right;
else { temp->count++; return; }
}
BST* insert = make_BST(data);
if (last->data > data) last->left = insert;
else last->right = insert;
}
| Repository | Description | Main Language |
|---|---|---|
| RPG-project-25.08 | ์ ํฌํ RPG ์์คํ (C++ ํด๋์ค, ์ค๋งํธ ํฌ์ธํฐ, ๊ทธ๋ํ ๊ธฐ๋ฐ ๋งต) | C++ |
| Backjoon | ๋ฐฑ์ค ์ค๋ฒ ๋ฌธ์ ํ์ด (C์ธ์ด, DFS/BFS, ์ ๋ ฌ) | C |
| Data-structure-practice | C์ธ์ด ์๋ฃ๊ตฌ์กฐ ์ง์ ๊ตฌํ (LinkedList, BST, Heap, Merge Sort) | C |
Each repository demonstrates logical design, algorithmic clarity, and memory-level control โ key traits of a future Game Engine Developer.