Skip to content

csharpbrasil/tetris-godot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

🧱 Tetris — Godot 4 + C#

Godot CSharp Platform


✨ Sobre o projeto

Implementação fiel do Tetris clássico com mecânicas modernas:

  • 7-bag randomiser — garante que nenhuma peça fique muito tempo sem aparecer
  • Ghost piece — mostra onde a peça vai cair
  • Hold piece — guarda uma peça para usar depois (tecla C)
  • Next queue — exibe as próximas 3 peças
  • Wall kicks SRS — sistema oficial de rotação com 5 testes de colisão
  • DAS + ARR — delayed auto-shift e auto-repeat suaves para movimento horizontal
  • Lock delay — 0,5 s para reposicionar antes de fixar
  • Níveis — velocidade aumenta a cada 10 linhas; tabela de velocidade oficial da Guideline
  • Pontuação oficial — Single 100, Double 300, Triple 500, Tetris 800 × nível

Destaques técnicos

Recurso Abordagem
Lógica pura Board.cs — sem dependências Godot, facilmente testável
Peças Tetrominoes.cs — formas em matrizes 4×4 + wall kicks SRS
Renderização Sprites poolados (sem instâncias dinâmicas por frame)
Animações Flash de linha limpa via _Draw() + alpha overlay
Sprites 8 PNGs 32×32 gerados por código com gradiente + bevel
Sons 6 WAVs sintetizados: move, rotate, lock, clear, level-up, game over

🕹️ Controles

Ação Teclas
Mover esquerda / direita ou A D
Rotacionar CW W X
Rotacionar CCW Z
Soft drop S
Hard drop Espaço
Hold C ou Shift
Pausar Esc
Reiniciar R (no game over)

🗂️ Estrutura do Projeto

src/
├── assets/
│   ├── sprites/
│   │   ├── block_I.png     # Ciano  (32×32, gradiente + bevel)
│   │   ├── block_O.png     # Amarelo
│   │   ├── block_T.png     # Roxo
│   │   ├── block_S.png     # Verde
│   │   ├── block_Z.png     # Vermelho
│   │   ├── block_J.png     # Azul
│   │   ├── block_L.png     # Laranja
│   │   └── block_ghost.png # Translúcido (ghost piece)
│   └── sounds/
│       ├── move.wav         # Movimento lateral
│       ├── rotate.wav       # Rotação
│       ├── lock.wav         # Peça fixada
│       ├── clear.wav        # Linha limpa
│       ├── level.wav        # Subiu de nível
│       └── gameover.wav     # Fim de jogo
├── scenes/
│   └── Main.tscn            # Tabuleiro + painel lateral (Hold/Next/Score)
├── scripts/
│   ├── Tetrominoes.cs       # Shapes 4×4 das 7 peças + wall kicks SRS
│   ├── Board.cs             # Grid 10×20, gravidade, linhas, lock delay
│   └── Main.cs              # Loop, input DAS/ARR, rendering poolado, UI
├── TetrisGodot.csproj
└── TetrisGodot.sln

⚙️ Pré-requisitos

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

🚀 Como rodar

# 1. Clone o repositório
git clone https://github.com/csharpbrasil/tetris-godot.git

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

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

# 4. Jogue!
#    F5

🏆 Sistema de pontuação

Ação Pontos
Single (1 linha) 100 × nível
Double (2 linhas) 300 × nível
Triple (3 linhas) 500 × nível
Tetris (4 linhas) 800 × nível
Hard drop 2 × linhas caídas

📄 Licença

MIT — use, modifique e compartilhe à vontade.

About

Jogo clássico - Tetris

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages