체력과 대미지 변수를 선언하고 공격을 받아서 캐릭터가 사망하는 코드를 짜보았다.
int hp = 10; //체력
int damage = 3; //적의 공격력
void EnemyAttack() //적이 공격함
{
hp = hp - damage;
if (hp > 0)
{
Console.WriteLine("당신의 현재 HP " + hp + "에서 " + damage + " 만큼의 대미지를 입었습니다.");
Console.WriteLine("현재 hp는 " + hp + " 입니다.");
}
else if (hp <= 0)
{
Console.WriteLine("당신은 사망했습니다.");
}
}
EnemyAttack(); // 당신의 현재 HP 10 에서 3 만큼의 대미지를 입었습니다. 현재 hp는 7입니다.
EnemyAttack(); // 당신의 현재 HP 7 에서 3 만큼의 대미지를 입었습니다. 현재 hp는 4입니다.
EnemyAttack(); // 당신의 현재 HP 4 에서 3 만큼의 대미지를 입었습니다. 현재 hp는 1입니다.
EnemyAttack(); // 당신은 사망했습니다.
EnemyAttack이란 함수를 구현해 대미지를 받으면 체력이 떨어지고 체력이 0 이하가 되면 사망했다는 문구를 띄웠다.
하지만 EnemyAttack 함수를 계속 불러오면 당신은 사망했습니다. 문구만 계속 나올 뿐이다.
반복문을 사용해서 사망할 때까지만 때려보자
int hp = 10; //체력
int enemyDamage = 3; //적의 공격력
while(hp>=0) // while 반복문 hp가 0 이상이라면 계속 반복된다.
{
EnemyAttack();
}
void EnemyAttack() //적이 공격함
{
hp = hp - enemyDamage;
if (hp > 0)
{
Console.WriteLine("당신의 현재 HP " + hp + "에서 " + enemyDamage + " 만큼의 대미지를 입었습니다.");
Console.WriteLine("현재 hp는 " + hp + " 입니다.");
}
else if (hp <= 0)
{
Console.WriteLine("당신은 사망했습니다.");
}
}
를 실행해보면 다음과 같은 결과가 나온다.
이로써 죽고나면 추가로 더 맞는 일은 방지했다.
근데 맞고만 있으니 억울한데 나도 때려보자.
int hp = 10; //나의 체력
int damage = 3;//나의 공격력
int enemyHp = 10; // 적의 체력
int enemyDamage = 3; //적의 공격력
while(hp>=0 && enemyHp>=0) // while 반복문 (나와 적 둘 중에 하나라도 죽으면 게임종료)
{
Attack();
EnemyAttack();
}
void Attack() //내가 공격함
{
enemyHp = enemyHp - damage;
if (enemyHp > 0)
{
Console.WriteLine("적은" + damage + " 만큼의 대미지를 입었습니다.");
}
else if (enemyHp <= 0)
{
Console.WriteLine("적은 더 이상 움직이지 않습니다.");
}
}
void EnemyAttack() //적이 공격함
{
hp = hp - enemyDamage;
if (hp > 0)
{
Console.WriteLine("당신의 현재 HP " + hp + "에서 " + enemyDamage + " 만큼의 대미지를 입었습니다.");
Console.WriteLine("현재 hp는 " + hp + " 입니다.");
}
else if (hp <= 0)
{
Console.WriteLine("당신은 사망했습니다.");
}
}
적의 체력과 나의 대미지 변수를 추가하고 Attack이라는 새로운 변수를 만들어서 공격할 수 있도록 했다.
내가 먼저 때리고 적이 때리는 순서대로 만들었고 적과 나의 체력과 공격력이 같다면 나만 살아남을 것이다.
먼저 때리기 시작했는데 최후의 발악이라도 맞았는지 둘 다 죽어버리는 결과가 나왔다.
적이 hp가 0이 되면 함수가 그만 실행되게 하려면 어떻게 해야할까
while(hp>=0 && enemyHp>=0) // while 반복문 (나와 적 둘 중에 하나라도 죽으면 게임종료)
{
if(hp>0) // 내가 살아있다면 공격한다.
Attack();
if(enemyHp>0) // 적이 살아있다면 공격한다.
EnemyAttack();
}
while 반복문에 if 처리를 해 살아있어야만 공격하게 바꿔보았다.
이제 클래스를 사용해서 더 많은 정보를 넣어보자
0828 TIL - 르탄이 찾기 카드게임 만들기 (7) | 2024.08.28 |
---|---|
0827 TIL - 고양이 밥주기 게임 제작 (2) | 2024.08.27 |
0826 TIL - 풍선을 지켜라 게임 제작 (8) | 2024.08.26 |
0823 TIL - 빗물 받는 르탄 제작 _2 (0) | 2024.08.23 |
0822 TIL - 빗물 받는 르탄 제작 _1 (0) | 2024.08.22 |