diff --git a/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt b/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt index 5ed99f9..3ea7785 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt @@ -18,7 +18,6 @@ import fr.iut.sciencequest.ui.theme.ScienceQuestTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val vm by viewModels() setContent { ScienceQuestTheme { // A surface container using the 'background' color from the theme @@ -26,7 +25,7 @@ class MainActivity : ComponentActivity() { modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - NavHost(vm) + NavHost() } } } 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 similarity index 77% rename from android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduVIewModel.kt rename to android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt index 52fc848..94ebd4f 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 @@ -1,15 +1,19 @@ package fr.iut.sciencequest.ViewModels +import android.util.Log +import androidx.lifecycle.ViewModel import fr.iut.sciencequest.ViewModels.UiStates.PenduUIState import kotlinx.coroutines.flow.MutableStateFlow -class PenduVIewModel { +class PenduViewModel : ViewModel() { var uiState = MutableStateFlow(PenduUIState()) // mot : mot à trouver // motAct : état actuel du mot trouvé par l'utilisateur public 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") uiState.value = PenduUIState(false, uiState.value.nbViesRestantes, uiState.value.motATrouver, @@ -17,6 +21,7 @@ class PenduVIewModel { ) } 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) { if (uiState.value.motATrouver[index] == lettre) { @@ -29,6 +34,7 @@ class PenduVIewModel { uiState.value.motATrou ) } else { + Log.d("PenduViewModel","L'utilisateur s'est trompé de lettre") uiState.value = PenduUIState(true, uiState.value.nbViesRestantes - 1, uiState.value.motATrouver, diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt index fc3326d..0717bed 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt @@ -3,6 +3,6 @@ package fr.iut.sciencequest.ViewModels.UiStates data class PenduUIState( val isActionGood: Boolean = false, val nbViesRestantes: Int = 10, - val motATrouver: String = "", - val motATrou: String = "" + val motATrouver: String = "Mot", + val motATrou: String = "___" ) 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 65889c6..4d0176a 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 @@ -1,16 +1,14 @@ package fr.iut.sciencequest.navigation -import android.util.Log import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import fr.iut.sciencequest.ViewModels.PenduViewModel import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM -import fr.iut.sciencequest.model.dto.extensions.ToModel import fr.iut.sciencequest.stub.StubQuestionWithReponses -import fr.iut.sciencequest.stub.getScientifiqueListeStub import fr.iut.sciencequest.view.AccountScreen import fr.iut.sciencequest.view.HomeScreen import fr.iut.sciencequest.view.LoginScreen @@ -20,12 +18,12 @@ import fr.iut.sciencequest.view.scientifiques.scientifiqueListeScreen @Composable -fun NavHost(scientifiquesDecouvertsVM: ScientifiquesDecouvertsVM) { +fun NavHost() { val navController = rememberNavController() NavHost( modifier = Modifier.fillMaxSize(), navController = navController, - startDestination = "listeScientifiques" + startDestination = "pendu" ) { composable(route = "home") { HomeScreen( 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 98abfc5..1a86694 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,18 +2,39 @@ package fr.iut.sciencequest.view.games import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.ui.Alignment 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.lifecycle.viewmodel.compose.viewModel import fr.iut.sciencequest.R +import fr.iut.sciencequest.ViewModels.PenduViewModel import fr.iut.sciencequest.view.TopBar @Composable -fun PenduScreen(goToAccount: () -> Unit, goToHome: () -> Unit) { +fun PenduScreen(viewModel: PenduViewModel = viewModel(), + goToAccount: () -> Unit, + goToHome: () -> Unit) { + val state = viewModel.uiState.collectAsState() 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 = { + if (it.isNotEmpty()) { + viewModel.PlayAction(it[0]) + }}, + modifier = Modifier.padding(20.dp)) + } } }