🔴 P03: Genius Game (Simon Says) - Demo

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!


✅ Pré-requisitos

Antes de começar, certifique-se de já ter estudado:


🎯 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


🏗️ Passo a Passo (Wizard do Android Studio)

  1. Template: Empty Views Activity.

  2. Name: AppGeniusGamer_SeuNome.

  3. Package Name: br.com.curso.genius.

  4. Language: Kotlin.


🎨 Parte 1: As Cores (XML)

Crie 4 botões grandes na tela (Verde, Vermelho, Amarelo e Azul).

🎨 Padrão de Cores (Hexadecimal)


⚙️ 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()


📸 Resultado Esperado

Veja como sua tela deve ficar ao final deste projeto:

Tela inicial do Genius Gamer


🏆 Desafios para você (Upgrade!)

Se você terminou de programar a mecânica base do jogo e tudo está funcionando, experimente estes upgrades:


📖 Gabarito Oficial de Código (Para Conferência)

📄 Lógica Kotlin (Trecho de MainActivity.kt)


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.

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’.