From 5bbc5537a95b5826e67aeff5c4b832b566dc7b55 Mon Sep 17 00:00:00 2001 From: libreton Date: Thu, 28 Mar 2024 11:52:56 +0100 Subject: [PATCH 1/2] fix pendu --- .../sciencequest/ViewModels/PenduViewModel.kt | 9 ++++++--- .../fr/iut/sciencequest/view/games/Pendu.kt | 19 +++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt index d5b93d6..d574d60 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt @@ -21,18 +21,21 @@ class PenduViewModel : ViewModel() { uiState.value.motATrou ) } - if (uiState.value.motATrouver.contains(lettre)) { + if (uiState.value.motATrouver.lowercase().contains(lettre.lowercase())) { Log.d("PenduViewModel","L'utilisateur a trouvé une lettre") var nvMotATrou = uiState.value.motATrou for (index in uiState.value.motATrouver.indices) { - if (uiState.value.motATrouver[index] == lettre) { - nvMotATrou = nvMotATrou.replaceRange(index,index + 1, lettre.toString()) + if (uiState.value.motATrouver[index].lowercase() == lettre.lowercase()) { + nvMotATrou = nvMotATrou.replaceRange(index,index + 1, + uiState.value.motATrouver[index].toString() + ) } } var isWon = false if (nvMotATrou.equals(uiState.value.motATrouver)) { isWon = true } + uiState.value = PenduUIState(isWon, true, uiState.value.nbViesRestantes, diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt index fed615e..20ba2ae 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt @@ -2,7 +2,9 @@ package fr.iut.sciencequest.view.games import android.content.Context import android.widget.Toast +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text @@ -14,6 +16,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import fr.iut.sciencequest.R import fr.iut.sciencequest.ViewModels.PenduViewModel @@ -28,20 +31,28 @@ fun PenduScreen(viewModel: PenduViewModel = viewModel(), Column(modifier = Modifier.fillMaxWidth()) { TopBar(goToAccount, goToHome, stringResource(id = R.string.pendu)) //Text(text = stringResource(id = R.string.pendu), modifier = Modifier.padding(top=10.dp)) - Column(modifier = Modifier.align(Alignment.CenterHorizontally)) + Column(modifier = Modifier + .align(Alignment.CenterHorizontally) + .fillMaxWidth()) { - Text(text = state.value.motATrou) + Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) { + Text(text = state.value.motATrou, fontSize = 30.sp) + } TextField(value = "", onValueChange = { if (it.isNotEmpty()) { viewModel.PlayAction(it[0]) if ((!state.value.isWon) && (state.value.nbViesRestantes == 0)) { goToHome() - } else { + } else if (state.value.isWon) { Toast.makeText(context,"Vous avez gagné !",Toast.LENGTH_LONG).show() + goToHome() } }}, - modifier = Modifier.padding(20.dp)) + modifier = Modifier.padding(20.dp).fillMaxWidth()) + Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) { + Text(text = state.value.nbViesRestantes.toString()) + } } } } From fe4e875c93eead82b63ec01fb22b6d0aaeb00a9b Mon Sep 17 00:00:00 2001 From: libreton Date: Tue, 2 Apr 2024 15:01:38 +0200 Subject: [PATCH 2/2] fix --- .../fr/iut/sciencequest/navigation/NavHost.kt | 13 ++++--- .../fr/iut/sciencequest/view/games/Kahoot.kt | 16 +++++--- .../fr/iut/sciencequest/view/games/Pendu.kt | 37 ++++++++++++++----- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt b/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt index 6e266a8..dc66149 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt @@ -21,7 +21,7 @@ import fr.iut.sciencequest.view.scientifiques.scientifiqueListeScreen @Composable -fun NavHost(kahotVM: KahootViewModel = viewModel()) { +fun NavHost(kahootVM: KahootViewModel = viewModel()) { val navController = rememberNavController() NavHost( modifier = Modifier.fillMaxSize(), @@ -40,7 +40,7 @@ fun NavHost(kahotVM: KahootViewModel = viewModel()) { navController.navigate("pendu") }, goToKahoot = { - kahotVM.lancerPartie() + kahootVM.lancerPartie() navController.navigate("kahoot") } ) @@ -80,17 +80,20 @@ fun NavHost(kahotVM: KahootViewModel = viewModel()) { } composable(route= "kahoot"){ - KahootScreen( goToAccount = { + KahootScreen( + goToAccount = { navController.navigate("account") }, goToHome = { navController.navigate("home") }, - viewModel = kahotVM) + viewModel = kahootVM + ) } composable(route = "listeScientifiques") { - scientifiqueListeScreen(goToAccount = { + scientifiqueListeScreen( + goToAccount = { navController.navigate("account") }, goToHome = { diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt index 8632270..3ab141e 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt @@ -4,6 +4,7 @@ import android.widget.Toast import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid @@ -18,6 +19,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import fr.iut.sciencequest.R import fr.iut.sciencequest.ViewModels.KahootViewModel @@ -25,7 +27,6 @@ import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO import fr.iut.sciencequest.model.dto.reponse.ReponseSimpleDTO import fr.iut.sciencequest.stub.StubQuestionWithReponses import fr.iut.sciencequest.view.TopBar -import java.util.Timer @Composable fun KahootScreen(viewModel: KahootViewModel = viewModel(), @@ -34,6 +35,7 @@ fun KahootScreen(viewModel: KahootViewModel = viewModel(), val state = viewModel.uiState.collectAsState() Column(modifier = Modifier.fillMaxWidth()) { TopBar(goToAccount, goToHome, stringResource(id = R.string.kahoot)) + KahootPlayer(state.value.question) { viewModel.ajouterPoints(it) } @@ -57,13 +59,17 @@ fun KahootPlayerPreview(){ @Composable fun KahootPlayer(question: QuestionWithSimpleResponseDTO, - sendReponse: (Long) -> Unit){ + sendResponse: (Long) -> Unit){ val context = LocalContext.current; val currTime = System.currentTimeMillis() - Column (horizontalAlignment = Alignment.CenterHorizontally){ + Column ( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceEvenly, + modifier = Modifier.fillMaxHeight() + ) { KahootQuestion(question = question.question) KahootReponses(reponses = question.reponses) { - sendReponse(currTime - System.currentTimeMillis()) + sendResponse(currTime - System.currentTimeMillis()) Toast.makeText(context, it.reponse, Toast.LENGTH_SHORT).show() } } @@ -88,5 +94,5 @@ fun KahootReponses(reponses : List, action: (ReponseSimpleDTO) @Composable fun KahootQuestion(question: String){ - Text(question, textAlign = TextAlign.Center) + Text(question, textAlign = TextAlign.Center, fontSize = 20.sp) } \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt index 0ead09d..30a3618 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt @@ -2,10 +2,16 @@ package fr.iut.sciencequest.view.games import android.content.Context import android.widget.Toast +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardActions import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.material3.TextField @@ -15,8 +21,11 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import fr.iut.sciencequest.R import fr.iut.sciencequest.ViewModels.PenduViewModel @@ -25,23 +34,33 @@ import fr.iut.sciencequest.view.TopBar @Composable fun PenduScreen(viewModel: PenduViewModel = viewModel(), goToAccount: () -> Unit, - goToHome: () -> Unit) { + goToHome: () -> Unit +) { val state = viewModel.uiState.collectAsState() val context = LocalContext.current; Column(modifier = Modifier.fillMaxWidth()) { TopBar(goToAccount, goToHome, stringResource(id = R.string.pendu)) //Text(text = stringResource(id = R.string.pendu), modifier = Modifier.padding(top=10.dp)) - Column(modifier = Modifier.align(Alignment.CenterHorizontally)) - { - Text(text = state.value.motATrou) - TextField(value = "", - onValueChange = { onLetterEntered(it, viewModel, context, goToHome) }, - modifier = Modifier.padding(20.dp)) - afficherVies(state.value.nbViesRestantes) + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceAround, + modifier = Modifier.fillMaxSize() + ) { + Text(text = state.value.motATrou, fontSize = 20.sp) + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceBetween, + ) { + TextField(value = "", + onValueChange = { onLetterEntered(it, viewModel, context, goToHome) }, + modifier = Modifier.padding(20.dp), + ) + afficherVies(state.value.nbViesRestantes) + Text("Lettres utilisées: " + state.value.lettresUtilises) + } Button(onClick = { viewModel.InitPartie() }) { Text(text = stringResource(id = R.string.reset_game)) } - Text("Lettres utilisées: " + state.value.lettresUtilises) } } }