본문 바로가기

Project/ToyProject

[Baseball - Restrict console] 4th

반응형

결과를 먼저 얘기하면, 사용자가 한 클래스 내부에서 모든 걸 진행하고 싶어서

GameStart라는 클래스를 만들어서 그 클래스안에 다른 클래스에 있는 함수들을 다 가져와서

게임을 진행하게 만들었다

사용자로부터 구단이름을 입력받고, 입력받는과 동시에 txt 파일을 입력받은 구단명 이름으로 생성시킨다

그리고 구단만들었을 때 3000원이 자동으로 보유하게 되고,

보유 머니로 6명의 선수를 영입하게 한다.

그리고 자신이 영입한 선수들의 목록을 보여준다

메인에서는 사용자가 원하는 값에 따라 함수들을 실행시킨다

메인 내용은 위에 콘솔 창 설명과 같다

제일 많이 바뀐 경매장 클래스인데,

기존에는 경매장에서 선수를 구입하고 판매하는 식으로 진행하였는데

텍스트 파일 안에 있는 선수들을 Stream을 이용해서 사용자 구단과 경매장을 왔다 갔다 해야 해서

따로 TxTmanager라는 클래스를 만들어서 텍스트 파일 관련된 함수들을 정의하여 사용하기로 했다

그렇게 진행한 결과 가독성이 높아졌고, 반복되는 코드들이 사라져서 코드들이 클린 해졌다

위 사진에서는 관리자일 때는, inserAuctionHouse 함수를 사용해 선수들을 경매장에 생성할 수 있게 하였고,

구단주일 때는, 선수들을 영입하고 다시 판매할 수 있게 코드를 구성하였다

위에서 언급한 것과 같이, 관리자일 때 선수를 추가할 수 있는 함수인데

나중에는 선수가 은퇴했을 때를 고려하여, 경매장에서 선수를 삭제할 수 있는 함수도 만들어봐야겠다

잘 안 보이지만 TxTmanager 클래스인데

이 클래스에서는, 선수를 텍스트 파일에 넣을 수 있는 함수인 addPlayer_on_txt 함수와

삭제하는 함수 두 개가 존재한다

추가할 때는, 한 개의 메서드로 해결할 수 있지만

삭제할 때는, 선수 리스트를 불러와 그 선수들을 배열에 담고

삭제시킬 선수의 인덱스만 삭제하고 다시 배열에 담고 다시 텍스트 파일에 넣어야 한다.

이때, 두 개로 나눈 이유는 코드가 복잡해서도 있지만

텍스트 파일을 초기화시킬 때, Stream을 false로 지정해야 기존에 있던 선수 리스트들이 초기화되고

그다음에 삭제시킬 선수만 인덱스를 제거하고 out 하면 되지만

false로 지정하는 순간, 기존에 있던 선수들의 리스트를 받아 올 수 없어서 함수를 두 개로 나누어서

진행하였다.

그리고 TxTmanager 클래스에는 텍스트를 불러와 콘솔에 출력할 수 있는 print_txt 함수

txt안에 있는 것들을 저장시키는 saveGame / txt안에 있는 것들을 가져와 콘솔에 찍는 loadGame 함수도 존재한다

마지막으로 MyTeam 클래스에서는 팀의 이름을 지정할 수 있는 make_team 함수

구단의 보유 머니를 알 수 있는 wallet함수들이 있는데

선수들을 사 올 때 돈을 차감시키는 walletMinus 함수와

선수들을 팔았을 때 돈을 추가시키는 walletPlus 함수가 존재한다

여기서 보유 머니를 차감시킬 때도 아까 선수를 사고팔때와 같이

false로 지정하면 가지고 있던 보유머니를 초기화시키기 때문에

이 점을 방지하고자 holdMoney 함수 또한 구현하였다

https://github.com/woongbin-choi/MiniProject_Baseball

woongbin-choi/MiniProject_Baseball

Contribute to woongbin-choi/MiniProject_Baseball development by creating an account on GitHub.

github.com

스샷을 찍었는데, 코드들이 잘 안 보여서 해당 코드들이 있는 깃허브 주소도 올려놨다

미니 프로젝트를 시작한 지 4일 차

생각보다 코드 변동들도 많았고, 계획도 처음에 수립한 것과 다르게 진행되는 점도 꽤나 있었다

내가 원하는 게임방 식대로, 또 사용자의 입장에서 게임을 어떻게 진행하는지에 관한 것도

생각하면서 직접적으로 관여할 수 있는 점에서

또, 쉽게 말해 내 마음대로 구현할 수 있어서 재밌는 것 같다

아이디어는 계속 나온다

1. 선수가 은퇴할 때는? 경매장에서 선수를 삭제하는 기능이 필요

2. 처음 선수를 살 때 3000원보다 높게 나오면? 환불기능 필요

3. 사용자가 여러 명일 때는? 함수들이 추가해 원하는 구단으로 들어갈 수 있게 하는 기능 필요

등등..

갈길이 멀다!

반응형