ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 2023.03.27
    내일배움캠프 2023. 3. 27. 20:16

    개인과제로 게임을 만들어야 했는데,

    while 반복문을 사용해 종료 조건을 충족할 때까지 턴제 플레이어와 몬스터간 전투를 반복 진행해야 했다.

     

    그래서 while문에 대해 알아 보았다.

     

    while player.hp > 0 and monster.hp > 0:
        # 현재상태 출력
        print("\n=== 현재상태 === ")
        player.show_status()
        monster.show_status()
        # 공격 타입 선택
        while True:
            attack_type = input("\n공격 타입을 선택하십시오[ 일반공격 / 마법공격]: ")
            os.system('clear')
            attack = player.attack(monster, attack_type)
            if attack:
                break
        # 몬스터 체력이 0이하일 경우 몬스터 공격하지 못하게 브렠
        if monster.hp <= 0:
            print(f"{player.name}의 승리!")
            break
    
        monster.attack(player)

    우선 내가 작성한 코드다.

    플레이어의 hp와 몬스터의 hp가 모두 0을 초과할 경우 while문은 반복된다.

    반대로 둘 중 어느 하나라도 hp가 0 이하가 되면 종료한다.

     

    공격 타입 선택에서 while True는 특별한 일이 없는 한 계속해서 반복문을 진행하겠다는 무한반복의 의미다.

    attack이라는 변수에 attack 메소드를 통해 공격 타입을 전송하고 입력한 값에 따라 결과를 반환한다.

    공격 타입을 잘 입력했다면 값을 반환하고 attack은 True가 되어 if attack: break에 따라 반복문을 빠져나온다.

    하지만 마나가 없는 상태에서 마법공격을 사용하거나, 잘못된 값을 입력하면 attack 메소드는 False를 반환한다.

    따라서 attack은 False가 되고 if attack: break을 건너뛰고 while문을 다시 반복한다.

     

    if monster.hp <= 0 에서 몬스터의 hp가 0이하로 떨어지면 플레이어가 승리했다고 출력하고 반복문을 종료한다.

    그렇지 않으면 몬스터가 공격을 하고 while문은 다시 반복된다.

     

     

     

    '내일배움캠프' 카테고리의 다른 글

    TIL 2023.03.29  (0) 2023.03.29
    TIL 2023.03.28  (0) 2023.03.28
    WIL 내일배움캠프 2주차  (0) 2023.03.24
    TIL 2023.03.24  (0) 2023.03.24
    TIL 2023.03.23  (0) 2023.03.23
Designed by Tistory.