https://github.com/gabrielmaida/block-smasher
Simple game in Lua with a focus on distributed programming
https://github.com/gabrielmaida/block-smasher
distributed-computing game love2d lua
Last synced: 17 days ago
JSON representation
Simple game in Lua with a focus on distributed programming
- Host: GitHub
- URL: https://github.com/gabrielmaida/block-smasher
- Owner: GabrielMaida
- License: mit
- Created: 2025-04-03T23:45:39.000Z (28 days ago)
- Default Branch: main
- Last Pushed: 2025-04-13T21:40:20.000Z (18 days ago)
- Last Synced: 2025-04-14T21:18:14.128Z (17 days ago)
- Topics: distributed-computing, game, love2d, lua
- Language: Lua
- Homepage:
- Size: 85.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Block Smasher - Lua/LÖVE
ADS41 - Gabriel Antônio, Leonardo Peron, Pedro Henrique Sardá*UNICESUSC - 2025*
---
## Conceito
O "Block Smasher" é um jogo arcade desenvolvido em Lua, inspirado no clássico estilo "Quebra-Tijolos". Sua principal inovação é a integração de conceitos de programação distribuída, permitindo a existência de múltiplas bolinhas simultaneamente durante a partida. O jogo apresenta uma barra controlada pelo jogador e blocos estrategicamente posicionados que devem ser destruídos. Ao pressionar a tecla espaço, o jogador lança uma bola em direção aos blocos, preferencialmente em ângulo, para evitar movimentos lineares. O objetivo final é simples: destruir todos os blocos.
---
## Pré-Requisitos
- O desenvolvimento será feito utilizando:
- Linguagem de programação **[Lua](https://www.lua.org/)**
- Framework de criação de jogos 2D **[LÖVE](https://www.love2d.org/)**
- O projeto deve implementar conceitos de **[Programação Distribuída](https://dev.to/daviducolo/distributed-programming-from-basics-to-advanced-concepts-5h66)**.---
## Requisitos Funcionais
1. **Movimentação da Barra**:
O jogador deve ser capaz de mover a barra horizontalmente (esquerda e direita) usando as setas do teclado.
2. **Lançamento da Bola**:
O jogador deve ser capaz de lançar uma bola com a tecla espaço, preferencialmente em um ângulo para evitar movimento linear.
3. **Múltiplas Bolas Ativas**:
Deve ser possível ter mais de uma bola simultaneamente no jogo para simular o aspecto distribuído.
4. **Colisão da Bola**:
As bolas devem ricochetear ao colidirem com a barra, as paredes ou os blocos.
5. **Destruição de Blocos e Pontuação**:
Ao atingir os blocos, estes devem ser destruídos, e o jogador deve ganhar pontos. A pontuação deve ser exibida na tela em tempo real.
6. **Condição de Vitória**:
O jogo deve terminar e indicar a vitória quando todos os blocos forem destruídos.
7. **Pontuação em Tela**:
A pontuação do jogador será exibida dinamicamente durante o jogo, mas não será armazenada após o término da partida.
8. **Sincronização entre Bolas**:
O estado das bolas deve ser sincronizado entre processos distribuídos para garantir consistência durante a partida.---
## Casos de Uso
### Caso 1: Movimentação da Barra
**Ator:** Jogador
**Descrição:**
O jogador move a barra horizontalmente utilizando as setas do teclado.
**Fluxo Principal:**
1. O jogador pressiona a seta para a direita ou esquerda.
2. A barra se move na direção correspondente, respeitando os limites da tela.
3. O jogador ajusta a posição da barra para interceptar a bola.### Caso 2: Lançamento da Bola
**Ator:** Jogador
**Descrição:**
O jogador lança uma bola em direção aos blocos pressionando a tecla espaço.
**Fluxo Principal:**
1. O jogador posiciona a barra.
2. O jogador pressiona a tecla espaço.
3. A bola é lançada em um ângulo inicial, movendo-se em direção aos blocos.### Caso 3: Vitória do Jogador
**Ator:** Jogador
**Descrição:**
O jogador vence o jogo ao destruir todos os blocos presentes no cenário.
**Fluxo Principal:**
1. O jogador acerta os blocos com a(s) bola(s).
2. Quando todos os blocos são destruídos, o sistema exibe uma mensagem de vitória.
3. O jogo termina e o jogador tem a opção de reiniciar a partida.### Caso 4: Sincronização de Bolas (Programação Distribuída)
**Ator:** Servidor e Clientes
**Descrição:**
As bolas são sincronizadas entre diferentes processos ou dispositivos conectados.
**Fluxo Principal:**
1. O jogador lança uma bola.
2. O estado da bola (posição, direção, velocidade) é compartilhado entre os processos ou máquinas conectadas.
3. As posições das bolas são atualizadas em tempo real nos dispositivos conectados, garantindo consistência.---
## Apresentação
**Data de Apresentação:** 17/04
### Tópicos de Avaliação:
- Sobre a linguagem
- Por que da escolha dela
- Overview do projeto
- Explicação dos Requisitos Funcionais
- Explicação dos Casos de Uso