Programming/Java

클래스 자유생성 과제

📝 작성 : 2020.12.06  ⏱ 수정 : 
반응형

자바교육 3주차에 객체지향 수업을 듣고 있습니다.

이번 숙제는 배운것을 이용해 자유롭게 클래스를 만들어 보라고 하셨습니다.

별 고민없이, 단지 '재밌을거' 같다는 이유로 노트에 슥슥 써봤습니다.

 

Player 와 Monster 라는 클래스를 노트에 쓸땐 몰랐습니다, 이게 이렇게 간단한 문제가 아니라는걸

선생님께서 학생들 테이블을 순회하시다가 제 노트를 슥 보시고는 한마디 하십니다.

[ "오늘 안에 하겠어요?" ]

 

쉽지 않은 주제란걸 말씀하셨단건 눈치챘지만, 괜히 오기가 더 생겨서

[ 내일 수업시간 까지 뭐가 됐든 기본적인 틀은 만들어 놓겠다 ] 란 다짐을 합니다.

 

 

쉬는시간, 점심시간 내내 이클립스를 켜고는 생각해봤던 객체들을 구현해 보려고 하는데. 생각했던것보다 복잡합니다.

 

일단 hp, exp로 끝날게 아니라 max 값이 지정이 되어야 했습니다. 그렇지 않으면 전투 후 체력이 떨어지고는, 본래의 체력을 나중에 다시 불러올 수가 없었습니다. 

전투 시스템도 최대한 단순하게 일단 시작하려고 했는데, '방어력' 정도는 필요하겠다 싶었습니다.

Method 또한 경험치얻기, 전투 에서 끝나는게 아니고 한참 많이 만들게 되겠구나 싶었습니다.

 

로딩을 흉내내고 싶어 만들었지만, 이후로도 쓸일이 정말 많았던 wait()

게임을 처음 시작할때 텍스트가 마구 올라오는게 맘에 들지않아, 로딩 화면을 흉내내고 싶어서 wait이라는 method를 만들어 봤습니다. String 과 Stringbuffer 의 속도 차이를 설명해주실때 현재의 시간을 저장할 수 있는 방법을 간단히 배웠었는데, 그걸 이용해서 start에 method 호출 했을때 시간값을 저장한 뒤, while 문 안에서 새로운 시간을 end로 계속해서 받으며 그 차이(ms) 만큼 지나면 빠져나오게끔 해서 구현 해 봤습니다.

while 문을 너무나도 많이 반복할테니 뭔가 아주 좋아보이진 않지만, 지금으로썬 저에게 필요한 wait() 메서드를 구현할 더 좋은 방법이 떠오르지 않았습니다.

 

 

그렇게 wait을 사용해 만든 Loading

loading 화면을 구현한 뒤, wait 시간을 처음엔 몇백 ms 로 지정했으나, 수없이 테스트를 할 때마다 봐야하는 loading 창은 저에게는 고역이였고, 이후로는 계속 20에 두고 사용했습니다.

패키지 및 클래스들
exp_max는 계속 수정이 필요한듯해서 배열로 준비중입니다.

 

처음에는 전체적인 인터페이스를 영어로 만들었습니다. 어차피 코드도 영어로 작성되는거, 영어로 전부 만들어두고 출력부만 추가로 한글번역을 추가할 생각이었는데, 다음주 수요일에 한명씩 나와 발표가 있을거라 그래서 일단 한글로 만드는게 좋겠다 싶어 파일을 나눈뒤론 한글 출력 위주로 작성 중입니다.

언어 선택

언어 파일 관리는 어떻게 할지 감이 안와서, 일단 상속을 통해서 필요한 언어를 불러오게끔 했습니다.

처음에 언어 선택을 하게끔 인터페이스를 나누고 싶었지만, 딱히 당장 필요한 기능도 아니고 텍스트를 작성할 때마다 작업양이 두배다보니 나중으로 미뤄두었습니다.

 

MENU 화면
STATUS 진입 화면

STATUS에서 체력과 경험치를 직관적으로 표현해보고 싶어서 for 문을 통해 해당하는 % 만큼 칸이 차도록 구현해 보았습니다.

 

사냥터 및 전투 인터페이스

 

 

삼항연산자를 이용한 공격 메서드

다음날 수업시간에 선생님께서 제가 생각했던 주제와 같은 주제로 Player 와 Monster 객체가 서로 싸우는 기능을 만들어 보여주셨는데, 제가 구현했던 기능보다 훨씬 제가 생각했던 기능에 부합하다고 생각되어서,

Player 클래스에서  void attack(Monster m) 기능을 거의 그대로 일단 가져와서 쓰고 있습니다

 

 

서로 치고 받고 싸우는 동안 텍스트가 순차적으로 제공되는게, 한번에 쭉 나열되는것보다 훨 dynamic 하겠다 생각이 들어

기존에 만들어 두었던 wait 을 이용해 fight_delay 만큼 텀을 두었습니다. 

 

 

 

발표 전까지

1. 전투 인터페이스를 보다 직관적으로 만들어보기

2. 레벨업시 자유배분 가능한 추가 스탯 부여

3. 장비 착용 시스템  

정도를 우선적으로 추가 해 볼 생각입니다. Class 와 Method 에 대해서 배우는 중인데, 어느 정도 이해했다고 생각했음에도 막상 실제로 설계를 해보려니 , 사실상 제대로 이해하고 있는게 아니란 걸 깨달았습니다.

공부를 하며 틈틈히 새로 배우는 내용중에 지금 만들고있던 클래스들에 적용이 가능한 내용이 있다면 그때 그때 와서 추가를 해 볼 예정입니다 추후에 웹을 배우면 웹에서 작동하도록 만들어 볼 생각입니다.

 

이렇게 지금까지 수업기간은 총 3주 지났습니다.

반응형