Skip to content

About

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.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Jokenpô 🪨📄✂️

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.

Funcionalidades

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

Regras do modo Australiano

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.

Tecnologias

  • Kotlin 2.2
  • Jetpack Compose (BOM 2026.02.01) com Material 3
  • Android Gradle Plugin 9.4
  • minSdk 26 (Android 8.0) · targetSdk / compileSdk 37
  • JUnit 4 para testes

Estrutura do projeto

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.

Como executar

Pré-requisitos

  • 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)

Pelo Android Studio

  1. Clone o repositório:
    git clone https://github.com/<seu-usuario>/Jokenpo-Android.git
  2. Abra a pasta no Android Studio e aguarde a sincronização do Gradle.
  3. Selecione um emulador ou dispositivo e clique em Run ▶.

Pela linha de comando

# Gerar o APK de debug
./gradlew assembleDebug

# Instalar em um dispositivo/emulador conectado
./gradlew installDebug

No Windows, use gradlew.bat no lugar de ./gradlew.

Testes

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 test

Autor

Adriano Leite da Silva

About

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.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages