https://record5555.tistory.com/21
Day15 - 오버로딩 1,2,3단계
과제 1) Hero 클래스 생성새로운 cs 파일을 만들고, Hero 클래스 생성필드 혹은 프로퍼티문자열 영웅의 이름정수형 영웅의 체력정수형 영웅의 공격력정수형 영웅의 방어력생성자기본 생성자: "Unknow
record5555.tistory.com
심화 과제 1
위에서 main문에 적힌 모든 코드 삭제. 메인문은 아래 코드만 적음
class Program
{
static void Main(string[] args)
{
Game game = new Game();
game.Play();
}
}
- Game이라는 클래스를 새로운 cs에 작성
- Game 클래스는 맴버변수로 Hero 하나와 Monster 하나를 가짐
- Game 클래스는 생성과 동시에 Hero 와 Monster에 각각 뉴할당을 함.
- Hero 는 이름"Archer", 체력 100, 공격력 30, 방어력 5 로 세팅
- Monster는 이름"Skeleton", 체력 50, 공격력 20, 방어력 5, 레벨은 1로 세팅
- 일단 게임이 시작되었다는 cw 출력
- Game이 들고있는 영웅과 몹의 체력이 둘 다 0 이상이라면 무한 반복 시작
- 무한 반복을 하며, 사용자에게 다음 행동을 물어봄
다음 행동으로 무엇을 하시겠습니까? (1혹은2 입력 후 엔터)
1. 영웅이 몬스터를 공격
2. 몬스터가 영웅 공격
- 만약 1번이 입력되었다면 영웅이 몹 공격하는 로직 실행
- 2번이 입력되었다면 몹이 영웅 치는 로직 실행
- 1,2 가 아닌 입력값 들어오면 제대로 다시 입력하라고 출력 후 다시 입력받음
- 1 혹은 2가 정상 수행되었다면, 이후 영웅과 몹의 상태 보여주는 메서드 각각 실행
- 만약 영웅 체력이 0 이하면 “영웅 사망으로 종료” 출력 후 무한루프 탈출
- 만약 몹 체력이 0 이하면 “몹 사망으로 종료” 출력 후 무한루프 탈출
- 위 내용을 구현하면서 만약 Hero나 Monster쪽에 추가로 필요한 메서드나 프로퍼티가 있다면 자유롭게 추가해보기(0 이하 처리 등등)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
나의 코드
internal class Game
{
Hero hero =new Hero("Archer",100,30,5);
Monster monster = new Monster("Skeleton",50,20,5,1);
public void Play()
{
int answer;
Console.WriteLine("일단 게임시작");
//기존과 다르게 while 선언
while (hero.HeroHP >= 0 || monster.MonsterHp >= 0)
{
Console.WriteLine("다음 행동으로 무엇을 하시겠습니까? (1 혹은 2 엔터)");
Console.WriteLine("1. 영웅이 몬스터를 공격");
Console.WriteLine("2. 몬스터가 영웅 공격");
answer = int.Parse(Console.ReadLine());
if(answer == 1)
{
monster.AttackHero(hero);
hero.DisplayInfo();
monster.DisplayInfo();
}
else if(answer == 2)
{
hero.AttackMob(monster);
hero.DisplayInfo();
monster.DisplayInfo();
}
while (true)
{
if(answer == 1 || answer == 2)
{
break;
}
else if(answer != 1 && answer != 2)
{
Console.WriteLine("1,2 아닌 값 입력했음 다시 입력바람");
}
}
if(hero.HeroHP <= 0)
{
Console.WriteLine("영웅다이");
break;
}
if(monster.MonsterHp <= 0)
{
Console.WriteLine("몹 사망");
break;
}
}
}
기존에 while문을 썻을때는 while(true)로 무한반복 시킨다음 if 문을 통해 break로 탈출시키는 코드로 만들었다.
예)
while (true)
{
if (탈출 조건)
{
break;
}
}
나중에 긴 코드로 보면 가독성이 떨어질 수 있을 거 같다는 얘기를 듣고 while(탈출 조건)을 만들었다.
무심코 만들다 변수가 하나 생겼었다. (탈출 조건)이 조건이 만족해야 했다. 처음에 true할 시 무조건 들어가는데 이 조건은 안 들어갈 수도 있다 각각의 장단점이 있는 것 같다
while(true)
장점 : 무조건 처음에는 들어온다. 간편하다
단점 : 무조건 처음에 들어와 기존보다 속도가 느리다, break 문을 찾아야 한다
while(탈출조건)
장점 : 정확하다
단점 : 탈출 조건을 명확히 선언해야 한다.
'과제' 카테고리의 다른 글
Day17 - 상속,추상 class (0) | 2024.12.12 |
---|---|
Day16 - static 심화 (0) | 2024.12.12 |
Day15 - 오버로딩 1,2,3단계 (0) | 2024.12.10 |
Day14 - Class 심화 (2) | 2024.12.09 |
Day14 - Class 1,2,3단계 (0) | 2024.12.09 |