네이버블로그에서 2024. 11. 8. 21:54에 작성된 글입니다.
이전에 이런 문제가 있었습니다.
https://velog.io/@jwl-98/2주차-과제-야구게임-만들기-트러블-슈팅
해결하기 위해 이렇게 접근했습니다.
Data() 인스턴스의 생성은 최초로 BaseBall 클래스에서 생성됨.
그러니 BaseBall에서 생성된 인스턴스를 Data()를 사용하는 다른 클래스들에 공유하면 되겠다.
사용하는 클래스들은
GameLogic - 시도횟수 저장
UserInputData - 게임시작횟수와 시도횟수 출력.
그러면 어떻게 각 클래스에 전달하면 될까?
순서는 이렇게 된다.
게임 카운트가 진행되고 게임 로직이 실행되니
게임 카운드가 증가한 데이터를 우선적으로 GameLogic클래스로 전달해준다.
그리고 GameLogic클래스에서 증가한 횟수 카운트를 최종적으로 UserInputData클래스로 전달해준다.
생성자 라는것을 이용하기로 했다.
이 작업을 위해선
GameLogic , UserInputData에도 생성자를 통한 초기화 작업이필요하다.
생성자는 파라미터로 인스턴스를 받을수 있어야한다.
우선 데이터를 저장하는 건 해결이 된거 같다..
하지만 하다보니
계속 문제가 발생했는데
-> 랜덤넘버가 생성되지 않아서 생긴문제
-> GameLogic 클래스의 생성자에 랜덤 숫자를 출력하는 함수를 실행했음.
이렇게 수정하다 보니,
어떨떄는 메뉴출력 어떤 경우는 메뉴가 출력되지 않았음
이유로는 랜덤숫자가 서로다른 세자리수가 아니면
배열을 만들어 내는 로직에서 무한루프가 걸려서 빠져나오지 못했음.
예를들어 223이라는 숫자가 생성이 됐다면
이 로직에서 빠져나오지 못했다.
왜냐하면 생성자에 랜덤 숫자 생성 로직을 넣어 놨으니 랜덤숫자는 딱 한번만 실행이 되어서
그 숫자로 랜덤 배열을 만들려고 게속 시도하기 때문이였다.
이건 랜덤숫자를 생성하는 함수를 랜덤넘버 배열을 만들때 랜덤 넘버를 생성하도록 수정했다.
https://github.com/jwl-98/2W-BootCamp-BaseBall/commit/41bc1869c97e6a1a24f686a43b53990b3ded5e82
어으... 지금은
첫게임이 끝나고 게임기록보기를 선택후 1번 "게임시작하기"를 누르면 종료되어버리는 현상 발견해서 해결중이다..
머리 좀 식히고 해야겠다........