1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| @Composable fun GameScreen( gameViewModel: GameViewModel = viewModel() ) { val gameUiState by gameViewModel.uiState.collectAsState()
Column { Text("Unscramble") GameLayout( onUserGuessChanged = { gameViewModel.updateUserGuess(it) }, onKeyboardDone = { gameViewModel.checkUserGuess() }, isGuessWrong = gameUiState.isGuessWordWrong, userGuess = gameViewModel.userGuess, wordCount = gameUiState.currentWordCount, currentScrambledWord = gameUiState.currentScrambledWord, ) Column { Button( onClick = { gameViewModel.checkUserGuess() } ) { Text("Submit") }
OutlinedButton( onClick = { gameViewModel.skipWord() }, ) { Text("Skip") } } Card { Text(("Score: %d", gameUiState.score)) } if (gameUiState.isGameOver){ FinalScoreDialog( score = gameUiState.score, onPlayAgain = { gameViewModel.resetGame() } ) } } }
@Composable fun GameLayout( onUserGuessChanged: (String) -> Unit, isGuessWrong: Boolean, userGuess: String, onKeyboardDone: () -> Unit, wordCount: Int, currentScrambledWord: String, ) { Card { Column { Text(("%d/ 10", wordCount)) Text(currentScrambledWord) Text("Unscramble the word using all the letters.") OutlinedTextField( value = userGuess, onValueChange = onUserGuessChanged, label = { if(!isGuessWrong) { Text("Enter your word") } else { Text("Wrong Guess!") } }, isError = isGuessWrong, keyboardOptions = KeyboardOptions.Default.copy( imeAction = ImeAction.Done ), keyboardActions = KeyboardActions( onDone = { onKeyboardDone() } ) ) } } }
@Composable private fun FinalScoreDialog( score: Int, onPlayAgain: () -> Unit, ) { val activity = (LocalContext.current as Activity)
AlertDialog( title = { Text("Congratulations!") }, text = { Text(("You scored: %d", score)) }, dismissButton = { TextButton( onClick = { activity.finish() } ) { Text("Exit") } }, confirmButton = { TextButton( onClick = onPlayAgain ) { Text("Play Again") } } ) }
|