전체 글 384

Activity Result API 학습

Activity Result API 개요 안드로이드를 사용하다보면 다른 앱의 구성요소(활동)으로 데이터를 요청하여 받아와야 하는 경우가 생긴다. 이때 startActivityForReseult(Intent) 를 사용하여 다른 활동으로부터 결과를 받아오고 onActivityResult(...) 를 재정의하여 받아온 결과에 대해 어떻게 사용할 지 코드를 구현할 수 있다. 그런데 최근 최신 버전의 android 에서는 startActivityForResult() 와 onAcitvityResult() 를 사용하는 것 대신 AndroidX Activity와 Fragment에 도입된 Activity Result API 를 사용하는 것을 적극 권장하고 있다. Activity Result API 사용 activity ..

안드로이드 2023.03.29

게임 효과음 구현

게임 효과음 현실에서 보드게임을 하다보면 촉각과 시각적인 재미도 있지만 주사위가 떼구르르~ 굴러가고, 그 결과에 따른 환호성과 게임이 끝나고 친구들과 잡담을 나누는 등의 청각적인 재미 또한 즐길 수 있습니다. 앱에서 즐기는 야추 다이스 게임에서도 사용자들이 청각적인 재미를 느낄 수 있도록 몇몇 상황 (주사위를 굴리기 위해 "Roll" 버튼을 누른다거나, 점수를 기록하기 위해 보드판을 클릭하거나, 상대에서 나에게로 턴이 넘어올 때) 에서 효과음이 재생되게끔 구현하기로 결정하였습니다. 게임 효과음 다운로드 및 로컬 파일에 삽입 게임 효과음 다운로드 : 뮤팟 게임 효과음 다운로드 | 뮤팟 효과음 태그 검색 영상 편집자에게 꼭 필요한 무료 효과음 이걸로 종결! 장면전환, 소리효과와 같은 다양한 효과음들을 획득하..

주사위에 Animation 구현해서 굴림 효과 만들기.

주사위 굴림 야추 다이스는 5개의 주사위를 가지고 한 턴에 3번의 주사위를 굴릴 수 있는 기회를 가지게 된다. 위 기능을 구현하기 위해 'Roll 버튼'을 클릭할 때 마다 (3번의 기회) 주사위의 값이 달라지도록 구현하였다. 주사위 View는 값에 따라 View가 변경되도록 구현하였는데 값만 덩그러니 변화된 VIew를 사용자가 볼 때 생동감이 없다고 느껴진다는 피드백을 받았다. 따라서 주사위의 값이 변경되는 동안 주사위가 돌아가는 Animation을 추가하여 값이 변경되고 있음을 표현하려고 한다. View Animation 추가 안드로이드에서 애니메이션을 구현하는 방법에는 크게 2가지가 있다. 'View Animation'을 이용해 View의 애니메이션을 구현하는 방법과 'Property Animatio..

게임 보드판 구현하기

야추 다이스 보드판 구현 야추 다이스를 플레이 하기 위해서는 점수를 산출하고, 해당 점수를 기록할 수 있는 보드판이 필요하다. 보드판을 통해 플레이어는 자신과 상대가 기록한 점수를 비교하고 더 높은 점수를 기록하기 위해 플레이할 수 있다. 야추 다이스의 보드판의 모습은 다음 이미지와 같으며 이를 참고하여 유사하게 구현하기로 하였다. xml 레이아웃 야추 다이스 보드판을 만들기 위해 다음과 같은 레이아웃을 만들고, 이를 하나의 레이아웃으로 합치도록 하였다. 하위 레이아웃 : 상위 레이아웃을 구성하는 6개의 레이아웃으로, '항목을 나타내는 TAG 레이아웃'과 '점수를 기록하고 확인할 수 있는 점수판 레이아웃'으로 구성된다. 1. layout_number_board_tag.xml : 숫자 항목의 종류를 보여주..

점수 산출 알고리즘 구현하기

점수 산출 방식 야추 다이스 보드게임은 플레이어가 굴린 5개의 주사위의 눈금에 따라 점수를 얻을 수 있다. 이 때 점수 산출 방식은 야추 다이스 보드게임만의 특별한 룰에 따른다. 야추 다이스의 점수 산출 방식은 다음 이미지와 링크를 참고한다. 야추 다이스 점수 산출 방식 따라서 해당 주사위 눈금에서 산출될 수 있는 모든 점수의 값을 구하고, 플레이어가 그 중에서 원하는 점수로 기록할 수 있도록 만들어야 한다. 점수 산출 알고리즘 YachtGame Class class YachtGame @Inject constructor() { private val smalls = arrayOf(listOf(1,2,3,4), listOf(2,3,4,5), listOf(3,4,5,6)) private val larges =..