brunch

You can make anything
by writing

C.S.Lewis

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

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


1. 아이템 


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

* 조조 = 맹덕신서 

* 여포 = 방천화극 

* 관우 = 청룡언월도 등등 


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


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

조조의 보물 목록


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

맹덕신서
의천검


2. Treasure 클래스 코딩 


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

파일: coding.samguk.Treasure.java 

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



각 보물은 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



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

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

청공검은 [무력+10]

의천검은 [무력+8]

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


4. 조조의 향상된 능력치 


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


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

먼저 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 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari