Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: Последний коммит
  • Loading branch information
aleh-god committed Jun 21, 2021
commit a79ab700138910e84c87f46d056e65f8823678ac
2 changes: 1 addition & 1 deletion app/src/main/java/com/rsschool/quiz/ActionListener.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ interface ActionListener {
fun backFragment()
fun runResultFragment()
fun addAnswer(numberQuest: Int, numberAnswer: Int)
fun checkAnswersCount(): Int
fun checkAnswersCount(): Boolean
}
4 changes: 2 additions & 2 deletions app/src/main/java/com/rsschool/quiz/BlankFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,12 @@ class BlankFragment : Fragment() {
// Блокируем кнопку первого фрагмента
binding.previousButton.isEnabled = currentFragment >= 2

// Сделать проверку наличия ответов listener.checkAnswersCount() == 5
// Меняем надпись на последнем фрагменте
if (currentFragment > 4) binding.nextButton.text = "Submit"
}

binding.nextButton.setOnClickListener {
if (currentFragment > 4) listener.runResultFragment()
if (listener.checkAnswersCount()) listener.runResultFragment()
else listener.nextFragment()
}

Expand Down
32 changes: 17 additions & 15 deletions app/src/main/java/com/rsschool/quiz/DataObjectAccess.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,44 @@ package com.rsschool.quiz
// Этот класс реализует доступ к базе данных, в которой хранятся User и QuizObject объекты
class DataObjectAccess {

// Таблица БД
private val quizGames: List<QuizObject> = listOf(
QuizObject("Вы готовы, дети?", listOf("Да, капитан!", "Да!", "Нет.", "Нет, капитан", "буль-буль-буль"), 1, 1),
QuizObject("Ктоооооооо... Кто проживает на дне океана?", listOf("Рыбки", "Губка Боб Квадратные Штаны!", "Водолаз", "Никто не проживает", "Terror from the Deep"), 2,2),
QuizObject("Жёлтая губка, малыш без изъяна?", listOf("С изъяном", "Не малышь", "Губка Боб Квадратные Штаны!", "Синяя губка", "Жёлтая подводная лодка"), 3,3),
QuizObject("Кто побеждает всегда и везде?", listOf("Годзилла", "Рэмбо", "Капитан Америка", "Губка Боб Квадратные Штаны!", "Фиолетовый из Повер Рэнджерс"), 4,4),
QuizObject("Кто также ловок, как рыба в воде?", listOf("Другая рыба", "Аквамен", "Глубина", "Тазик залитый бетоном", "Губка Боб Квадратные Штаны!"), 5,5),
)

// Номер вопроса - Номер ответа
private val numAnswers: HashMap<Int, Int> = hashMapOf()

// hashMap позволяет нам удобно перезаписывать уже выбранные ответы
fun addAnswer(numberQuest: Int, numberAnswer: Int) {
numAnswers[numberQuest] = numberAnswer
numAnswers[numberQuest-1] = numberAnswer
// if (numberQuest > 1 && numberQuest < quizGames.size) numAnswers[numberQuest-1] = numberAnswer
}

// Счетчик ответов
fun countAnswer(): Int {
return numAnswers.size
fun checkAnswers(): Boolean {
return numAnswers.size == quizGames.size
}

// Метод написания отчета и подсчета правильных ответов
fun getResultMessage(): User {
var result = 0
var history = "История вопросов и ответов.\n"

for (x in 0..4) {
val y = numAnswers[x+1]!!
if (quizGames[x].numberCorrectAnswer == numAnswers[x + 1]) ++result
for (x in 0..quizGames.lastIndex) {

val y = numAnswers[x]!!
if (quizGames[x].numberCorrectAnswer == numAnswers[x]) ++result
history += "\nВопрос: ${quizGames[x].question}\nВаш ответ: ${quizGames[x].answers[y - 1]}\nПравильный ответ: ${quizGames[x].answers[quizGames[x].numberCorrectAnswer - 1]}"
}

return User("[email protected]", "Результат квиза: $result из 5.", history)
}

// Таблица БД
private val quizGames: List<QuizObject> = listOf(
QuizObject("Вы готовы, дети?", listOf("Да, капитан!", "Да!", "Нет.", "Нет, капитан", "буль-буль-буль"), 1, 1),
QuizObject("Ктоооооооо... Кто проживает на дне океана?", listOf("Рыбки", "Губка Боб Квадратные Штаны!", "Водолаз", "Никто не проживает", "Terror from the Deep"), 2,2),
QuizObject("Жёлтая губка, малыш без изъяна?", listOf("С изъяном", "Не малышь", "Губка Боб Квадратные Штаны!", "Синяя губка", "Жёлтая подводная лодка"), 3,3),
QuizObject("Кто побеждает всегда и везде?", listOf("Годзилла", "Рэмбо", "Капитан Америка", "Губка Боб Квадратные Штаны!", "Фиолетовый из Повер Рэнджерс"), 4,4),
QuizObject("Кто также ловок, как рыба в воде?", listOf("Другая рыба", "Аквамен", "Глубина", "Тазик залитый бетоном", "Губка Боб Квадратные Штаны!"), 5,5),
)

// Для создания фрагментов
fun getQuizObject(num: Int) : QuizObject {
return if (num <= quizGames.lastIndex) quizGames[num] else nullQuizObject
Expand Down
8 changes: 5 additions & 3 deletions app/src/main/java/com/rsschool/quiz/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class MainActivity : FragmentActivity(), ActionListener {
viewPager = binding.pager
viewPager.adapter = adapter

// viewPager.isUserInputEnabled = false
// Слушаем изменение фрагментов и меняем цвет statusBar
viewPager.registerOnPageChangeCallback(object:ViewPager2.OnPageChangeCallback(){
override fun onPageSelected(position: Int) {
when(position){
Expand All @@ -50,6 +50,7 @@ class MainActivity : FragmentActivity(), ActionListener {

}

// Методы для кнопок, менять фрагменты
override fun nextFragment() {
++viewPager.currentItem
}
Expand All @@ -58,6 +59,7 @@ class MainActivity : FragmentActivity(), ActionListener {
--viewPager.currentItem
}

// Метод реализации меню результата закостылил созданием нового фрагмента и удалением предыдущего
override fun runResultFragment() {

val intent = Intent(this, ResultActivity::class.java).apply {
Expand All @@ -71,8 +73,8 @@ class MainActivity : FragmentActivity(), ActionListener {
dataQuiz.addAnswer(numberQuest, numberAnswer)
}

override fun checkAnswersCount(): Int {
return dataQuiz.countAnswer()
override fun checkAnswersCount(): Boolean {
return dataQuiz.checkAnswers()
}

}
27 changes: 13 additions & 14 deletions app/src/main/java/com/rsschool/quiz/TestDAO.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,23 @@ package com.rsschool.quiz
fun main(args: Array<String>){
println("Hello Kotlin")
val dataQuiz = DataObjectAccess()

dataQuiz.addAnswer(1, 1)
dataQuiz.addAnswer(2, 2)
dataQuiz.addAnswer(3, 3)
dataQuiz.addAnswer(4, 2)
dataQuiz.addAnswer(5, 2)

val result = dataQuiz.getResultMessage()
println(result.email)
println(result.resultMessage)
println(result.resultQuiz)
}
//println(dataQuiz.numAnswers.toString())

print("кол-во ответов: ")
//println(dataQuiz.numAnswers.size)
println(dataQuiz.checkAnswers())

/*
println("Вопрос: ${quizGames[x].question}")
println("numAnswers: ${numAnswers[x+1]}")
var y = numAnswers[x+1]!!
println("textAnswers: ${quizGames[x].answers[y - 1]}")
println("CorrectAnswers: ${quizGames[x].numberCorrectAnswer}")
println("textCorrecAnswers: ${quizGames[x].answers[quizGames[x].numberCorrectAnswer - 1]}")
println()
*/
if (dataQuiz.checkAnswers()) {
val result = dataQuiz.getResultMessage()
println(result.email)
println(result.resultMessage)
println(result.resultQuiz)
}
}