Soletra
Instruções
Instruções
O objetivo do exercício é criar um jogo parecido com o jogo Soletra do G1: https://g1.globo.com/jogos/soletra/
O jogo consiste em criar anagramas a partir de um conjunto inicial de letras. Uma das letras é escolhida como letra central e deve obrigatoriamente estar presente em todas as palavras formadas. Quanto mais palavras válidas forem formadas, maior a pontuação do jogador.
Requisitos
1. Leitura do arquivo de letras e palavras válidas
Para iniciar, o jogo deve ler um arquivo que irá conter as letras e palavras válidas, no formato descrito abaixo.
A primeira linha contém as letras do jogo, sendo a primeira letra a letra central.
A segunda linha contém apenas traços e pode ser ignorada.
As linhas seguintes contêm as palavras válidas no jogo.
Exemplo:
ndesaxr
---
nadada
desanexada
...
nada
serena
2. Tela do jogo
A "tela" do jogo deve exibir:
- as letras de forma "hexagonal", como está exibido abaixo,
- a pontuação atual do jogador,
- a quantidade que falta para completar todas as palavras,
- a última palavra formada e
- os comandos disponíveis.
Por exemplo, para as letras ndesaxr e tendo o usuário acertado a palavra "nada" por último, a tela poderia ser:
d
e s
n
a r
x
Pontuação: 10
Última palavra: nada
Palavras encontradas: 2/12
Comandos: [1 - sair] [2 - listar palavras]
3. Comandos
O jogo deve aceitar os seguintes comandos:
1 - sair: se o usuário digitar1(e apertarEnter) encerra o jogo.2 - listar palavras: se o usuário digitar2(e apertarEnter) exibe as palavras válidas do jogo de forma ordenada. Palavras não encontradas devem ficar escondidas.- Se o usuário digitar qualquer outra coisa (e apertar
Enter), o jogo deve verificar se a entrada corresponde a uma palavra da lista de palavras válidas.
4. Exibição da lista de palavras
A exibição da lista de palavras deve mostrar apenas as palavras que já foram encontradas pelo jogador.
Palavras não encontradas pelo jogador devem permanecer escondidas e só ser exibido a quantidade de letras que possuem.
A lista deve estar ordenada por 1) tamanho da palavra e 2) ordem alfabética.
Exiba em 3 colunas, se possível.
Exemplo:
Lista de palavras (aperte qualquer tecla para voltar)
(4 letras) nada (4 letras)
(4 letras) (5 letras) (5 letras)
(6 letras) (6 letras) serena
(6 letras) (6 letras) (7 letras)
(7 letras) (8 letras) (8 letras)
Lista de palavras (aperte qualquer tecla para voltar)
5. Verificação de palavras
O jogo deve verificar se a palavra digitada pelo usuário está presente na lista de palavras válidas.
Se estiver presente, uma pontuação é atribuída e somada à pontuação total do jogador.
Se não estiver presente, nenhuma pontuação é atribuída e o jogador deve ser informado o porquê da palavra não ser válida.
A palavra pode ser considerada inválida por diferentes motivos, cheque os motivos de invalidade nessa ordem:
- Palavra já encontrada.
- Tem menos de 4 letras.
- Não contém a letra central.
- Contém letras que não estão no conjunto inicial.
- Não está na lista de palavras válidas.
6. Pontuação do jogo
Caso a palavra digitada pelo usuário seja válida, a pontuação deve ser calculada e somada à pontuação total do jogador.
A pontuação de cada palavra depende de algumas coisas, que devem ser checadas nessa ordem:
- Palíndromos (palavras que são iguais de frente para trás): 20 pontos
- Pangramas (palavras que utilizam todas as letras do conjunto inicial): 30 pontos
- Pangramas perfeitos (palavras que utilizam todas as letras do conjunto inicial exatamente uma vez cada): 50 pontos
- Palavras com 4 letras: 4 pontos
- Palavras com 5 letras: 5 pontos
- Palavras com 6 letras: 6 pontos
- Palavras com 7 letras: 7 pontos
- Palavras com 8 letras: 8 pontos
- ...
- Palavras com 20 letras: 20 pontos
- ...
7. Fim do jogo
O jogo termina quando o usuário digita o comando para sair ou quando não há mais palavras válidas a serem encontradas.
Ao final do jogo, deve ser exibida a pontuação total do jogador e a lista completa de palavras válidas, incluindo as que não foram encontradas.
Exemplo:
Fim do jogo!
Pontuação total: 42
Palavras encontradas: 2/12
Lista completa de palavras:
(4 letras) nada (4 letras)
(5 letras) (5 letras) (6 letras)
(6 letras) (6 letras) serena
(7 letras) (8 letras) (8 letras)
Como limpar a tela?
Quando você rodar o jogo, a tela pode ficar cheia de informações anteriores, prejudicando a visualização.
Uma forma de resolver isso é limpar a tela antes de executar cada nova ação ou exibir novas informações no jogo.
Para limpar a tela no terminal, utilize a função os.system com o comando apropriado para o sistema operacional:
import os
def limpar_tela():
os.system('cls' if os.name == 'nt' else 'clear')
Regras para resolução
- Deve utilizar pelo menos 3 funções.
- Deve ordernar sem utilizar funções prontas de ordenação.
- Não pode utilizar import de módulos externos (além do
osusado para limpar a tela) - Deve ter pelo menos uma função recursiva.
- Não usar técnicas não vistas em aula.