요약
1. 타이머가 돌아가게 하여 제한시간이 지나면 자동으로 BGM 종료대신에 30가지의 BGM를 맞추고, 30번의 게임이 끝나면 결과를 알려주는 액티비티인 FinishActivity를 구현함.
2. 정답을 입력하면 Edittext를 비우게 함.
3. 음악 추가
본문
1. FinishActivity 구현
FinishActivity에는 결과를 알려주는 ImageView와 MainActivity로 돌아가게 하는 다시 버튼과 앱을 아예 종료시키는 종료 버튼으로 구성되어 있다.
30번의 게임 중 BGM의 제목을 맞춘 개수가 점수가 되며, 점수에 따라 이미지를 띄우도록 하였다.(0부터 30을 전부 이미지 파일로 만듬...)
그리고 종료 버튼을 누르면 모든 액티비티를 종료하고 앱을 종료한다. 하지만 다시 버튼은 MainActivity만을 남겨두고 다 종료시키려고 했으나, 아직 그 방법을 찾지 못하였다. 계속 찾아봐야 할 듯..
activity_finish.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/mainbackground"
android:orientation="vertical"
tools:context=".PlayActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="180dp"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/yourScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/yourscore" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="75dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<ImageView
android:id="@+id/score"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/zero" />
<ImageView
android:id="@+id/isScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/isscore" />
<LinearLayout
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<ImageButton
android:id="@+id/returnButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:adjustViewBounds="true"
android:contentDescription="Go to Main"
android:padding="0dp"
android:scaleType="fitCenter"
android:src="@drawable/returnbutton" />
<LinearLayout
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<ImageButton
android:id="@+id/exitButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:adjustViewBounds="true"
android:contentDescription="App Exit"
android:padding="0dp"
android:scaleType="fitCenter"
android:src="@drawable/exitbutton" />
<LinearLayout
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="245dp"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
FinishActivity.kt
package com.bodan.maplebgm
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.core.app.ActivityCompat
import com.bodan.maplebgm.databinding.ActivityFinishBinding
class FinishActivity : AppCompatActivity() {
// 뷰 바인딩
private var mBinding : ActivityFinishBinding? = null
private val binding get() = mBinding!!
var finalScore : Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 뷰 바인딩
mBinding = ActivityFinishBinding.inflate(layoutInflater)
setContentView(binding.root)
if (intent.hasExtra("score")) {
finalScore = intent.getIntExtra("score", 0)
}
Toast.makeText(applicationContext, "게임이 종료되었습니다.", Toast.LENGTH_SHORT).show()
if (finalScore == 0) {
binding.score.setImageResource(R.drawable.zero)
}
else if (finalScore == 1) {
binding.score.setImageResource(R.drawable.one)
}
else if (finalScore == 2) {
binding.score.setImageResource(R.drawable.two)
}
else if (finalScore == 3) {
binding.score.setImageResource(R.drawable.three)
}
else if (finalScore == 4) {
binding.score.setImageResource(R.drawable.four)
}
else if (finalScore == 5) {
binding.score.setImageResource(R.drawable.five)
}
else if (finalScore == 6) {
binding.score.setImageResource(R.drawable.six)
}
else if (finalScore == 7) {
binding.score.setImageResource(R.drawable.seven)
}
else if (finalScore == 8) {
binding.score.setImageResource(R.drawable.eight)
}
else if (finalScore == 9) {
binding.score.setImageResource(R.drawable.nine)
}
else if (finalScore == 10) {
binding.score.setImageResource(R.drawable.ten)
}
else if (finalScore == 11) {
binding.score.setImageResource(R.drawable.eleven)
}
else if (finalScore == 12) {
binding.score.setImageResource(R.drawable.twelve)
}
else if (finalScore == 13) {
binding.score.setImageResource(R.drawable.thirteen)
}
else if (finalScore == 14) {
binding.score.setImageResource(R.drawable.fourteen)
}
else if (finalScore == 15) {
binding.score.setImageResource(R.drawable.fifteen)
}
else if (finalScore == 16) {
binding.score.setImageResource(R.drawable.sixteen)
}
else if (finalScore == 17) {
binding.score.setImageResource(R.drawable.seventeen)
}
else if (finalScore == 18) {
binding.score.setImageResource(R.drawable.eighteen)
}
else if (finalScore == 19) {
binding.score.setImageResource(R.drawable.nineteen)
}
else if (finalScore == 20) {
binding.score.setImageResource(R.drawable.twenty)
}
else if (finalScore == 21) {
binding.score.setImageResource(R.drawable.twentyone)
}
else if (finalScore == 22) {
binding.score.setImageResource(R.drawable.twentytwo)
}
else if (finalScore == 23) {
binding.score.setImageResource(R.drawable.twentythree)
}
else if (finalScore == 24) {
binding.score.setImageResource(R.drawable.twentyfour)
}
else if (finalScore == 25) {
binding.score.setImageResource(R.drawable.twentyfive)
}
else if (finalScore == 26) {
binding.score.setImageResource(R.drawable.twentysix)
}
else if (finalScore == 27) {
binding.score.setImageResource(R.drawable.twentyseven)
}
else if (finalScore == 28) {
binding.score.setImageResource(R.drawable.twentyeight)
}
else if (finalScore == 29) {
binding.score.setImageResource(R.drawable.twentynine)
}
else if (finalScore == 30) {
binding.score.setImageResource(R.drawable.thirty)
}
// 메인 화면으로 돌아가기(미구현)
binding.returnButton.setOnClickListener {
ActivityCompat.finishAffinity(this)
}
// 앱 종료
binding.exitButton.setOnClickListener {
ActivityCompat.finishAffinity(this)
System.exit(0);
}
}
}
2. 정답 입력 시 정답 입력 칸 비우기
생각해 보니 정답 입력하고 버튼 누르고 다시 재생하고 텍스트 지우고 다시 쓰기가 불편하여, 입력 버튼을 누르면 정답 입력에 쓰이는 Edittext인 answerText가 비워지게 하였다.
PlayActivity.kt
// 위에 생략
binding.answerText.setText(null)
// 아래 생략
실행 영상
다음 할 일
시간 제한이 있는 모드를 한 번 만들어볼려고 했는데 반대하는 의견이 있어서 고민 중이어서 구현하지 못 했다. 추가할 지 말 지 생각하는 걸로 하고 FinishActivity에서 다시 버튼을 누르면 MainActivity로 이동하도록 해야겠다.
GitHub
https://github.com/littlesam95/Maplebgm
'개인 프로젝트 > 안드로이드' 카테고리의 다른 글
[메이플 브금 맞추기] BGM 목록 (0) | 2022.03.11 |
---|---|
[메이플 브금 맞추기] 게임 하는 법 (0) | 2022.03.11 |
[개인 프로젝트] 메이플 브금 맞추기 앱 #6 (0) | 2022.03.04 |
[개인 프로젝트] 메이플 브금 맞추기 앱 #5 (0) | 2022.03.03 |
[개인 프로젝트] 메이플 브금 맞추기 앱 #4 (0) | 2022.02.21 |