데블스캠프2010/다섯째날/ObjectCraft/미션2/허준 (rev. 1.3)
main.cpp ¶
#include <stdio.h>
struct unit {
int att;
int def;
int HP;
};
void main() {
unit zeli1={5,0,50};
unit zeli2={5,0,50};
while(zeli2.HP>0 || zeli1.HP>0) {
zeli2.HP -= zeli1.att;
zeli1.HP -= zeli2.att;
printf("저글링1이 저글링2에 데미지 %d를 입혀서 저글링2의 HP가 %d가 되었습니다.\n", zeli1.att, zeli2.HP);
if(zeli2.HP == 0) {
printf("저글링2가 죽었습니다.\n");
break;
}
printf("저글링2이 저글링1에 데미지 %d를 입혀서 저글링1의 HP가 %d가 되었습니다.\n", zeli2.att, zeli1.HP);
if(zeli1.HP == 0) {
printf("저글링1가 죽었습니다.\n");
break;
}
}
}
main.cpp(수정) ¶
#include <stdio.h>
struct unit {
int no;
int att;
int def;
int HP;
};
unit zeli1, zeli2;
void init_unit() {
zeli1.no = 1;
zeli1.att = 5;
zeli1.def = 0;
zeli1.HP = 50;
zeli2.no = 2;
zeli2.att = 5;
zeli2.def = 0;
zeli2.HP = 50;
}
int get_damage(unit a1, unit a2) {
return a1.att - a2.def;
}
void attack(unit a1, unit& a2) {
int damage = get_damage(a1, a2);
a2.HP -= damage;
printf("저글링%d이 저글링%d에 데미지 %d를 입혀서 저글링%d의 HP가 %d가 되었습니다.\n", a1.no, a2.no, damage, a2.no, a2.HP);
}
int is_dead(unit a) {
return a.HP <=0;
}
void main() {
init_unit();
while(true) {
attack(zeli1, zeli2);
if(is_dead(zeli2)) {
printf("저글링%d가 죽었습니다.\n", zeli2.no);
break;
}
attack(zeli2, zeli1);
if(is_dead(zeli1)) {
printf("저글링%d가 죽었습니다.\n", zeli1.no);
break;
}
}
}