Ajout de la page Qui-est-ce + description de l'idée pour la suite du jeu.

RepositoryAndroid^2
Tom BIARD 1 year ago
parent 15a6829ee8
commit 80a1c3a301

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AppInsightsSettings">
<option name="selectedTabId" value="Android Vitals" />
</component>
</project>

@ -2,24 +2,8 @@
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="LoginScreen">
<State />
</entry>
<entry key="app">
<State>
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="$USER_HOME$/.android/avd/Pixel_XL_API_34.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-03-12T12:45:20.117863504Z" />
</State>
<State />
</entry>
</value>
</component>

@ -17,6 +17,7 @@ import fr.iut.sciencequest.view.HomeScreen
import fr.iut.sciencequest.view.LoginScreen
import fr.iut.sciencequest.view.games.KahootScreen
import fr.iut.sciencequest.view.games.PenduScreen
import fr.iut.sciencequest.view.games.QuiScreen
import fr.iut.sciencequest.view.scientifiques.scientifiqueListeScreen
@ -42,6 +43,9 @@ fun NavHost(kahotVM: KahootViewModel = viewModel()) {
goToKahoot = {
kahotVM.lancerPartie()
navController.navigate("kahoot")
},
goToQui = {
navController.navigate("qui")
}
)
}
@ -89,6 +93,15 @@ fun NavHost(kahotVM: KahootViewModel = viewModel()) {
viewModel = kahotVM)
}
composable(route= "qui"){
QuiScreen(goToAccount = {
navController.navigate("account")
},
goToHome = {
navController.navigate("home")
})
}
composable(route = "listeScientifiques") {
scientifiqueListeScreen(goToAccount = {
navController.navigate("account")

@ -21,21 +21,22 @@ import fr.iut.sciencequest.ViewModels.KahootViewModel
fun HomeScreen(goToHome: () -> Unit,
goToAccount: () -> Unit,
goToPendu: () -> Unit,
goToKahoot: () -> Unit) {
goToKahoot: () -> Unit,
goToQui: () -> Unit) {
Column (modifier = Modifier.fillMaxWidth()){
TopBar(goToAccount, goToHome)
MainContent(goToPendu, goToKahoot)
MainContent(goToPendu, goToKahoot, goToQui)
}
}
@Preview
@Composable
fun HomeScreenPreview() {
HomeScreen({},{},{}, {})
HomeScreen({},{},{},{},{})
}
@Composable
fun MainContent(goToPendu: () -> Unit, goToKahoot: () -> Unit) {
fun MainContent(goToPendu: () -> Unit, goToKahoot: () -> Unit, goToQui: () -> Unit) {
val context = LocalContext.current;
val comingSoon = Toast.makeText(context, "Coming soon", Toast.LENGTH_SHORT);
@ -47,7 +48,7 @@ fun MainContent(goToPendu: () -> Unit, goToKahoot: () -> Unit) {
Button(onClick = goToKahoot, Modifier.fillMaxWidth()) {
Text(text = "Kahoot", fontSize = 13.sp)
}
Button(onClick = { comingSoon.show() }, Modifier.fillMaxWidth()) {
Button(onClick = goToQui, Modifier.fillMaxWidth()) {
Text(text = "Qui est ce ?", fontSize = 13.sp)
}
}

@ -0,0 +1,92 @@
package fr.iut.sciencequest.view.games
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.fillMaxWidth
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
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.style.TextAlign
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.KahootViewModel
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 QuiScreen(viewModel: KahootViewModel = viewModel(),
goToAccount: () -> Unit,
goToHome: () -> Unit) {
val state = viewModel.uiState.collectAsState()
Column(modifier = Modifier.fillMaxWidth()) {
TopBar(goToAccount, goToHome, stringResource(id = R.string.kahoot))
QuiPlayer(state.value.question) {
viewModel.ajouterPoints(it)
}
}
}
@Preview
@Composable
fun QuiScreenPreview(){
QuiScreen(goToAccount = {}, goToHome = {})
}
@Preview
@Composable
fun QuiPlayerPreview(){
val i = 0
QuiPlayer(question = StubQuestionWithReponses) {}
}
@Composable
fun QuiPlayer(question: QuestionWithSimpleResponseDTO,
sendReponse: (Long) -> Unit){
val context = LocalContext.current;
val currTime = System.currentTimeMillis()
Column (horizontalAlignment = Alignment.CenterHorizontally){
QuiQuestion(question = question.question)
QuiReponses(reponses = question.reponses) {
sendReponse(currTime - System.currentTimeMillis())
Toast.makeText(context, it.reponse, Toast.LENGTH_SHORT).show()
}
}
}
@Composable
fun QuiReponses(reponses : List<ReponseSimpleDTO>, action: (ReponseSimpleDTO)->Unit) {
LazyVerticalGrid(columns = GridCells.Fixed(2),
contentPadding = PaddingValues(12.dp),
verticalArrangement = Arrangement.spacedBy(10.dp),
horizontalArrangement = Arrangement.spacedBy(10.dp)) {
reponses.forEach {
item() {
Button(onClick = {action(it)}){
Text(it.reponse)
}
}
}
}
}
@Composable
fun QuiQuestion(question: String){
Text(question, textAlign = TextAlign.Center)
}
Loading…
Cancel
Save