Skip to content

csharpbrasil/othello-godot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

♟️ Othello — Godot 4 + C#

Godot CSharp Platform


✨ Sobre o projeto

Implementação do clássico jogo de tabuleiro Othello (Reversi) com:

  • Jogador vs CPU com IA de nível avançado
  • Visual moderno: tabuleiro verde com peças circulares gradiente e sombra
  • Animação de virada de peça (flip com squish)
  • Efeitos sonoros sintetizados por código (sem dependências externas)

Destaques técnicos

Recurso Abordagem
Lógica do tabuleiro Board.cs — classe pura C# sem dependências Godot
IA Minimax depth-6 + Alpha-Beta pruning
Heurística Tabela de pesos posicionais + mobilidade + paridade + bônus de canto
Animações Tweens do Godot (flip squish na virada de peça)
Sprites PNGs gerados por código com gradiente radial + sombra
Sons WAVs sintetizados: thud ao colocar, tick ao virar, arpejo de vitória/derrota

🕹️ Como jogar

  • Você joga com as peças pretas (⬛), a CPU com as brancas (⬜)
  • Clique em uma casa destacada em verde para fazer sua jogada
  • Uma jogada válida deve capturar ao menos uma peça adversária em qualquer direção
  • Vence quem tiver mais peças ao final (tabuleiro cheio ou sem jogadas possíveis)

Controles

Ação Entrada
Jogar Clique do mouse na casa destacada
Reiniciar R

🗂️ Estrutura do Projeto

src/
├── assets/
│   ├── sprites/
│   │   ├── piece_black.png   # Disco preto com gradiente (64×64)
│   │   ├── piece_white.png   # Disco branco com gradiente (64×64)
│   │   └── hint.png          # Indicador de jogada válida (64×64)
│   └── sounds/
│       ├── place.wav          # Som ao colocar peça
│       ├── flip.wav           # Som ao virar peça
│       ├── win.wav            # Arpejo de vitória
│       └── lose.wav           # Arpejo de derrota
├── scenes/
│   ├── Main.tscn              # Cena principal com tabuleiro e UI
│   └── Piece.tscn             # Nó de peça individual
├── scripts/
│   ├── Board.cs               # Lógica pura: estado, jogadas válidas, flips
│   ├── OthelloAI.cs           # Minimax + Alpha-Beta + heurística posicional
│   ├── Piece.cs               # Nó Godot: sprite + animação de flip
│   └── Main.cs                # Orquestração: input, IA, UI, sons
├── OthelloGodot.csproj
└── OthelloGodot.sln

🤖 Sobre a IA

A IA usa Minimax com profundidade 6 e Alpha-Beta pruning para podar ramos impossíveis de melhorar o resultado.

A função de avaliação combina três critérios:

Critério Peso Descrição
Posicional alto Tabela clássica de pesos: cantos valem +100, bordas de canto valem −20
Mobilidade alto Diferença proporcional no número de jogadas disponíveis
Paridade cresce no fim Diferença na contagem de peças (mais relevante nos últimos turnos)
Cantos muito alto Bônus/penalidade extra de +300 por canto capturado

⚙️ Pré-requisitos

Ferramenta Versão mínima
Godot Engine (Mono) 4.6
.NET SDK 8.0

🚀 Como rodar

# 1. Clone o repositório
git clone https://github.com/<seu-usuario>/othello-godot.git

# 2. Abra o projeto no Godot
#    File → Open Project → selecione a pasta src/

# 3. Compile o C#
#    Project → Build  (Ctrl+B)

# 4. Rode o jogo
#    F5

📄 Licença

MIT — use, modifique e compartilhe à vontade.