diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt index a342a02..2970bd2 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/QuizPage.kt @@ -1,5 +1,6 @@ package com.example.what_the_fantasy.ui.screens +import android.util.Log import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -18,6 +19,11 @@ import androidx.compose.material3.ButtonColors import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset @@ -28,16 +34,34 @@ import androidx.compose.ui.unit.sp import com.example.what_the_fantasy.data.local.QuestionStub import com.example.what_the_fantasy.data.model.Question + +val questions = QuestionStub.allQuestions +var pts = 0 + @Composable fun QuizPage() { + var idCurrentQuestion by remember { mutableIntStateOf(0) } + fun goNext(correctAns: String, ans: String) { + if (correctAns == "A") { + if (questions[idCurrentQuestion].ansA == ans) pts += 1 + } + if (correctAns == "B") { + if (questions[idCurrentQuestion].ansB == ans) pts += 1 + } + if (correctAns == "C") { + if (questions[idCurrentQuestion].ansC == ans) pts += 1 + } + if (correctAns == "D") { + if (questions[idCurrentQuestion].ansD == ans) pts += 1 + } + if (idCurrentQuestion < questions.size) idCurrentQuestion += 1 + } val gradient = Brush.linearGradient( colors = listOf(Color(0xFF7B1FA2), Color(0xFF311B92)), // Violet clair → Violet foncé start = Offset(0f, 1000f), // Départ en bas à gauche end = Offset(1000f, 0f) // Fin en haut à droite ) - val questions = QuestionStub.allQuestions - Box( modifier = Modifier .fillMaxSize() @@ -46,13 +70,21 @@ fun QuizPage() { ) { // Numéro de la question en haut Text( - text = "Question numéro : " + questions.first().id.toString(), + text = "Question numéro : " + questions[idCurrentQuestion].id.toString(), color = Color.White, fontSize = 18.sp, // Taille réduite pour tenir sur un écran portrait modifier = Modifier .align(Alignment.TopCenter) // Position en haut au centre .padding(top = 16.dp) // Un peu d'espace en haut ) + Text( + text = "Nombre de points : " + pts.toString(), + color = Color.White, + fontSize = 18.sp, // Taille réduite pour tenir sur un écran portrait + modifier = Modifier + .align(Alignment.TopCenter) // Position en haut au centre + .padding(top = 50.dp) // Un peu d'espace en haut + ) // Contenu centré, mais avec une gestion plus équilibrée du placement Column( @@ -64,7 +96,7 @@ fun QuizPage() { ) { // Question principale Text( - text = questions.first().question, + text = questions[idCurrentQuestion].question, color = Color.White, fontSize = 22.sp, // Taille plus petite pour tenir sur un écran portrait modifier = Modifier.padding(bottom = 16.dp) // Réduit l'espacement entre la question et les réponses @@ -72,13 +104,15 @@ fun QuizPage() { // Liste des réponses val answers = listOf( - questions.first().ansA, - questions.first().ansB, - questions.first().ansC, - questions.first().ansD + questions[idCurrentQuestion].ansA, + questions[idCurrentQuestion].ansB, + questions[idCurrentQuestion].ansC, + questions[idCurrentQuestion].ansD, + ) // Pour chaque réponse, on applique une Box avec un espacement uniforme + answers.forEach { answer -> Box( modifier = Modifier @@ -88,7 +122,7 @@ fun QuizPage() { brush = gradient, shape = RoundedCornerShape(16.dp) // Coins arrondis ) - .clickable { /* Action pour la réponse */ } + .clickable { goNext(questions[idCurrentQuestion].correctAns, answer) } .padding(horizontal = 8.dp), // Padding interne contentAlignment = Alignment.Center ) {