들어가는 글: 오늘은 조조의 보물(?)에 대해서 코딩해봅니다.
삼국지에는 청룡언월도, 적토마와 같이 특정 인물을 부각시켜주는 보물들이 존재합니다.
* 조조 = 맹덕신서
* 여포 = 방천화극
* 관우 = 청룡언월도 등등
오늘은 (11. 낙양)의 군주인 조조의 보물들에 대해 알아봅니다
조조는 다음과 같은 보물들을 가지고 있습니다.
이중 맹덕신서와 의천검에 대해 알아봅니다.
저는 이 보물들을 Treasure 클래스로 명명하였습니다.
파일: coding.samguk.Treasure.java
깃헙 코딩: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/Treasure.java
각 보물은 1명만이 소유할 수 있으므로
GeneralsMap 클래스와 마찬가지로 싱글턴 패턴을 갖는 Map 객체가 필요합니다.
TreasuresMap 클래스는 Treasure 객체를 생성하고
find() 메서드를 제공하여 해당 객체를 조회할 수 있습니다.
가져온 Treasure 객체는 General 객체에 등록합니다.
파일: coding.samguk.TreasuresMap.java
깃헙 링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/TreasuresMap.java
삼국지3 나무위키에 따르면
맹덕신서는 [지력+8, 정치+5]
청공검은 [무력+10]
의천검은 [무력+8]
조황비전은 [기동력+1]의 특별 기능을 갖습니다.
다시 조조의 정보를 봅니다.
이것을 간단한 코드로 표현해봅니다.
먼저 General 클래스에 addTreasure() 메서드를 추가하였습니다.
파일: coding.samguk.General.java
메서드: addTreasure()
깃헙 링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/General.java
여기에서 특이한 점은 예를 들어 청공검은 [무력+10] 이고 의천검은 [무력+8] 이면 최종 무력이 그 합인 +18이 아니라 최대값인 +10 이 되어야 합니다. 즉 max(8,10) = 10 입니다.
* getWarAbilityAdded()
* getIntelligenceAdded()
* getCharistaAdded()
* getPolitictsAdded() 는 모두 형태가 같습니다.
ISSUE : 현재 기동력을 증가시키는 (예, 조황비전) 기능은 구현되지 않았습니다.
이렇게 구현중에 놓치는 기능들은 //TODO로 적어놓으면 나중에 따로 챙길 수 있습니다.
이제 앞서 구현한 기능이 정상동작하는지 확인합니다.
파일: coding.samguk.App.java
메서드: test조조능력치()
깃헙 링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/App.java
이제 App 클래스를 실행한 결과는 다음과 같습니다.
vscode의 단축키는 Ctrl + F5 입니다.
휴.. 충분한 설명이 되셨는지 모르겠네요.
좀더 새로운 기능들을 구현해보고 글 올릴께요. 아직까지는 재밌습니다 :-)
감사합니다.
2021.8.20