본문 바로가기
프로그래밍/C 언어(코딩)

C언어] RPG게임만들기-3 (사냥터 설정)

by 곰나나 2024. 1. 1.

[RPG게임만들기]

RPG게임만들기 사냥터 설정 하기 하급 사냥터(1~3) 등급 몬스터 등장

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
//& 플레이어 구조체 정의
typedef struct {
    //& 멤버 변수(플레이어 정보 설정)
    int HP;
    int MP;
    double physicalAttack;
    double magicalAttack;
    int strength;
    int agility;
    int luck;
    int magicPower;
    double defense;
    double resistance;
    double speed;
    double critical;
} Player;
 
//& 적(몬스터) 구조체 정의
typedef struct {
    //& 멤버 변수 (몬스터 정보 설정)
    int grade;
    int HP;
    int MP;
    double physicalAttack;
    double magicalAttack;
    int strength;
    int agility;
    int luck;
    int magicPower;
    double defense;
    double resistance;
    double speed;
    double critical;
} Monster;
 
//& 플레이어 속성 계산 함수
void calculateAttributes(Player* player)
{
    //& 물리 공격력 = (기본 1)+(힘 * 3) / 10.0
    player->physicalAttack = (1+ (player->strength * 3/ 10.0;
 
    //& 마법 공격력 = (기본0.5)+(마력 * 2) / 8.0
    player->magicalAttack = (0.5+ (player->magicPower * 2/ 8.0;
 
    //& 방어력 = 5 + (힘 / 15)
    player->defense = 5 + (player->strength / 15.0);
 
    //& 저항력 = 3 + (마력 / 20)
    player->resistance = 3 + (player->magicPower / 20.0);
 
    //& 스피드 = 1 * (민첩 / 5)
    player->speed = 1 * (player->agility / 5.0);
 
    //& 크리티컬 = 0 * (행운 / 2)
    player->critical = 0 * (player->luck / 2.0);
}
 
//& 몬스터 속성 계산 함수
void calculateMonsterAttributes(Monster* monster)
{
    //& 물리 공격력 = (힘 * 1) / 10.0
    monster->physicalAttack = (monster->strength * 1/ 10.0;
 
    //& 마법 공격력 = (마력 * 0.2) / 8.0
    monster->magicalAttack = (monster->magicPower * 0.2/ 8.0;
 
    //& 방어력 = (등급 * 3) + (힘 / 15)
    monster->defense = (monster->grade * 3+ (monster->strength / 15.0);
 
    //& 저항력 = (등급 * 1) + (마력 / 20)
    monster->resistance = (monster->grade * 1+ (monster->magicPower / 20.0);
 
    //& 스피드 = 1 * (민첩 / 5)
    monster->speed = 1 * (monster->agility / 5.0);
 
    //& 크리티컬 = 0 * (행운 / 2)
    monster->critical = 0 * (monster->luck / 2.0);
}
 
//& 플레이어 정보 표시 함수
void displayPlayerInfo(Player* player) 
{
    printf("\n=== 플레이어 정보 ===\n");
    printf("HP: %d\n", player->HP);
    printf("MP: %d\n", player->MP);
    printf("물리 공격력: %lf\n", player->physicalAttack);
    printf("마법 공격력: %lf\n", player->magicalAttack);
    printf("방어력: %lf\n", player->defense);
    printf("저항력: %lf\n", player->resistance);
    printf("스피드: %lf\n", player->speed);
    printf("크리티컬: %lf\n", player->critical);
}// displayPlayerInfo
 
//& 몬스터 정보 표시 함수
void displayMonsterInfo(Monster* monster) 
{
    printf("\n=== 몬스터 정보 ===\n");
    printf("몬스터 등급 : %d\n", monster->grade);
    printf("HP: %d\n", monster->HP);
    printf("MP: %d\n", monster->MP);
    printf("물리 공격력: %lf\n", monster->physicalAttack);
    printf("마법 공격력: %lf\n", monster->magicalAttack);
    printf("방어력: %lf\n", monster->defense);
    printf("저항력: %lf\n", monster->resistance);
    printf("스피드: %lf\n", monster->speed);
    printf("크리티컬: %lf\n", monster->critical);
}//displayMonsterInfo
 
//& 전투 함수
void battle(Player* player, Monster* monster) 
{
    // 전투 로직 추가
    
}
 
int main() 
{
    //& 난수 발생을 위한 시드 설정
    srand((unsigned int)time(NULL));
 
    //& 플레이어 구조체 생성 및 초기화
    Player player;
    player.HP = 100;
    player.MP = 50;
    player.strength = 10;
    player.agility = 10;
    player.luck = 10;
    player.magicPower = 5;
    calculateAttributes(&player);
 
    //& 메뉴 선택
    int choice;
    do {
        printf("\n=== 메뉴 ===\n");
        printf("1. 플레이어 정보 표시\n");
        printf("2. 하급 사냥터(1~3) 등장\n");
        printf("3. 종료\n");
        printf("선택: ");
        scanf_s("%d"&choice);
 
        system("cls"); // 화면 지우기
 
        switch (choice) {
        case 1:
            displayPlayerInfo(&player);
            break;
        case 2: {
            //& 몬스터 생성 및 초기화 (등급은 1~3 랜덤)
            Monster monster;
            monster.grade = rand() % 3 + 1;
            monster.HP = 80 + monster.grade * 20;
            monster.MP = 40 + monster.grade * 10;
            monster.strength = monster.grade * 5;
            monster.agility = monster.grade * 5;
            monster.luck = monster.grade * 5;
            monster.magicPower = monster.grade * 2;
            calculateMonsterAttributes(&monster);
 
            //& 전투 실행
            battle(&player, &monster);
 
            //& 몬스터 정보 표시 (임시
            displayMonsterInfo(&monster);
            break;
        }
        case 3:
            printf("프로그램을 종료합니다.\n");
            break;
        default:
            printf("잘못된 선택입니다. 다시 선택하세요.\n");
        }
    } while (choice != 3);
 
    return 0;
}// main
cs

728x90