간단한 게임을 만들어봤는데..
둘빛
간단한 게임을 만들었는데 실행시 약간의 문제가 있습니다.질문 요약 :일단 몬스터를 잡고나면 경험치가 누적이 되어야하는데 EXP함수에 문제가 있는지 경험치가 쌓이지 않습니다.
그리고 HP가 새로운 던전에 갈때마다 100으로 원상복귀가 되는데... 원상복귀를 막는법 좀 알고싶습니다..질문 내용 :
#include stdio.h
#include time.h
#include stdlib.h
struct character
{
int HP;
int Level;
int Str;
int Dex;
int Luck;
char* monsternamed;
};
struct character mycharacter = {100, 1, 5, 5, 5, 0};
struct character *ptr = &mycharacter;
int VEL(int n);
int Monattack(int k);
char MonName(int k);
int MonHP(int k);
int monexp(int k);
int PlayerStr(int n);
int PlayerHP(int n);
int PlayerDex(int n);
void Fight(int k, int HP);
int Exp(int n);
void main()
{
int n = 1, level = 1, field, HP;
char name[100];
mycharacter;
printf(당신의 이름을 입력하시오 : );
scanf(%s, name);
HP = mycharacter.HP;
for(n=1; ;n++){
printf(Where are you going to fight?\n\n 1 : beginner zone 2 : expert zone 3 : Dark Forest\n);
printf( 4 : Dungeon 5 : Flying Castle 6 : Pirates of DongHae\n 7 : Dragon dungeon \n);
scanf(%d, &field);
Fight(field, HP);
Exp(n);
LEVEL(n);
}
}
int PlayerStr(int n)
{
int Str = 0, attack, level;
mycharacter;
level = LEVEL(n);
Str = 10 * level + mycharacter.Str;
attack = rand()%10*level + ((10*level)+Str);
/*if(Level == level + 1 || Level == 1){
printf( Level : %d\n, Level);
printf(Str : %d Dex : %d\n Int : %d Con : %d\n Luck : %d\n, Str, Dex, Int, Con, Luck);
}*/
return attack;
}
int PlayerHP(int n){
int HP, level;
mycharacter;
level = LEVEL(n);
HP = 10 * (level-1) + mycharacter.HP;
mycharacter.HP = HP;
return HP;
}
int PlayerDex(int n){
int Dex;
mycharacter;
LEVEL(n);
Dex = 10 * LEVEL(n) + (mycharacter.Dex);
return Dex;
}
int LEVEL(int n){
int exp;
int level = 1, lev;
mycharacter;
level = mycharacter.Level;
exp = Exp(n);
if(exp == 1000*level - 1){
lev = level++;
}
else
lev = level;
return lev;
}
int Exp(int n){
int k, exp = 0;
exp = monexp(n);
for(k = 1; k=n; k++){
if(k == n)
break;
exp += Exp(k);
}
return exp;
}
int Monattack(int k){
int mon1, mon2, mon3, mon4, mon5, mon6, mon7;
srand(time(NULL));
mon1 = rand()%(10*k) + 10;
mon2 = rand()%(15*k) + 15;
mon3 = rand()%(20*k) + 20;
mon4 = rand()%(25*k) + 25;
mon5 = rand()%(40*k) + 40;
mon6 = rand()%(50*k) + 50;
mon7 = rand()%(65*k) + 60;
if(k == 1)
return mon1;
if(k == 2)
return mon2;
if(k == 3)
return mon3;
if(k == 4)
return mon4;
if(k == 5)
return mon5;
if(k == 6)
return mon6;
if(k == 7)
return mon7;
else
return 0;
}
int MonHP(int k){
int mon1HP,mon2HP,mon3HP,mon4HP,mon5HP,mon6HP,mon7HP;
mon1HP = rand()%(70*k) + 10;
mon2HP = rand()%(75*k) + 15;
mon3HP = rand()%(80*k) + 20;
mon4HP = rand()%(85*k) + 25;
mon5HP = rand()%(90*k) + 40;
mon6HP = rand()%(100*k) +50;
mon7HP = rand()%(110*k) +70;
if(k == 1)
return mon1HP;
if(k == 2)
return mon2Hrn mon2HP;
if(k == 3)
return mon3HP;
if(k == 4)
return mon4HP;
if(k == 5)
return mon5HP;
if(k == 6)
return mon6HP;
if(k == 7)
return mon7HP;
else
return 0;
}
char MonName(int k)
{
char* monstername;
int probability;
srand(time(NULL));
probability = rand()%100 + 1;
if(probability 40){
if(k == 1)
monstername = Rabbit;
if(k == 2)
monstername = Rabbit warrior;
if(k == 3)
monstername = Rabbit knight;
if(k == 4)
monstername = Mad rabbit;
if(k == 5)
monstername = Rabbit king;
if(k == 6)
monstername = Carp;
if(k == 7)
monstername = Oak knight;
}
else if(probability =40 && probability 60){
if(k == 1)
monstername = deer;
if(k == 2)
monstername = Oak;
if(k == 3)
monstername = deer knight;
if(k == 4)
monstername = Mad deer;
if(k == 5)
monstername = deer king;
if(k == 6)
monstername = king of carp;
if(k == 7)
monstername = R;
}
else if(probability = 60 && probability 75){
if(k == 1)
monstername = rabbit;
if(k == 2)
monstername = rabbit warrior;
if(k == 3)
monstername = rabbit knight;
if(k == 4)
monstername = rabbit header;
if(k == 5)
monstername = rabbit king;
if(k == 6)
monstername = carp;
if(k == 7)
monstername = Oak knight;
}
else if(probability = 75 && probability 90){
if(k == 1)
monstername = rabbit;
if(k == 2)
monstername = rabbit warrior;
if(k == 3)
monstername = rabbit knight;
if(k == 4)
monstername = rabbit header;
if(k == 5)
monstername = rabbit king;
if(k == 6)
monstername = carp;
if(k == 7)
monstername = Oak knight;
}
else if(probability = 90 && probability = 100){
if(k == 1)
monstername = rabbit;
if(k == 2)
monstername = rabbit warrior;
if(k == 3)
monstername = rabbit knight;
if(k == 4)
monstername = rabbit header;
if(k == 5)
monstername = rabbit king;
if(k == 6)
monstername = carp;
if(k == 7)
monstername = Oak knight;
}
return* monstername;
}
int monexp(int k)
{
int probability, exp = 0;
srand(time(NULL));
probability = rand()%100 + 1;
if(probability 40){
exp = rand()%(100*k) + 50 * k;
}
else if(probability =40 && probability 60){
exp = rand()%(110*k) + 50 * k;
}
else if(probability = 60 && probability 75){
exp = rand()%(120*k) + 50 * k;
}
else if(probability = 75 && probability 90){
exp = rand()%(130*k) + 50 * k;
}
else if(probability = 90 && probability = 100){
exp = rand()%(140*k) + 50 * k;
}
return exp;
}
void Fight(int k, int HP){
int i, j, monHP, potion, attack;
monHP = MonHP(k);
srand(time(NULL));
potion = rand()%8 + 1;
attack = PlayerStr(k);
printf(Ah!!! You meet with monster\n);
printf(Fight!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n);
printf(Your HP : %d monHP : %d\n, HP, monHP);
for(i=0; ; i++){
printf(Your turn! What are you doing? \n 1. attack 2. potion 3. break 4. runaway\n);
scanf(%d, &j);
if(j == 1){
printf(you attacked %c\n, MonName(k));
monHP = monHP - attack;
printf(Your HP : %d monHP : %d\n, HP, monHP);
printf(%c attacked you\n, MonName(k));
HP = HP - Monattack(k);
}
else if(j == 2){
printf(Drinking potion, your HP : %d\n, HP + potion);
printf(%c attacked you\n, MonName(k));
HP = HP - Monattack(k);
}
else if(j == 3){
printf(Breathing time to you, your HP : %d\n, HP + 40 * LEVEL(k));
printf(%c attacked you\n, MonName(k));
HP = HP - Monattack(k);
}
else if(j == 4){
printf(Run away!!!!!!!!!!!);
break;
}
if(monHP = 0){
monHP = 0;
printf(Your HP : %d monHP : %d\n\n, HP, monHP);
printf(You win!!! give you exp : %d\n\n, monexp(k));
break;
}
else if(HP = 0){
HP = 0;
printf(Your HP : %d monHP : %d\n, HP, monHP);
printf(You die.... Challenge at the next time\n\n);
break;
}
printf(Your HP : %d monHP : %d\n, HP, monHP);
}
}
-
둘삥
이 코드 이해가 좀 어렵네요....
여튼 어디서 초기화가 되는데 해석을 못하겠어서... -
세나
HP 변수는 메인함수에 있는것과 Fight 함수에 있는것이 다른겁니다..
Fight 함수에서 백날 HP를 변화해줘도 메인함수랑은 다른 HP 라서 다시 메인함수로 가면 HP는 그대로입니다.
Fight 함수를 int로 잡고 HP를 리턴해주고, 그걸 메인함수의 HP가 받으면 될거같네요. -
유희
도저히 이해를 못하겠네요 ㄷㄷ
일단 int LEVEL(int n); 가 맨 위에 있어야 하구요
exp에다 뭘 집어넣는 부분을 보면 항상
exp = ? 요렇게 exp를 자꾸 초기화 하면서 넣네요.
exp += ? 이런 부분이 있어야 하지 않을런지..
그리고 함수에서 함수로 뛰어다니면서 변수들이 제데로 전달이 되나요?
exp라는 변수를 메인함수에 만들고 EXP 함수에 넣어서 경험치 값을 리턴 받고
그 exp 변수를 여기저기에 보내야 하지 않을까요..
voi
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |