brunch

[코딩삼국지] #4 TreasuresMap 코딩

들어가는 글: 오늘은 조조의 보물(?)에 대해서 코딩해봅니다.


1. 아이템


삼국지에는 청룡언월도, 적토마와 같이 특정 인물을 부각시켜주는 보물들이 존재합니다.

* 조조 = 맹덕신서

* 여포 = 방천화극

* 관우 = 청룡언월도 등등


오늘은 (11. 낙양)의 군주인 조조의 보물들에 대해 알아봅니다

20210819-1.png


조조는 다음과 같은 보물들을 가지고 있습니다.

20210819-2.png 조조의 보물 목록


이중 맹덕신서와 의천검에 대해 알아봅니다.

20210819-3.PNG 맹덕신서
20210819-4.PNG 의천검


2. Treasure 클래스 코딩


저는 이 보물들을 Treasure 클래스로 명명하였습니다.

파일: coding.samguk.Treasure.java

깃헙 코딩: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/Treasure.java


20210819-5.png


각 보물은 1명만이 소유할 수 있으므로

GeneralsMap 클래스와 마찬가지로 싱글턴 패턴을 갖는 Map 객체가 필요합니다.


3. TreasuresMap 클래스 코딩


TreasuresMap 클래스는 Treasure 객체를 생성하고

find() 메서드를 제공하여 해당 객체를 조회할 수 있습니다.

가져온 Treasure 객체는 General 객체에 등록합니다.


파일: coding.samguk.TreasuresMap.java

깃헙 링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/TreasuresMap.java


20210819-6.png


삼국지3 나무위키에 따르면

맹덕신서는 [지력+8, 정치+5]

청공검은 [무력+10]

의천검은 [무력+8]

조황비전은 [기동력+1]의 특별 기능을 갖습니다.


4. 조조의 향상된 능력치


다시 조조의 정보를 봅니다.

20210819-7.png


이것을 간단한 코드로 표현해봅니다.

먼저 General 클래스에 addTreasure() 메서드를 추가하였습니다.

파일: coding.samguk.General.java

메서드: addTreasure()

깃헙 링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/General.java


20210819-10.png


여기에서 특이한 점은 예를 들어 청공검은 [무력+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


20210819-8.png


이제 App 클래스를 실행한 결과는 다음과 같습니다.

vscode의 단축키는 Ctrl + F5 입니다.

20210819-9.png


휴.. 충분한 설명이 되셨는지 모르겠네요.

좀더 새로운 기능들을 구현해보고 글 올릴께요. 아직까지는 재밌습니다 :-)

감사합니다.


2021.8.20

keyword
매거진의 이전글[코딩삼국지] #3 GeneralsMap 코딩