You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/br/6-space-game/1-introduction/assignment.md

100 lines
5.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "c8fc39a014d08247c082878122e2ba73",
"translation_date": "2025-10-22T23:16:10+00:00",
"source_file": "6-space-game/1-introduction/assignment.md",
"language_code": "br"
}
-->
# Criação de um Jogo: Aplicando Padrões de Projeto
## Visão Geral da Tarefa
Coloque em prática seu conhecimento recém-adquirido sobre padrões de projeto criando um protótipo simples de jogo! Esta tarefa ajudará você a praticar tanto padrões arquiteturais (herança ou composição) quanto o sistema de comunicação pub/sub que você aprendeu na aula.
## Instruções
Crie uma representação simples de um jogo que demonstre os padrões de projeto abordados nesta aula. Seu jogo deve ser funcional, mas não precisa de gráficos complexos foque na arquitetura subjacente e nos padrões de comunicação.
### Requisitos
**Escolha Seu Padrão Arquitetural:**
- **Opção A**: Use herança baseada em classes (como o exemplo `GameObject``Movable``Hero`)
- **Opção B**: Use composição (como a abordagem de função fábrica com comportamentos mistos)
**Implemente a Comunicação:**
- **Inclua** uma classe `EventEmitter` para mensagens pub/sub
- **Configure** pelo menos 2-3 tipos diferentes de mensagens (como `PLAYER_MOVE`, `ENEMY_SPAWN`, `SCORE_UPDATE`)
- **Conecte** a entrada do usuário (teclado/mouse) aos eventos do jogo por meio do sistema de eventos
**Elementos do Jogo a Incluir:**
- Pelo menos um personagem controlado pelo jogador
- Pelo menos um outro objeto do jogo (inimigo, item coletável ou elemento ambiental)
- Interação básica entre objetos (colisão, coleta ou comunicação)
### Ideias de Jogos Sugeridas
**Jogos Simples para Considerar:**
- **Jogo da Cobra** Segmentos da cobra seguem a cabeça, comida aparece aleatoriamente
- **Variante do Pong** Raquete responde ao input, bola rebate nas paredes
- **Jogo de Coleta** Jogador se move coletando itens enquanto evita obstáculos
- **Defesa de Torre Básica** Torres detectam e atiram em inimigos em movimento
### Diretrizes de Estrutura de Código
```javascript
// Example starting structure
const Messages = {
// Define your game messages here
};
class EventEmitter {
// Your event system implementation
}
// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
```
### Testando Sua Implementação
**Verifique se seu código funciona:**
- **Testando** se os objetos se movem ou mudam quando eventos são disparados
- **Confirmando** que múltiplos objetos podem responder ao mesmo evento
- **Checando** se você pode adicionar novos comportamentos sem modificar o código existente
- **Garantindo** que a entrada do teclado/mouse dispara corretamente os eventos do jogo
## Diretrizes de Submissão
**Sua submissão deve incluir:**
1. **Arquivo(s) JavaScript** com a implementação do seu jogo
2. **Arquivo HTML** para executar e testar seu jogo (pode ser simples)
3. **Comentários** explicando qual padrão você escolheu e por quê
4. **Documentação breve** dos tipos de mensagens e o que elas fazem
## Rubrica
| Critério | Exemplary (3 pontos) | Adequate (2 pontos) | Needs Improvement (1 ponto) |
|----------|---------------------|---------------------|------------------------------|
| **Padrão Arquitetural** | Implementa corretamente herança OU composição com hierarquia clara de classes/objetos | Usa o padrão escolhido com pequenos problemas ou inconsistências | Tenta usar o padrão, mas a implementação tem problemas significativos |
| **Implementação Pub/Sub** | EventEmitter funciona corretamente com múltiplos tipos de mensagens e fluxo de eventos adequado | Sistema básico de pub/sub funciona com algum manuseio de eventos | Sistema de eventos presente, mas não funciona de forma confiável |
| **Funcionalidade do Jogo** | Três ou mais elementos interativos que se comunicam por meio de eventos | Dois elementos interativos com comunicação básica de eventos | Um elemento responde a eventos ou interação básica |
| **Qualidade do Código** | Código limpo, bem comentado, com organização lógica e JavaScript moderno | Código geralmente bem organizado com comentários adequados | Código funciona, mas carece de organização ou comentários claros |
**Pontos Extras:**
- **Mecânicas criativas de jogo** que mostram usos interessantes dos padrões
- **Múltiplos métodos de entrada** (eventos de teclado E mouse)
- **Arquitetura escalável** que seria fácil de estender com novos recursos
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.