Skip to content

Commit

Permalink
Get QuestionAnswer from firebase and set to datasource
Browse files Browse the repository at this point in the history
  • Loading branch information
tungnk123 committed May 6, 2024
1 parent 0236ad9 commit c4fdd70
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 38 deletions.
39 changes: 25 additions & 14 deletions app/src/main/java/com/example/chiecnonkydieu/data/DataSource.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,31 @@
package com.example.chiecnonkydieu.data

import android.content.Context
import com.example.chiecnonkydieu.R
import com.example.chiecnonkydieu.model.Hint
import com.example.chiecnonkydieu.model.QuestionAnswer
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.ktx.database
import com.google.firebase.ktx.Firebase


val hintList:MutableList<Hint> = mutableListOf(
Hint("Đây là hint 1"),
Hint("Đây là hint 2"),
Hint("Đây là hint 3")
)
val questionAnswerList: List<QuestionAnswer> = mutableListOf(
QuestionAnswer("Thủ đô của Việt Nam nằm ở đâu?", "HA NOI", "Hà Nội", hintList),
QuestionAnswer("Loại hình thể thao nào được yêu thích nhất ở Việt Nam?", "BONG DA", "Bóng Đá", hintList),
QuestionAnswer("Bộ phim khoa học viễn tưởng nào là một trong những tác phẩm nổi tiếng nhất?", "STARWARS", "STARWARS", hintList),
QuestionAnswer("Đâu là bộ phim có tựa đề \"Dặm xanh\"?", "THE GREEN MILES", "THE GREEN MILES", hintList),
)
val database: DatabaseReference = Firebase.database.reference
const val REFERENCE_CAUHOI = "CAU HOI"
val questionAnswerList: MutableList<QuestionAnswer> = mutableListOf(
QuestionAnswer(
"Hà Nội",
"HA NOI",
"Thủ đô của Việt Nam nằm ở đâu?",
"Hint1",
"Hint2",
"Hint3",
"Thong tin"
),
QuestionAnswer(
"Hà Nội",
"HA NOI",
"Thủ đô của Việt Nam nằm ở đâu?",
"Hint1",
"Hint2",
"Hint3",
"Thong tin"
),

)
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.example.chiecnonkydieu.model


