250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- intent
- Dialog
- android
- Button
- DART
- 앱바
- Flutter
- textfield
- 테스트
- TEST
- viewmodel
- binding
- scroll
- Coroutines
- Compose
- 계측
- Kotlin
- data
- appbar
- 앱
- ScrollView
- drift
- activity
- textview
- tabbar
- CustomScrollView
- 안드로이드
- livedata
- Navigation
- LifeCycle
Archives
- Today
- Total
Study Record
[안드로이드] 쥬디의 찜질방 게임 만들기 - 5. 게임 종료 본문
728x90
1. 예상치 못한 종료
게임을 종료하는 플래그(flag)는 mfinish 변수로 정했다. 이 변수가 false 면 게임이 아직 실행중이고 true 면 게임이 종료된다. 사용자가 게임을 시작하다가 뒤로가기 버튼을 누르거나 한다면 게임은 종료되어야 한다. 따라서 다음과 같이 설정해준다.
GameActivity.kt
override fun onDestroy() {
mfinish = false
super.onDestroy()
}
2. 게임 종료 시 실행되는 다이얼로그
게임이 종료되면 내가 얻은 점수를 보여주는 다이얼로그를 띄워준다. 그리고 다이얼로그에서 확인을 누르면 RankActivity 에 넘어가 내가 여태까지 한 게임의 점수들을 한꺼번에 보여준다.
색상 정보
lifghtBrown = #603737
white = #FFFFFF
black = #000000
dialog_gameover.xml - 다이얼로그 xml 파일
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/lightBrown"
android:gravity="center"
android:paddingVertical="15sp"
android:text="게임 종료"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/gameover_score"
android:paddingVertical="30dp"
android:paddingHorizontal="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@color/white"
android:text="당신의 점수는 20점입니다."
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:id="@+id/gameover_ok"
android:layout_width="match_parent"
android:text="확인"
android:padding="10sp"
android:textSize="17sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="@color/white"
android:background="@color/lightBrown"
android:layout_height="wrap_content"/>
</LinearLayout>
GameoverDialog.kt - 다이얼로그 클래스
class GameoverDialog(val activity: GameActivity, val score: Int) : DialogFragment(){
private lateinit var binding: DialogGameoverBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DialogGameoverBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val scoreText = "당신의 점수는 ${score}점 입니다."
binding.gameoverScore.text = scoreText
binding.gameoverOk.setOnClickListener {
// 확인 버튼을 누르면 게임 액티비티를 종료하고 랭크 액티비티로 연결한다.
dismiss()
activity.startRankActivity()
}
}
}
GameActivity.kt - 랭크 액티비티로 연결
fun startRankActivity() {
// 게임 점수도 같이 넘겨준다.
val intent = Intent(this, RankActivity::class.java).apply {
putExtra("score", mCustomerFinishCount*10)
}
startActivity(intent)
finish()
}
3. RankActivity 만들기
new -> Activity -> Empty Activity 를 통해 이름이 RankActivity 인 액티비티를 생성한다.
RankActivity.kt
class RankActivity : BaseActivity<ActivityRankBinding>(ActivityRankBinding::inflate) {
var mRank = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 게임 결과 점수 가져오기
mRank = intent.getIntExtra("score", -1)
}
}
728x90
'안드로이드' 카테고리의 다른 글
EditText 속성 - action 버튼 누르면 키보드 내리기, 이벤트 연결하기 (0) | 2022.04.09 |
---|---|
Button 색상 바꾸기 , 바탕색(windowBackground) (0) | 2022.04.07 |
[안드로이드] 쥬디의 찜질방 게임 만들기 - 4. 게임 만들기 (2) (0) | 2021.12.26 |
[안드로이드] 쥬디의 찜질방 게임 만들기 - 4. 게임 만들기 (1) (0) | 2021.12.23 |
[안드로이드] 쥬디의 찜질방 게임 만들기 - 3. 게임 화면 셋팅 (0) | 2021.12.23 |