야추 다이스 보드판 구현
야추 다이스를 플레이 하기 위해서는 점수를 산출하고, 해당 점수를 기록할 수 있는 보드판이 필요하다.
보드판을 통해 플레이어는 자신과 상대가 기록한 점수를 비교하고 더 높은 점수를 기록하기 위해 플레이할 수 있다.
야추 다이스의 보드판의 모습은 다음 이미지와 같으며 이를 참고하여 유사하게 구현하기로 하였다.
xml 레이아웃
야추 다이스 보드판을 만들기 위해 다음과 같은 레이아웃을 만들고, 이를 하나의 레이아웃으로 합치도록 하였다.
하위 레이아웃
: 상위 레이아웃을 구성하는 6개의 레이아웃으로,
'항목을 나타내는 TAG 레이아웃'과 '점수를 기록하고 확인할 수 있는 점수판 레이아웃'으로 구성된다.
1. layout_number_board_tag.xml : 숫자 항목의 종류를 보여주는 레이아웃
2. layout_number_board_first.xml : 첫번째 플레이어가 점수를 채울 수 있는 숫자 점수판 레이아웃
3. layout_number_board_second.xml : 두번째 플레이어가 점수를 채울 수 있는 숫자 점수판 레이아웃
4. layout_ranks_board_tag.xml : 족보 항목을 보여주는 레이아웃
5. layout_ranks_board_first.xml : 첫번째 플레이어가 점수를 채울 수 있는 족보 점수판 레이아웃
6. layout_ranks_board_second.xml : 두번째 플레이어가 점수를 채울 수 있는 족보 점수판 레이아웃
상위 레이아웃
layout_game_play_board.xml :
하위 레이아웃(6개)를 <include> 하여 레이아웃을 구성하고,이외에도
'현재 진행된 턴 수'를 가리키는 레이아웃,
'현재 어떤 플레이어의 턴인지 표시' 하는 레이아웃 등을 추가하여
전체적인 게임 보드판 레이아웃을 구성하였다.
Data Binding
레이아웃과 코드간에 데이터를 주고 받을 수 있도록 Data Binding을 사용하였다.
이로 인해 각 플레이어가 따낸 점수를 표시할 수 있고, 사용자가 미정된 점수를 클릭하여 점수를 확정하는 등의 행동도 가능하게 만들 수 있다.
따라서 다음과 같은 데이터 변수들을 선언하여 뷰와 데이터를 결합하였다.
//in layout_game_play_board.xml
<data>
<variable
name="viewModel"
type="com.ranseo.yatchgame.ui.game.GamePlayViewModel" />
<variable
name="turnCountStr"
type="String" />
<variable
name="firstBoardRecord"
type="com.ranseo.yatchgame.data.model.BoardRecord" />
<variable
name="secondBoardRecord"
type="com.ranseo.yatchgame.data.model.BoardRecord" />
<variable
name="firstFakeBoard"
type="com.ranseo.yatchgame.data.model.Board" />
<variable
name="secondFakeBoard"
type="com.ranseo.yatchgame.data.model.Board" />
<variable
name="firstRealBoard"
type="com.ranseo.yatchgame.data.model.Board" />
<variable
name="secondRealBoard"
type="com.ranseo.yatchgame.data.model.Board" />
<variable
name="myTurn"
type="boolean" />
<variable
name="turnLight"
type="int" />
<variable
name="redPlayer"
type="String" />
<variable
name="bluePlayer"
type="String" />
<variable
name="myTurnStr"
type="String" />
<variable
name="onClickListener"
type="com.ranseo.yatchgame.data.model.OnBoardClickListener" />
</data>
'개발 > 야추 다이스 (Yacht Dice)' 카테고리의 다른 글
게임 효과음 구현 (0) | 2023.03.14 |
---|---|
주사위에 Animation 구현해서 굴림 효과 만들기. (0) | 2023.03.13 |
점수 산출 알고리즘 구현하기 (0) | 2023.03.13 |