🔴 P03: Genius Game (Simon Says)
Este é o seu projeto de Transição. Você continuará usando o desenho em XML, mas escreverá toda a lógica em Kotlin. É aqui que você sentirá o poder da linguagem moderna!
🎯 Objetivo do Projeto
Criar o clássico jogo de memória das cores. O app pisca uma sequência de botões coloridos e o jogador deve repetir a sequência exata para ganhar pontos.
📖 Dicionário do Projeto
-
ViewBinding: É a forma moderna de conectar o XML ao Kotlin. Você não precisa mais de
findViewById! O Kotlin cria uma “ponte” automática para você. -
List / ArrayList: É uma “fila” de itens. Usaremos uma lista para guardar a sequência de cores que o computador sorteou.
-
Coroutine (Delay): Usaremos o
delaydo Kotlin para fazer as cores piscarem de forma suave.
🏗️ Passo a Passo (Wizard do Android Studio)
-
Template: Empty Views Activity.
-
Name:
AppGeniusGamer_SeuNome. -
Package Name:
br.com.curso.genius. -
Language: Kotlin.
🎨 Parte 1: As Cores (XML)
Crie 4 botões grandes na tela (Verde, Vermelho, Amarelo e Azul).
🎨 Padrão de Cores (Hexadecimal)
-
Verde:
#4CAF50 -
Vermelho:
#F44336 -
Amarelo:
#FFEB3B -
Azul:
#2196F3
⚙️ Parte 2: A Lógica em Kotlin
O Diferencial do Kotlin:
Em Kotlin, você pode criar uma lista de botões e sorteá-los de forma muito simples:
val sorteado = listaDeBotoes.random()
✅ Gabarito Comentado (Lógica da Sequência)
class MainActivity : AppCompatActivity() {
// Lista para guardar a sequência do computador
private val sequenciaComputador = mutableListOf<Int>()
private var passoJogador = 0
private fun adicionarNovaCor() {
// Sorteia um número de 0 a 3 (um para cada cor)
val novaCor = (0..3).random()
sequenciaComputador.add(novaCor)
// Faz a sequência piscar na tela
mostrarSequencia()
}
private fun verificarJogada(corClicada: Int) {
if (corClicada == sequenciaComputador[passoJogador]) {
passoJogador++
if (passoJogador == sequenciaComputador.size) {
// Jogador acertou tudo! Próximo nível.
passoJogador = 0
adicionarNovaCor()
}
} else {
// ERROU! Game Over
println("GAME OVER! Pontuação: ${sequenciaComputador.size - 1}")
sequenciaComputador.clear()
}
}
}
📐 Organização de Pastas
Mesmo sendo XML, já comece a organizar:
br.com.curso.genius.ui.MainActivity
br.com.curso.genius.logic.GameEngine (Opcional: mover a lógica para cá).
??? Requisitos de Configuração e Solução de Problemas
Se você encontrar erros ao tentar rodar este projeto, verifique os pontos abaixo:
1. Sintaxe do XML (Para projetos com XML)
No Android, dimensões não aceitam pontos decimais.
-
? Errado: android:padding=“16.dp”
-
? Correto: android:padding=“16dp”
2. Suporte ao AndroidX
O arquivo gradle.properties na raiz do projeto deve conter:
android.useAndroidX=true
android.enableJetifier=true
3. Estrutura de Pastas
O código fonte deve estar dentro de um módulo chamado app:
NomeDoProjeto/app/src/main/…
4. Recursos Obrigatórios
Certifique-se de ter os arquivos em res/values: colors.xml, strings.xml, themes.xml.
5. Configuração do Gradle
O arquivo settings.gradle na raiz deve conter include ‘:app’.