이번 시간에는 같은 그림 찾기 part3 클릭하면 랜덤한 이미지를 보여주는 방법을 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.08.08 - [안드로이드] - [안드로이드 코틀린] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기& 보여주기
- 설명 -
1. buttons[index]?.setImageResource(R.drawable.question)
처음에는 기본 이미지로 보여준다.
2. if(card.isFaceUp)
카드 뒤집힘 유무를 체크해서 다시 뒤집는 거 방지
3. cards[positin].isFaceUp = !card.isFaceUp
이미지 클릭 후 반대의 값을 넣는다.
4. buttons[position]?.setImageResource(card.imageId)
뒤집었다면 랜덤 이미지를 보여준다.
class MainActivity : AppCompatActivity(), View.OnClickListener{
//버튼 리스트
private val buttons: Array<ImageButton?> = arrayOfNulls<ImageButton>(8)
//이미지 리스트
private lateinit var imageList: ArrayList<Int>
//카드 리스트
private lateinit var cards: ArrayList<MemoryCard>
//결과 텍스트
private lateinit var resultText: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//초기화
resultText = findViewById(R.id.result_text)
val resetBtn: Button = findViewById(R.id.reset_btn)
resetBtn.setOnClickListener {
//셋팅
init()
}
//셋팅
init()
}//onCreate
//셋팅 함수
private fun init(){
//이미지 리스트 초기화
imageList = ArrayList()
//카드 리스트 초기화
cards = ArrayList()
//리스트에 데이터 등록
imageList.add(R.drawable.dog)
imageList.add(R.drawable.pig)
imageList.add(R.drawable.rabbit)
imageList.add(R.drawable.cat)
imageList.add(R.drawable.dog)
imageList.add(R.drawable.pig)
imageList.add(R.drawable.rabbit)
imageList.add(R.drawable.cat)
//순서 섞기
imageList.shuffle()
for((index, item) in buttons.withIndex()){
//버튼 아이디
val buttonID = "imageBtn${index}"
//리소스 아이디
val resource: Int = resources.getIdentifier(buttonID, "id", packageName)
//버튼 초기화
buttons[index] = findViewById(resource)
//각 버튼에 클릭 이벤트 적용
buttons[index]?.setOnClickListener(this)
//카드 리스트에 데이터 담기
cards.add(MemoryCard(imageList[index], false, false))
//버튼에 기본 이미지 변경
buttons[index]?.setImageResource(R.drawable.question)
}
}
//클릭 이벤트
override fun onClick(view: View?) {
//view id 가져오기
val id: Int? = view?.id
//위치 변수
var position: Int = 0
when(id){
R.id.imageBtn0 -> position = 0
R.id.imageBtn1 -> position = 1
R.id.imageBtn2 -> position = 2
R.id.imageBtn3 -> position = 3
R.id.imageBtn4 -> position = 4
R.id.imageBtn5 -> position = 5
R.id.imageBtn6 -> position = 6
R.id.imageBtn7 -> position = 7
}
//업데이트 모델
updateModel(position)
//업데이트 뷰
updateView(position)
}
private fun updateModel(positin: Int){
var card: MemoryCard = cards[positin]
//나중에 카드 비교 할 때 뒤집고 다시 클릭하는거 방지
if(card.isFaceUp){
Toast.makeText(this, "이미 뒤집었음", Toast.LENGTH_SHORT).show()
return
}
//반대의 값을 넣는다 앞면 -> 뒷면, 뒷면 -> 앞면
cards[positin].isFaceUp = !card.isFaceUp
}
private fun updateView(position: Int){
var card: MemoryCard = cards[position]
//뒤집었다면 랜덤 이미지로 보여준다.
if(card.isFaceUp){
buttons[position]?.setImageResource(card.imageId)
}else{
//기본 이미지
buttons[position]?.setImageResource(R.drawable.question)
}
}
}
[안드로이드 코틀린 ] RecyclerView Item Animation 서서히 나타나는 효과 주는 방법 part1 (0) | 2022.08.11 |
---|---|
[안드로이드 코틀린] 같은 그림 찾기 게임 만드는 방법 part4 - 비교&완료 (0) | 2022.08.10 |
[안드로이드 코틀린] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기& 보여주기 (0) | 2022.08.08 |
[안드로이드 코틀린] 간단한 할 일 목록(ToDo List) 쉽게 만드는 방법 (0) | 2022.08.06 |
[안드로이드 코틀린] 애니메이션으로 뷰(View) 표시 및 숨기기 - 회전 표시 쉽게 만드는 방법 (0) | 2022.08.05 |
댓글 영역