본문 바로가기

JAVA Console Game/JAVA Text RPG

JAVA 입문자 Text RPG 만들기 5일차

 

5일차

 

공격 & 방어 선택

 

랜덤으로 돌리던 선택을 플레이어가 직접 선택에서 전투할 수 있도록 바꿨다.

 

 

Exp claas

1. Exp 기본 값은 25로 설정했다. 25 * 플레이어 레벨으로 계산해 레벨별 최대 경험치를 적용시켰다.

2. 몬스터를 잡고 얻은 경험치를 더해 최대 경험치와 같거나 크면 레벨 +1과 넘친 경험치를 return 한다.

3. 최대 경험치보다 작으면 몬스터를 잡고 얻은 경험치를 더한 값을 return 한다.

4. 자바에서 return값은 한 개만 가능함으로 ArrayList에 담아서 return 했다.

 

이제부터 상속시켜서 따로 만들 생각이다. 막일처럼 그냥 메인클래스에서 다하려 했지만 생각보다 너무 더럽다..ㅠ

 

 

 

Exp class에서 return 받음

 

1. ArrayList로 return 했기 때문에 ArrayList를 생성해 담아줬다.

2. 담은 값들을 기존 플레이어 ArrayList에 수정해줬다.

 

*ArrayList.set(index , result) : set은 해당 인덱스에 입력값으로 수정시켜준다.

 

 

종료시 저장 메소드

 

저번에 쉽다고 만든 종료 저장 메소드..만들면서 테스트하는데 생각해보니 선택한 플레이어가 따로 리스트에 있는데

처음 불러온 리스트를 저장하면 당연히 수정된 값이 저장이 안 된다..

 

1. 선택한 리스트는 각 스탯 별로 나눴기 때문에 for문을 이용해 문자열로 이어 붙여줬다.

2. 이어 붙인 문자열을 다시 처음 불러온 리스트에 추가해줬다.

 

그럼 처음 가져온 것과 선택해 수정된 값이 중복돼서 그걸 방지하기 위해 선택할 때 선택한 플레이어를 삭제했다.

 

선택 플레이어 삭제

 

ArrayList.remove( index ) : remove는 해당 입력한 인덱스를 삭제한다.

- 인덱스로만 삭제할 수 있는 건 아니고 해당 값을 직접 입력해도 그 값은 삭제된다.

- 만약 중복 값이 있으면 첫 번째 리스트가 우선 삭제된다.

ex) ex = {"A","D","B","D"} 의 리스트가 있다면

     ex.remove( "D" ) 

     ex = {"A","B","D"} 중복된 첫 번째 값을 지운다.

 

 

 

주말을 쉬고 다시 보니까 생각보다 엄청 무식하게 했다는 게 보인다..

아무리 생각나는 데로 만들었다 해도 지저분하고 오점이 너무 많다..

자바에 대한 이해도가 많이 부족해서 점점 바닥이 보이는 거 같아서 마음이 아프다ㅠㅠ

 

좀 더 열심히 공부해서 완성도를 점점 높여가고 싶다. 끝날 땐 어떻게 변할지 벌써 궁금하네

 

내일은 메소드들을 정리하는 시간을 가지려고 한다.

좀 더 깨끗해지는 코드들을 위해..