지금 까지 배운것들로 StarCraft 유닛들을 만들어서
서로 싸우게 만들어보자
우선 첫번째로 해야할것이 유닛이라는 객체를 만드는것이다
먼저 Zealot이라는 객체를 만들어보겠다.
질럿이라는 객체에 필요한것은 첫번째로 이름
그다음은 싸워야하니까 공격력,체력이 필요할것이다
질럿은 쉴드라는 특수한 체력이있는데 이것은 스타크래프트를 아는사람만 알수있는것이니 넘어가도록 하자
다음으로 필요한것은 생성자를 통해 이 질럿이라는 객체를 생성하려면 이름만 필수로 입력하도록 만든다.
체력과 공격력 쉴드는 고정값으로 모두 동일하게 가져가도록 만든다음
다른 곳에서 변경할수없게 private을 걸어주도록 하겠다.
여기까지 완성했다면 이제 필요한것은 공격을 당했을때 hp가 변경되게끔 메소드를 작성해주도록하자
beAttacked를 당하면 반환값은 없고 해당 객체의 hp값에 변환을 주도록 반환값을 void로 설정해주고
질럿에게만 있는 기능이지만 방어적코드를 설정해서 쉴드가 들어온 데미지보다 적다면 데미지에서 쉴드를
뺀 값만큼 hp에 데미지를 주는 코드를 작성한다.
다음은 나머지 객체들도 공통적으로 적용될 hp가0보다 적거나 같다면 이미 사망하였습니다 라는 메세지
문구를 출력하도록 설정하고 hp는 0밑으로 내려가지않도록 고정시킨다
이 방어적코드가 작동하지 않는다면 그냥 쉴드에서 들어온 데미지만큼만 까지도록 설정한다. 만약 방어적코드가 없다면 쉴드만 까지면서 hp는100으로 쉴드는 -로표기되게 될것이다.
여기까지 피해를 받는 메소드를 작성했다면 피해를 주는 메소드를 작성해보도록 하자.
질럿이 저글링을 공격한다는 메소드를 설계할때 참조값은 Zergling 클래스가 될것이다
Zergling클래스의 객체 z를 이용해 z.getName 과 피해를 받는 메소드를 활용하자
피해를 받다 메소드에는 참조값이 파워(데미지)이기에 내 질럿 데미지를 넣어주자
밑에있는 마린도 똑같이이름만 바꿔서 작성하면된다.
저글링과 마린은 질럿과 쉴드만빼고 똑같은 코드이기에 생략하겠다.
이제 메인 클래스에가서 한번 싸움을 붙여보겠다
먼저 제라툴로 자가라를 때려보도록하자.
제라툴(공격력 16)이 자가라(체력 35)를 때리니 확실히 체력이 16만큼 줄어든것을 확인할수있다.