-
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