Merge remote-tracking branch 'origin/Android' into Android

RepositoryAndroid^2
Lilian BRETON 1 year ago
commit 56a191a11d

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ScienceQuest.iml" filepath="$PROJECT_DIR$/.idea/ScienceQuest.iml" />
</modules>
</component>
</project>

@ -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"> <project version="4">
<component name="deploymentTargetDropDown"> <component name="deploymentTargetDropDown">
<value> <value>
<entry key="LoginScreen">
<State />
</entry>
<entry key="app"> <entry key="app">
<State> <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>
</entry> </entry>
</value> </value>
</component> </component>

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

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

@ -0,0 +1,8 @@
Description dérive Qui-est-ce:
- Image flou du scientifique à trouver
- 1 seul indice au début en dessous de la photo exemple: femme - 1967
- 4 réponse possible comme kahoot, 1 seul essai
- maximum de point si la personne trouve du premier coup
- possibilité d'avoir + d'indice / diminution du flou mais gagne moins de points au fur et à mesure
- Plus simple à implémenter qu'un réel qui-est-ce.
Loading…
Cancel
Save