객체지향 패러다임을 배우다가
이것을 활용해 다중반복문으로 턴제게임도 만들수있지 않을까? 라는 생각을 해보게 되었다
바로 실행에 옮겨보자
우선 첫번째로 턴제게임에 필요한것은 무엇일까?
서로 싸우는 캐릭터의 생성부터가 중요하다
나는 Garosh 라는 전사 캐릭터와 Jaina라는 마법사 캐릭터를 싸우게 만들어보겠다.
우선 Jaina에게 필요한 속성은 무엇이 있을까?
나는 이게임에 고정된 데미지를 주는것 보다는 때릴때마다 랜덤한 데미지를 주는것이 더 재밌겠다고 생각하여 Random 클래스를 활용하였다
fire 라는 속성은 60~72까지의 데미지를 랜덤으로 줄수있게
vision 이라는 속성은 15~19까지의 데미지를 랜덤으로 줄수있게 만들어보았다.
그리고 필요한것은 마법사의 이름(Jaina)
마법사의 체력
마법사의 방어력
마법사의 마나
등이 필요하다고 생각했다
처음 기획할때엔 마나까진 생각하지않았지만 만들다보면서 스킬을 쓸때마다 마나가 소모되고 마나가 없으면 스킬을 못쓰게 만들면 어떨까? 라는 생각이 들게되었다
자 이제 내가 만든 속성들로 마법사의 체력,방어력,이름을 정하는 생성자와 랜덤 데미지를 주는 기능, 그리고 마나가 부족하면 스킬을 못쓰게 만드는 기능, 마나를 회복할수있는 기능 등을 만들어 보자.
마법사의 생성자(객체 생성시 필수속성값)을 이름,체력,방어력으로 설정해놓으면
마법사 객체를 생성할때 이름 ,체력 , 방어력을 필수로 넣어야지만 생성할수있게된다
나는 전사1의 이름을 가로쉬 체력은 400 방어력은 2로 만들고
마법사1의 이름을 제이나 체력은 250 방어력은1로 만들어보았다.
이제 기본스탯은 완성 되었으니 스킬데미지를 구성해보러 가자
제이나의 첫번째 스킬
비전화살에 대하여 마나를 설정해보자
첫번째 스킬은 기본스킬로 데미지는 약하게 마나는 적게들도록 설정해보겠다
우선 메소드 visionarrow를 사용하면 비전화살이 나가도록 메소드를 작성해주고
인수값은 Warrior 클래스를 참조하도록 설계한다
제이나는 마법사이므로 마나는 가로쉬보다 더 들지만 화력은 강하도록
마나는 2가 소모되고, 데미지는 15~19사이의 데미지를 주도록 설정해주고
만약 마나가 2보다 작다면 마나가 부족하여 시전을 못한다는 안내문을 띄우고 다시 선택지로 돌아가도록
결과값을 그대로 반환한다
마나가 부족하지 않다면 전사가 피해를 입을수 있게끔 warrior에게 피해를 받는 메소드를 호출한다
이 메소드 작성에 대해서는 후에 서술하겠다
두번째 스킬
화염구도 마찬가지로
수치만 조정해서 마나가 6보다 작다면 실행하지않도록 마나는 6이 소모되도록 설정해준다
마찬가지로 warrior가 피해를 받는 메소드를 호출한다
이제 스킬을 다 설정했다면
피해를 받는 메소드를 작성해보자
내가 받는 피해는 warrior가 주는 데미지가 필요하니
warriorDamage를 받아오자
여기서 내가 받는 피해는 결국 warriorDamage 에서 나의 방어력을 빼야하기에
totalDamage = WarriorDamage - MagitionArmour; 가 된다
여기서 끝이아니라 내 현재 체력에서 받는피해를 빼야지
magition의 체력에 변동이 생긴다
이제는 마나회복하는 메소드를 만들어보겠다
이것은 간단하게 복합대입 연산자를통해
내 현재마나에 15를 더해주면 된다
현재상태창은 코드의 흐름은 위에서 아래로 가기떄문에 현재상태를 알기위해선
제일 밑에 깔아줘야한다.
이제