Skip to content
Merged

V2 #7

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: CI

on:
push:
pull_request:
workflow_dispatch:

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'

- name: Run Tests
run: mvn test
36 changes: 32 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Ele foi escrito para rodar na AWS sem necessidade de servidor próprio, usando *

## 📦 Pré-requisitos

- **Java JDK** (versão 11 ou superior)
- **Java JDK** (versão 17 ou superior)
[Download do JDK](https://www.oracle.com/java/technologies/javase-downloads.html) ou use o OpenJDK.
- **Maven CLI**
[Download Maven](https://maven.apache.org/download.cgi)
Expand Down Expand Up @@ -45,7 +45,9 @@ O projeto segue a estrutura **Maven Standard Directory Layout**:
│ │ │ └── com
│ │ │ └── mauadev
│ │ │ └── code
│ │ │ └── Handler.java # Código principal!!!
│ │ │ ├── Logic.java # ⭐ SEU ARQUIVO PRINCIPAL
│ │ │ ├── Handler.java # Ponte Lambda ↔ Logic (não mexa)
│ │ │ └── entities/ # Modelos de dados (não mexa)
│ │ └── resources
│ │ └── (se necessário, arquivos de configuração)
│ └── test
Expand All @@ -54,6 +56,16 @@ O projeto segue a estrutura **Maven Standard Directory Layout**:

---

## ⭐ Onde implementar sua snake

| | Arquivo | O que fazer |
|---|---|---|
| ✅ **EDITE** | `src/main/java/com/mauadev/code/Logic.java` | **Este é o seu arquivo principal.** Implemente toda a inteligência da cobra aqui. |
| 🚫 Não altere | `Handler.java` | Roteador HTTP entre o API Gateway e a sua lógica. |
| 🚫 Não altere | `entities/` | Modelos de dados (GameState, Board, Snake…). |
| 🚫 Não altere | `.github/`, Terraform, infraestrutura | Deploy automático — já configurado. |


## ⚙️ Dependências (`pom.xml`)

O `pom.xml`, nosso arquivo de dependencias, padrão para rodar este projeto:
Expand Down Expand Up @@ -232,6 +244,7 @@ Assim que o Terraform concluir o deploy, será criada automaticamente uma URL p
5. Salve as configurações
6. Agora você pode testar a cobra nos jogos e desafios!

Ou acesse a [Arena Mauá](https://arena.devmaua.com) para competir com outros alunos!

---

Expand All @@ -246,7 +259,7 @@ O `Handler.java` implementa a interface do **AWS Lambda RequestHandler**, recebe
- Retorna resposta JSON ou erro 404
- **`handleInfo()`** → informações da cobra (cor, cabeça, cauda, autor, versão da API)
- **`handleStart()`** → chamado no início do jogo (log inicial)
- **`handleMove()`** → lógica da jogada (neste exemplo, sempre "up")
- **`handleMove()`** → repassa para `Logic.getMove()`, que decide o movimento
- **`handleEnd()`** → chamado no final do jogo (log final)
- Usa **Gson** para converter objetos Java para JSON
- Usa **APIGatewayProxyRequestEvent** e **APIGatewayProxyResponseEvent** para receber/enviar dados
Expand Down Expand Up @@ -276,6 +289,21 @@ mvn test

## 📌 Observações

- O método `handleMove()` deve conter a inteligência do jogo.
- O método `Logic.getMove()` deve conter a inteligência do jogo.
- O uso do **maven-shade-plugin** é obrigatório para empacotar todas as dependências no JAR final.
- **EVITE** adicionar mais dependencias, pois o shade plugin empacota **todas as dependencias** em um JAR, tornando-o **talvez muito pesado** para o deploy!!!

---

## 📈 Progressão pedagógica

Use esta tabela como roteiro para evoluir a inteligência da sua cobra:

| Nível | Nome | O que implementar |
|---|---|---|
| 0 | **Random** | movimento aleatório (já vem pronto) |
| 1 | **Don't Die** | não voltar, não bater na parede, não bater em si mesmo |
| 2 | **Food** | procurar comida |
| 3 | **Space** | avaliar espaço disponível, evitar becos |
| 4 | **Opponents** | considerar outras cobras, head-to-head |
| 5 | **Advanced** | BFS, flood fill, A*, avaliação de território |
Loading
Loading