From bfa62c02a3b20639c44074807952602c80b5bfc7 Mon Sep 17 00:00:00 2001 From: Renaud BEURET Date: Thu, 28 Mar 2024 10:57:11 +0100 Subject: [PATCH 1/2] [ADD] Va chercher nom dans l'api (va chercher un id inscrit en dur) --- .../sciencequest/ViewModels/PenduViewModel.kt | 26 +++++++++++++++++-- .../fr/iut/sciencequest/view/games/Pendu.kt | 6 ++++- android/app/src/main/res/values/strings.xml | 1 + 3 files changed, 30 insertions(+), 3 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..8ae07a3 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 @@ -2,15 +2,37 @@ package fr.iut.sciencequest.ViewModels import android.util.Log import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import fr.iut.sciencequest.ViewModels.UiStates.PenduUIState +import fr.iut.sciencequest.model.buisness.Scientifique.fetchScientifiqueById +import fr.iut.sciencequest.model.buisness.Scientifique.fetchScientifiques +import fr.iut.sciencequest.model.dto.extensions.ToModel import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.launch class PenduViewModel : ViewModel() { - var uiState = MutableStateFlow(PenduUIState()) + var uiState = MutableStateFlow(PenduUIState()) + + fun InitPartie() { + Log.d("PenduViewModel","Un utilisateur initialise une partie") + viewModelScope.launch { + fetchScientifiqueById(1).collect { + var motATrou = "" + for (chr in it.nom) { + motATrou += "_" + } + uiState.value = PenduUIState( + isActionGood = true, + motATrouver = it.nom, + motATrou = motATrou + ) + } + } + } // mot : mot à trouver // motAct : état actuel du mot trouvé par l'utilisateur - public fun PlayAction(lettre: Char) { + fun PlayAction(lettre: Char) { Log.d("PenduViewModel","Un utilisateur joue une action") if (uiState.value.motATrou.contains(lettre)) { Log.d("PenduViewModel","L'utilisateur a fait une action invalide") 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..f9157c2 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 @@ -5,6 +5,7 @@ import android.widget.Toast import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable @@ -37,11 +38,14 @@ fun PenduScreen(viewModel: PenduViewModel = viewModel(), 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() } }}, modifier = Modifier.padding(20.dp)) + Button(onClick = { viewModel.InitPartie() }) { + Text(text = stringResource(id = R.string.reset_game)) + } } } } diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 62fda02..7c35053 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -13,4 +13,5 @@ Continuer sans compte Si vous n\'avez pas encore de compte, vous avez deux possibilitées, soit vous continuez sans compte, soit vous vous inscrivez Coming soon... + Nouvelle Partie \ No newline at end of file From 7385ab6d02030c3a209175561f6e9066a6165bdb Mon Sep 17 00:00:00 2001 From: Renaud BEURET Date: Thu, 28 Mar 2024 11:09:44 +0100 Subject: [PATCH 2/2] [FIX] Mot a trouver nom et pas prenom + nom --- .../sciencequest/ViewModels/PenduViewModel.kt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 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 8ae07a3..a54f7e1 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 @@ -17,13 +17,19 @@ class PenduViewModel : ViewModel() { Log.d("PenduViewModel","Un utilisateur initialise une partie") viewModelScope.launch { fetchScientifiqueById(1).collect { + val nomComplet = it.prenom + " " + it.nom + Log.d("ViewModelPendu",nomComplet) var motATrou = "" - for (chr in it.nom) { - motATrou += "_" + for (chr in nomComplet) { + motATrou += if (chr == ' ') { + ' ' + } else { + '_' + } } uiState.value = PenduUIState( isActionGood = true, - motATrouver = it.nom, + motATrouver = nomComplet, motATrou = motATrou ) } @@ -34,7 +40,7 @@ class PenduViewModel : ViewModel() { // motAct : état actuel du mot trouvé par l'utilisateur fun PlayAction(lettre: Char) { Log.d("PenduViewModel","Un utilisateur joue une action") - if (uiState.value.motATrou.contains(lettre)) { + if (lettre == ' ' || uiState.value.motATrou.contains(lettre)) { Log.d("PenduViewModel","L'utilisateur a fait une action invalide") uiState.value = PenduUIState(false, false, @@ -42,8 +48,7 @@ class PenduViewModel : ViewModel() { uiState.value.motATrouver, uiState.value.motATrou ) - } - if (uiState.value.motATrouver.contains(lettre)) { + } else if (uiState.value.motATrouver.contains(lettre)) { Log.d("PenduViewModel","L'utilisateur a trouvé une lettre") var nvMotATrou = uiState.value.motATrou for (index in uiState.value.motATrouver.indices) {