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/pt-PT/6-space-game/6-end-condition/assignment.md

164 lines
9.0 KiB

# Criar um Jogo de Exemplo
## Visão Geral da Tarefa
Agora que dominaste as condições de fim de jogo e a funcionalidade de reinício no teu jogo espacial, é hora de aplicares esses conceitos a uma experiência de jogo completamente nova. Vais conceber e construir o teu próprio jogo que demonstre diferentes padrões de condições de fim e mecânicas de reinício.
Esta tarefa desafia-te a pensar criativamente sobre design de jogos enquanto praticas as competências técnicas que aprendeste. Vais explorar diferentes cenários de vitória e derrota, implementar progressão do jogador e criar experiências de reinício envolventes.
## Requisitos do Projeto
### Funcionalidades Principais do Jogo
O teu jogo deve incluir os seguintes elementos essenciais:
**Variedade de Condições de Fim**: Implementa pelo menos duas maneiras diferentes de o jogo terminar:
- **Vitória baseada em pontos**: jogador atinge uma pontuação alvo ou recolhe itens específicos
- **Derrota baseada em vidas**: jogador perde todas as vidas ou pontos de saúde disponíveis
- **Conclusão de objetivos**: todos os inimigos derrotados, itens específicos recolhidos, ou metas alcançadas
- **Baseado em tempo**: o jogo termina após uma duração definida ou quando a contagem decrescente chega a zero
**Funcionalidade de Reinício**:
- **Limpar estado do jogo**: remover todos os objetos do jogo anteriores e reiniciar variáveis
- **Reinicializar sistemas**: começar de novo com novas estatísticas do jogador, inimigos e objetivos
- **Controlo intuitivo**: fornecer instruções claras para reiniciar o jogo
**Feedback ao Jogador**:
- **Mensagens de vitória**: celebrar conquistas do jogador com feedback positivo
- **Mensagens de derrota**: fornecer mensagens encorajadoras que motivem a nova tentativa
- **Indicadores de progresso**: mostrar pontuação atual, vidas ou estado do objetivo
### Ideias e Inspiração para o Jogo
Escolhe um destes conceitos de jogo ou cria o teu próprio:
#### 1. Jogo de Aventura em Console
Cria uma aventura baseada em texto com mecânicas de combate:
```
Hero> Strikes with broadsword - orc takes 3p damage
Orc> Hits with club - hero takes 2p damage
Hero> Kicks - orc takes 1p damage
Game> Orc is defeated - Hero collects 2 coins
Game> ****No more monsters, you have conquered the evil fortress****
```
**Características chave a implementar:**
- **Combate por turnos** com diferentes opções de ataque
- **Pontos de saúde** para jogador e inimigos
- **Sistema de inventário** para recolher moedas ou itens
- **Múltiplos tipos de inimigos** com dificuldades variadas
- **Condição de vitória** quando todos os inimigos forem derrotados
#### 2. Jogo de Colecção
- **Objetivo**: Recolher itens específicos enquanto evitam obstáculos
- **Condições de fim**: Alcançar a contagem-alvo de itens ou perder todas as vidas
- **Progressão**: Os itens tornam-se mais difíceis de alcançar conforme o jogo avança
#### 3. Jogo de Puzzle
- **Objetivo**: Resolver puzzles cada vez mais difíceis
- **Condições de fim**: Completar todos os níveis ou ficar sem movimentos/tempo
- **Reinício**: Recomeçar no primeiro nível com progresso apagado
#### 4. Jogo de Defesa
- **Objetivo**: Proteger a tua base de ondas de inimigos
- **Condições de fim**: Sobreviver a todas as ondas (vitória) ou base destruída (derrota)
- **Progressão**: Ondas de inimigos aumentam em dificuldade e número
## Diretrizes de Implementação
### Começar
1. **Planeia o design do teu jogo**:
- Esboça o ciclo básico de jogabilidade
- Define claramente as tuas condições de fim de jogo
- Identifica que dados precisam de ser reiniciados no reinício
2. **Configura a estrutura do teu projeto**:
```
my-game/
├── index.html
├── style.css
├── game.js
└── README.md
```
3. **Cria o ciclo principal do jogo**:
- Inicializa o estado do jogo
- Trata a entrada do utilizador
- Atualiza a lógica do jogo
- Verifica as condições de fim
- Renderiza o estado atual
### Requisitos Técnicos
**Usa JavaScript Moderno**:
- Aplica `const` e `let` para declarações de variáveis
- Usa funções arrow onde apropriado
- Implementa funcionalidades ES6+ como template literals e destructuring
**Arquitetura Orientada a Eventos**:
- Cria manipuladores de evento para interações do utilizador
- Implementa alterações do estado do jogo através de eventos
- Usa event listeners para funcionalidade de reinício
**Boas Práticas de Código Limpo**:
- Escreve funções com responsabilidades únicas
- Usa nomes descritivos para variáveis e funções
- Adiciona comentários que expliquem lógica e regras do jogo
- Organiza o código em secções lógicas
## Requisitos de Submissão
### Entregáveis
1. **Ficheiros completos do jogo**: Todos os ficheiros HTML, CSS e JavaScript necessários para executar o teu jogo
2. **README.md**: Documentação explicando:
- Como jogar o teu jogo
- Quais condições de fim implementaste
- Instruções para reiniciar
- Qualquer funcionalidade ou mecânica especial
3. **Comentários no código**: Explicações claras da lógica e algoritmos do jogo
### Lista de Verificação para Testes
Antes de submeter, verifica que o teu jogo:
- [ ] **Corre sem erros** na consola do browser
- [ ] **Implementa múltiplas condições de fim** conforme especificado
- [ ] **Reinicia corretamente** com estado limpo
- [ ] **Fornece feedback claro** aos jogadores sobre o estado do jogo
- [ ] **Usa sintaxe e boas práticas de JavaScript moderno**
- [ ] **Inclui documentação abrangente** no README.md
## Rubrica de Avaliação
| Critério | Exemplar (4) | Proficiente (3) | Em Desenvolvimento (2) | Iniciante (1) |
|----------|---------------|-----------------|------------------------|---------------|
| **Funcionalidade do Jogo** | Jogo completo com múltiplas condições de fim, reinício fluido e experiência polida | Jogo completo com condições básicas de fim e reinício funcional | Jogo parcial com algumas condições de fim, reinício pode ter pequenos problemas | Jogo incompleto com funcionalidade limitada e erros significativos |
| **Qualidade do Código** | Código limpo, bem organizado, com boas práticas JS modernas, comentários abrangentes e excelente estrutura | Boa organização do código com sintaxe moderna, comentários adequados e estrutura clara | Organização básica do código com algumas práticas modernas, comentários mínimos | Organização pobre do código, sintaxe desatualizada, falta de comentários e estrutura |
| **Experiência do Utilizador** | Jogabilidade intuitiva com instruções claras, feedback excelente e experiência envolvente de fim/reinício | Boa jogabilidade com instruções e feedback adequados, fim/reinício funcional | Jogabilidade básica com instruções mínimas, feedback limitado sobre estado do jogo | Jogabilidade confusa com instruções pouco claras e mau feedback ao utilizador |
| **Implementação Técnica** | Demonstra domínio de conceitos de desenvolvimento de jogos, manipulação de eventos e gestão de estado | Demonstra boa compreensão dos conceitos de jogo com boa implementação | Compreensão básica com implementação aceitável | Compreensão limitada com implementação pobre |
| **Documentação** | README completo com instruções claras, código bem documentado e testes completos | Boa documentação com instruções claras e comentários adequados no código | Documentação básica com instruções mínimas | Documentação pobre ou inexistente |
### Escala de Avaliação
- **Exemplar (16-20 pontos)**: Excede expectativas com funcionalidades criativas e implementação polida
- **Proficiente (12-15 pontos)**: Cumpre todos os requisitos com execução sólida
- **Em Desenvolvimento (8-11 pontos)**: Cumpre a maioria dos requisitos com pequenos problemas
- **Iniciante (4-7 pontos)**: Cumpre alguns requisitos mas necessita de melhorias significativas
## Recursos Adicionais para Aprendizagem
- [Guia de Desenvolvimento de Jogos MDN](https://developer.mozilla.org/en-US/docs/Games)
- [Tutoriais de Desenvolvimento de Jogos JavaScript](https://developer.mozilla.org/en-US/docs/Games/Tutorials)
- [Documentação da API Canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API)
- [Princípios de Design de Jogos](https://www.gamasutra.com/blogs/)
> 💡 **Dica Pro**: Começa simples e adiciona funcionalidades progressivamente. Um jogo simples bem polido é melhor do que um jogo complexo cheio de erros!
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**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 automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->