Jogo de Pedra, Papel e Tesoura para Android, feito em Kotlin com Jetpack Compose. Você joga contra o computador em dois modos: o Clássico, com 3 elementos, e o Australiano, com 8 elementos e empates entre elementos diferentes.
- Dois modos de jogo
- Clássico: Pedra, Papel e Tesoura.
- Australiano: 8 elementos (Pedra, Papel, Tesoura, Lagarto, Spock, Armadilha, Chuva e Fogo). Quando não existe regra entre dois elementos diferentes, a rodada empata.
- Contagem "JO… KEN… PÔ!" animada e com vibração antes de revelar a jogada do computador.
- Explicação do resultado de cada rodada (ex.: "Papel embrulha a Pedra").
- Placar com vitórias, derrotas, empates, sequência de vitórias atual e melhor sequência, e botão para zerar.
- Tela de regras mostrando, para cada elemento, contra quem ele ganha, perde e empata.
- O estado da partida é mantido ao girar a tela.
| Elemento | Vence |
|---|---|
| 🪨 Pedra | Tesoura, Lagarto, Armadilha |
| 📄 Papel | Pedra, Spock, Chuva |
| ✂️ Tesoura | Papel, Lagarto, Armadilha |
| 🦎 Lagarto | Papel, Spock, Chuva, Fogo |
| 🖖 Spock | Pedra, Tesoura, Fogo, Armadilha |
| 🪤 Armadilha | Lagarto, Chuva |
| 🌧️ Chuva | Pedra, Spock, Fogo |
| 🔥 Fogo | Papel, Tesoura, Armadilha |
Os pares que não aparecem na tabela empatam.
- Kotlin 2.2
- Jetpack Compose (BOM 2026.02.01) com Material 3
- Android Gradle Plugin 9.4
minSdk26 (Android 8.0) ·targetSdk/compileSdk37- JUnit 4 para testes
app/src/main/java/com/jokenpo/app/
├── MainActivity.kt # Ponto de entrada e navegação entre menu e jogo
├── game/
│ ├── Element.kt # Elementos do jogo (nome e emoji)
│ ├── GameMode.kt # Modos Clássico e Australiano, com suas regras
│ └── GameRules.kt # Motor de regras: resolve rodadas e sorteia a jogada da CPU
└── ui/
├── MenuScreen.kt # Tela de escolha do modo
├── GameScreen.kt # Arena, contagem, placar e seleção de jogada
├── RulesDialog.kt # Diálogo com as regras do modo
├── Components.kt # Componentes visuais reutilizáveis
└── theme/ # Cores, tipografia e tema
O motor de regras (GameRules) é independente da interface. Ele recebe a lista de elementos e de regras (vencedor → perdedor) e valida na criação que não existem regras duplicadas, contraditórias ou com elementos fora do modo. Para criar um novo modo, basta adicionar uma entrada em GameMode.
- Android Studio recente, com suporte ao AGP 9.4
- Android SDK 37
- O JDK usado pelo Gradle é baixado automaticamente (toolchain configurado em
gradle/gradle-daemon-jvm.properties)
- Clone o repositório:
git clone https://github.com/<seu-usuario>/Jokenpo-Android.git
- Abra a pasta no Android Studio e aguarde a sincronização do Gradle.
- Selecione um emulador ou dispositivo e clique em Run ▶.
# Gerar o APK de debug
./gradlew assembleDebug
# Instalar em um dispositivo/emulador conectado
./gradlew installDebugNo Windows, use gradlew.bat no lugar de ./gradlew.
Os testes unitários em GameRulesTest.kt verificam as regras do modo Clássico, a tabela de confrontos do modo Australiano, a simetria dos resultados em todos os modos, se a CPU só escolhe elementos do modo atual e se regras contraditórias são rejeitadas.
./gradlew testAdriano Leite da Silva