상세 컨텐츠

본문 제목

0821 TIL - C# 기초문법_1

스파르타 코딩캠프/'24 Today I Learned

by lucar 2024. 8. 21. 17:24

본문

체력과 대미지 변수를 선언하고 공격을 받아서 캐릭터가 사망하는 코드를 짜보았다.

 

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 처리를 해 살아있어야만 공격하게 바꿔보았다.

드디어 첫 승리

이제 클래스를 사용해서 더 많은 정보를 넣어보자

 

관련글 더보기