본문 바로가기

앱 제작 App

앱 제작 (4) 스타크래프트 실력 측정기

안녕하세요 Loner입니다. 바빠서 안드로이드 개발 정리보다 옛날에 만들었던 앱을 하나 더 open 해볼까합니다.

(안드로이드 개발란에 Compose 이야기를 연속적으로 적어내고 싶어서 다른 안드로이드 개발 얘기는 일단 지양중입니다.)

 

다운링크

https://play.google.com/store/apps/details?id=kr.loner.starcarftpoll 

 

스타크래프트 고인물 측정기 - Google Play 앱

당신이 20 년 이상의 역사를 가진 스타 크래프트 유저라면 한번 쯤 해보시길 바랍니다.

play.google.com

 

1. 소개 

애니메이션 효과좀 테스트 해볼려고 장난 삼아 만들었던 추억의 앱입니다.

크게 대단한 기능 없는 단순 문제 테스트 앱입니다. 

 

개인 취미로 개발문서 읽기 , 사이드협업 하기, 알고리즘 풀기가 있는데 이 3가지가 질리면 오랜만에 

스타크래프트를 합니다.

 

어렷을 때 스타크래프트에 푹 빠져살았던 추억이 있는데, 

한번 내가 좋아하는 주제로 앱을 만들어보면 어떨까 생각해서 장난삼아 만들어봤던 앱입니다.

 

개인적으로 유니티을 활용해서 미니게임 기능도 같이 넣어보려고 했으나

다른 메인 프로젝트 개발를 한창 할때라서, 토이앱을

신경쓰지 않기 위해 임시로 마무리 했었습니다.

 

추억 회상용으로 블로그에 포스팅 해봅니다.

 

2. 앱의 기능

 

 

- 인트로 애니메이션 효과

 

기능이라고 하기엔 그렇지만,, 앱 시작시 달 모양을 클릭해야 앱을 본격적으로 할 수 있습니다. 

애니메이션 효과 테스트로 넣었던 것 같네요

 

 

- 스타크래프트 게임 실력 측정 문제 풀기 

스타크래프트 관련 문제들을 풀면서 사용자의 점수가 계속 쌓여갑니다. 

정답시 점수 +1 오답시 점수 -1 이런 식으로 쌓인 점수가 마지막 문제까지 이어집니다.

 

특이점으로 뒷 배경 그림이 풀었던 문제 수가 어느정도 지나면 계속 변합니다.

 

 

-실력 측정 결과

 

마지막 문제를 풀면 지금까지 풀었던 문제가 합산이 되고 잠깐의 애니메이션 후 

결과가 측정됩니다. 

결과가 바로 나오지 않고 A,B,C,D,E 가 여러가지 겹치다가 최종 결과가 나옵니다.

위 효과도 애니메이션 효과를 테스트하기 위한 용도로 넣어봤습니다.

 

 

-공유 기능

 

페이스북과 카카오톡에 공유가능합니다.

카카오톡은 마음먹으면 앱 설치가 안되었을 시 웹으로 들어가게 할 수 있지만

가볍게 만든거라 굳이 분기처리는 안했었던걸로 기억합니다.

 

3. 앱 제작 과정

 

 

-navigtion

앱의 특징상 네비게이션 컴포넌트를 활용하는게 가장 효율이 좋았습니다.

네비게이션을 사용했기 때문에 백스텍 처리나 이동 처리가 쉬웠습니다. 

 

-SingleActivity

Navigation 를 사용하는 이상 싱글 액티비티 구조로 가는것이 가장 좋았습니다.

 

 

 

- 화면 이동 담당 클래스 제작 

위 GoToAction이라는 네비게이션간의 이동을 책임지는 클래스를 만들었습니다.

(별 의미는 없습니다. 토이는 그냥 이렇게 해보고 싶어서)

 

- 빠른 제작

애니메이션 로직이나 게임 로직을 담당할 클래스를 미리 하나 만들어뒀습니다.

어차피 앱 규모도 작고 복잡하게 연결되어있는 부분이 없으니 object를 하나 생성해 버렸습니다. 

(위 같이 쓰면 싱글톤으로 사용된다.)

파라미터로 View 자체를 넘기진 않는 편인데 토이앱에선 넘겨버렸습니다.

 

애니메이션의 경우 xml에 정의하는 애니메이션과

코드로 정의하는 애니메이션을 둘다 사용했습니다.

- 문제 및 정답 관리

이 앱은 네트워크에서 db를 가져오는게 아니라서 마음 편하게 미리 고정된 정답과 답을 

앱의 기본 resource로 지정해놓고 사용하면 됬었습니다. 

 

안드로이드 스튜디오 string.xml 에 문제와 정답들을 string Array형식으로 다 담아놓고

Fragment에서 해당 리소스들을 가져와 사용했습니다. 

 

4.정리

- 네비게이션을 사용하니까 화면간 이동을 설정하기가 편했음

- 네비게이션xml 을 통해서 화면이 어디로 이동하는지 한눈에 볼 수 있어서 좋았음

- 문제 로직 만들기만 하면 나머지는 손쉽게 풀림

- 애니메이션 정의를 class에서 할수도 있고 xml에서도 할 수 있는데 xml으로 정의하는 편이 

프레그먼트가 깔끔해지고 보기 좋았음