RepositoryAndroid
Alix JEUDI--LEMOINE 1 year ago
commit a979a66de4

@ -18,7 +18,6 @@ import fr.iut.sciencequest.ui.theme.ScienceQuestTheme
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val vm by viewModels<ScientifiquesDecouvertsVM>()
setContent { setContent {
ScienceQuestTheme { ScienceQuestTheme {
// A surface container using the 'background' color from the theme // A surface container using the 'background' color from the theme
@ -26,7 +25,7 @@ class MainActivity : ComponentActivity() {
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background color = MaterialTheme.colorScheme.background
) { ) {
NavHost(vm) NavHost()
} }
} }
} }

@ -0,0 +1,45 @@
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 : ViewModel() {
var uiState = MutableStateFlow<PenduUIState>(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,
uiState.value.motATrou
)
}
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) {
nvMotATrou = nvMotATrou.replaceRange(index,index, lettre.toString())
}
}
uiState.value = PenduUIState(true,
uiState.value.nbViesRestantes,
uiState.value.motATrouver,
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,
uiState.value.motATrou
)
}
}
}

@ -0,0 +1,8 @@
package fr.iut.sciencequest.ViewModels.UiStates
data class PenduUIState(
val isActionGood: Boolean = false,
val nbViesRestantes: Int = 10,
val motATrouver: String = "Mot",
val motATrou: String = "___"
)

@ -3,7 +3,7 @@ package fr.iut.sciencequest.ViewModels.UiStates
import fr.iut.sciencequest.model.metier.Scientifique import fr.iut.sciencequest.model.metier.Scientifique
class ScientifiqueDecouvertsUIState { class ScientifiqueDecouvertsUIState {
lateinit var scientifiques: MutableList<Scientifique> var scientifiques: MutableList<Scientifique>
constructor() { constructor() {
scientifiques = ArrayList<Scientifique>().toMutableList() scientifiques = ArrayList<Scientifique>().toMutableList()

@ -1,16 +1,14 @@
package fr.iut.sciencequest.navigation package fr.iut.sciencequest.navigation
import android.util.Log
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import fr.iut.sciencequest.ViewModels.PenduViewModel
import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM 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.StubQuestionWithReponses
import fr.iut.sciencequest.stub.getScientifiqueListeStub
import fr.iut.sciencequest.view.AccountScreen import fr.iut.sciencequest.view.AccountScreen
import fr.iut.sciencequest.view.HomeScreen import fr.iut.sciencequest.view.HomeScreen
import fr.iut.sciencequest.view.LoginScreen import fr.iut.sciencequest.view.LoginScreen
@ -20,12 +18,12 @@ import fr.iut.sciencequest.view.scientifiques.scientifiqueListeScreen
@Composable @Composable
fun NavHost(scientifiquesDecouvertsVM: ScientifiquesDecouvertsVM) { fun NavHost() {
val navController = rememberNavController() val navController = rememberNavController()
NavHost( NavHost(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
navController = navController, navController = navController,
startDestination = "listeScientifiques" startDestination = "pendu"
) { ) {
composable(route = "home") { composable(route = "home") {
HomeScreen( HomeScreen(

@ -2,18 +2,39 @@ package fr.iut.sciencequest.view.games
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth 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.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview 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.R
import fr.iut.sciencequest.ViewModels.PenduViewModel
import fr.iut.sciencequest.view.TopBar import fr.iut.sciencequest.view.TopBar
@Composable @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()) { Column(modifier = Modifier.fillMaxWidth()) {
TopBar(goToAccount, goToHome, stringResource(id = R.string.pendu)) TopBar(goToAccount, goToHome, stringResource(id = R.string.pendu))
//Text(text = stringResource(id = R.string.pendu), modifier = Modifier.padding(top=10.dp)) //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))
}
} }
} }

Loading…
Cancel
Save