data class QuestionAnswer(
val question: String = "Thủ đô của Việt Nam nằm ở đâu?",
val answer: String = "HA NOI",
val answerCoDau: String = "Hà Nội",
val hintList: MutableList<Hint> = mutableListOf()
var DoiTuong : String = "",
var DoiTuongInHoa : String = "",
var CauHoi : String = "",
var Hint1 : String = "",
var Hint2 : String = "",
var Hint3 : String = "",
var ThongTin : String = ""
)
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class CreateRoomActivity : AppCompatActivity() {
currentQuestionAnswer = questionAnswerList[1],
guessesCharacters = mutableListOf(),
currentPlayer = Player(name = binding.edtName.text.toString()),
letterCardList = getLetterCardListFromAnswer(questionAnswerList[1].answer),
letterCardList = getLetterCardListFromAnswer(questionAnswerList[0].DoiTuongInHoa),
previousQuestionAnswers = mutableListOf<QuestionAnswer>().apply {
add(questionAnswerList[1])
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.example.chiecnonkydieu.R
import com.example.chiecnonkydieu.data.GameData
import com.example.chiecnonkydieu.model.QuestionAnswer
import com.google.ai.client.generativeai.GenerativeModel
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.ktx.database
Expand Down Expand Up @@ -189,7 +190,7 @@ class AddQuestionActivity : AppCompatActivity() {

btnThem.setOnClickListener{
try {
val BoCauHoi = Question()
val BoCauHoi = QuestionAnswer()
BoCauHoi.DoiTuong = edtDoiTuong.text.toString()
BoCauHoi.CauHoi = edtCauHoi.text.toString()
BoCauHoi.DoiTuongInHoa = edtDoiTuongInHoa.text.toString()
Expand Down Expand Up @@ -232,13 +233,5 @@ class AddQuestionActivity : AppCompatActivity() {
}
return stringBuilder.toString().toUpperCase()
}
data class Question(
var DoiTuong : String = "",
var DoiTuongInHoa : String = "",
var CauHoi : String = "",
var Hint1 : String = "",
var Hint2 : String = "",
var Hint3 : String = "",
var ThongTin : String = ""
)

}
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ class PlayingRoomActivity : AppCompatActivity() {

builder.setPositiveButton(android.R.string.ok) { dialog, which ->

if (input.text.toString() == GameData.gameModel.value!!.currentQuestionAnswer.answer) {
if (input.text.toString() == GameData.gameModel.value!!.currentQuestionAnswer.DoiTuongInHoa) {
Toast.makeText(this, "giai thanh cong", Toast.LENGTH_LONG).show()
viewModel.makeAllLetterCardReveal()
viewModel.updateGameEndRound()
Expand All @@ -249,7 +249,7 @@ class PlayingRoomActivity : AppCompatActivity() {
// viewModel.updateGameEndRound()
val builder = AlertDialog.Builder(this)
builder.setTitle("Xin chức mừng")
builder.setMessage("Đáp án chính xác là: ${GameData.gameModel.value!!.currentQuestionAnswer.answerCoDau}")
builder.setMessage("Đáp án chính xác là: ${GameData.gameModel.value!!.currentQuestionAnswer.DoiTuong}")

builder.setPositiveButton(R.string.btn_next) { dialog, which ->
var questionAnswerToBeGuess = questionAnswerList.random()
Expand Down Expand Up @@ -285,24 +285,24 @@ class PlayingRoomActivity : AppCompatActivity() {
listHint.findViewById<LinearLayout>(R.id.ll_hint1).setOnClickListener {
Toast.makeText(applicationContext, "hint1 click", Toast.LENGTH_LONG).show()
listHint.findViewById<ImageView>(R.id.img_add1).visibility = View.GONE
listHint.findViewById<TextView>(R.id.tv_hint1).text = GameData.gameModel.value!!.currentQuestionAnswer.hintList[0].title
listHint.findViewById<TextView>(R.id.tv_hint1).text = GameData.gameModel.value!!.currentQuestionAnswer.Hint1
}
listHint.findViewById<LinearLayout>(R.id.ll_hint2).setOnClickListener {
Toast.makeText(applicationContext, "hint2 click", Toast.LENGTH_LONG).show()
listHint.findViewById<ImageView>(R.id.img_add2).visibility = View.GONE
listHint.findViewById<TextView>(R.id.tv_hint2).text = GameData.gameModel.value!!.currentQuestionAnswer.hintList[1].title
listHint.findViewById<TextView>(R.id.tv_hint2).text = GameData.gameModel.value!!.currentQuestionAnswer.Hint2
}
listHint.findViewById<LinearLayout>(R.id.ll_hint3).setOnClickListener {
Toast.makeText(applicationContext, "hint3 click", Toast.LENGTH_LONG).show()
listHint.findViewById<ImageView>(R.id.img_add3).visibility = View.GONE
listHint.findViewById<TextView>(R.id.tv_hint3).text = GameData.gameModel.value!!.currentQuestionAnswer.hintList[2].title
listHint.findViewById<TextView>(R.id.tv_hint3).text = GameData.gameModel.value!!.currentQuestionAnswer.Hint3
}


}

private fun updateCurrentQuestionAndAnswer(gameModel: GameModel) {
binding.tvQuestion.text = gameModel.currentQuestionAnswer.question
binding.tvQuestion.text = gameModel.currentQuestionAnswer.CauHoi
updateAdapterAndRecyclerView()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,15 @@ import com.example.chiecnonkydieu.data.GameData.gameModel
import com.example.chiecnonkydieu.data.GameData.saveGameModel
import com.example.chiecnonkydieu.data.GameModel
import com.example.chiecnonkydieu.data.GameStatus
import com.example.chiecnonkydieu.data.REFERENCE_CAUHOI
import com.example.chiecnonkydieu.data.database
import com.example.chiecnonkydieu.data.questionAnswerList
import com.example.chiecnonkydieu.model.LetterCard
import com.example.chiecnonkydieu.model.Player
import com.example.chiecnonkydieu.model.QuestionAnswer
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.ValueEventListener
import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch
Expand All @@ -34,14 +40,46 @@ class PlayingRoomViewModel: ViewModel() {
if (GameData.gameModel.value != null) {
gameModel = GameData.gameModel.value!!
}
getQuestionFromFirebase()
}

private fun getQuestionFromFirebase() {
val questionAnswerListFromFirebase: MutableList<QuestionAnswer> = mutableListOf()

// Lắng nghe sự kiện khi dữ liệu thay đổi trên Firebase
database.child(REFERENCE_CAUHOI).addListenerForSingleValueEvent(object :
ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
// Xóa danh sách hiện tại để cập nhật với dữ liệu mới
questionAnswerListFromFirebase.clear()

// Lặp qua các nút con của nút "QUESTION_ANSWER" trên Firebase
for (snapshot in dataSnapshot.children) {
// Lấy dữ liệu từ DataSnapshot và chuyển đổi thành đối tượng QuestionAnswer
val questionAnswer = snapshot.getValue(QuestionAnswer::class.java)
if (questionAnswer != null) {
questionAnswerListFromFirebase.add(questionAnswer)
}
}

// Gán danh sách câu hỏi và câu trả lời từ Firebase vào questionAnswerList
questionAnswerList.clear()
questionAnswerList.addAll(questionAnswerListFromFirebase)
}

override fun onCancelled(databaseError: DatabaseError) {
// Xử lý khi có lỗi xảy ra
}
})
}


fun isUserInputMatch(playerInputChar: Char): Boolean {
val gameModel: GameModel? = GameData.gameModel.value
val playerInputStringLC = playerInputChar.lowercaseChar().toString()
val playerInputCharLC = playerInputChar.lowercaseChar()
gameModel?.let {
if (gameModel.currentQuestionAnswer.answer.contains(
if (gameModel.currentQuestionAnswer.DoiTuongInHoa.contains(
playerInputStringLC,
ignoreCase = true
) &&
Expand Down Expand Up @@ -79,8 +117,8 @@ class PlayingRoomViewModel: ViewModel() {
gameModel.previousQuestionAnswers.add(questionAnswer)
gameModel.currentQuestionAnswer = questionAnswer
val tempLetterCardList = mutableListOf<LetterCard>()
for (i in questionAnswer.answer.indices) {
tempLetterCardList.add(LetterCard(questionAnswer.answer[i].toString()))
for (i in questionAnswer.DoiTuongInHoa.indices) {
tempLetterCardList.add(LetterCard(questionAnswer.DoiTuongInHoa[i].toString()))
}
gameModel.letterCardList = tempLetterCardList
gameModel.gameStatus = GameStatus.INPROGRESS
Expand Down

0 comments on commit c4fdd70

Please sign in to comment.