Projeto Individual - Descobrindo a palavra#
Data de Entrega: 18/04 (segunda-feira) até 21hrs
A entrega do projeto deverá ser feita via Blackboard
Introdução
#
Neste projeto individual, o seu objetivo é desenvolver um jogo de palavras chamado Descobrindo a palavra
, baseado no jogo em inglês wordle ou sua versão em português termo
. O objetivo do jogador é descobrir uma palavra em até
6
tentativas. A cada tentativa, o jogo apresenta dicas informando quais letras pertencem ou não pertencem a palavra. Além disso, para as letras que pertencem a palavra, o jogo indica se a letra está na posição correta ou não.
Regras Básicas#
Para facilitar a compreensão das regras, utilizamos imagens retiradas dos jogos originais. Mas neste projeto, iremos interagir com o jogador através do terminal de comando.
- Início do Jogo:
No começo do jogo, uma palavra válida composta por
5
letras deve ser selecionada pelo jogo (seleção deve ser aleatória). Esta palavra escolhida será a palavra que o jogador deverá descobrir. - Tentativas:
- O jogador possui 6 tentativas para descobrir a palavra.
- Para cada tentativa, o jogo deve verificar:
- tamanho da string: O jogo deve fazer a verificação das tentativas do jogador com relação ao tamanho das palavras. As tentativas do jogador devem ser palavras com tamanho
5
. - contém somente letras: As tentativas do jogador devem ser palavras compostas apenas por letras. Ou seja, strings que contenham números, caracteres especiais ou espaços em branco não serão aceitas pelo jogo. Além disso, o jogo não deve fazer diferenciação entre letras maiúsculas e minúsculas.
- tamanho da string: O jogo deve fazer a verificação das tentativas do jogador com relação ao tamanho das palavras. As tentativas do jogador devem ser palavras com tamanho
-
Feedback da tentativa: Para cada tentativa, o jogo deve apresentar algumas dicas para auxiliar o jogador. Cada letra da palavra que o jogador chutou pode ter um dos status a seguir:
Correto: Letra está presente na palavra e se encontra na posição correta;
Presente: Letra está presente na palavra, porém não se encontra na posição correta;
Ausente: Letra não está presente na palavra;
-
Ganhando a Rodada: Se o jogador acertar a palavra, ele ganha e o jogo deve informar em quantas tentativas o jogador acertou a palavra.
- Perdendo a Rodada: Se as tentativas do jogador se encerrarem, o jogador perde o jogo.
- Fim da Rodada: Caso a rodada se encerre, o jogo deve permitir reiniciar a rodada com uma nova palavra.
Regras Avançadas#
Sugestão 1
Só tente implementar as Regras Avançadas depois que o seu jogo estiver funcionando com as Regras Básicas.
-
Letras Repetidas
Existem cenários em que precisamos ficar atentos. Seguem alguns exemplos:
- Chutes que possuem letras repetidas e uma das letras está na posição correta. Neste exemplo, a palavra objetivo é CLOUD e a tentativa do jogador foi ALLOW. Note que, a primeira ocorrência da letra L está na posição correta, porém como a palavra objetivo contém somente uma letra L, então a segunda ocorrência da letra L deve ter o status ausente.
- Chutes que possuem letras repetidas e nenhuma das letras estão na posição correta. Neste exemplo, a palavra objetivo é ROADS e a tentativa do jogador foi FLURR. Note que a palavra objetivo possui apenas um R, desta forma, a primeira ocorrência da letra R terá o status presente e o segundo R terá o status ausente.
-
Feedback do teclado A cada tentativa, o jogo apresenta o alfabeto indicando quais letras já foram utilizadas e qual o seu status.
-
Palavras Válidas Ao implementar este item avançado, o jogo deve verificar se as tentativas do jogador são palavras válidas. Ou seja, palavras que existam no vocabulário.
Dica 2
Para te auxiliar nesta tarefa, você pode utilizar o material disponível em: https://www.ime.usp.br/~pf/dicios/br-utf8.txt
-
Palavras com acentos Jogo aceita palavras com acentos e não faz diferenciação dos acentos.
Exemplo: A palavra objetivo é FALAR e o jogador chutou FOGÃO. O jogo vai indicar que a letra A está na posição correta, pois o jogo não faz distinção das letras com acento e sem acento.
-
Resumo de Rodadas Ao final do jogo, é apresentado um resumo com a contagem das tentativas do jogador. Exemplo: Jogador jogou 5 rodadas: - A primeira rodada, o jogador acertou a palavra em 5 tentativas; - Na segunda rodada, acertou a palavra em 3 tentativas; - A terça e a quarta não conseguiu acertar; - A última rodada acertou em 6 tentativas; O jogo imprime o seguinte resumo:
Tentativas 1: 0% Tentativas 2: 0% Tentativas 3: 20% Tentativas 4: 0% Tentativas 5: 20% Tentativas 6: 20% Não acertou: 40%
Simulando o jogo#
Para te auxiliar no desenvolvimento deste jogo, segue um exemplo de como ficaria o jogo na versão para terminal de comando.
RUBRICA#
CONCEITO I#
- Não implementou nenhuma regra do jogo.
- O jogo não possui um loop principal onde é possível jogar rodadas consecutivas.
CONCEITO D#
- Foram implementadas somente algumas das regras do jogo.
- O jogo apresenta algum erro de execução que não possibilita testá-lo.
- O jogo apresenta comportamentos indesejados. Exemplo: não respeitar alguma escolha do jogador, atualizar as informações do jogo de forma incorreta, ou apresentar algum outro comportamento inesperado.
CONCEITO C#
- Implementou todas as regras do jogo.
- Jogo descreve em detalhes o que está acontecendo em cada rodada, sempre mantendo o jogador informado acerca das informações relacionadas às letras com status correto, presente e ausente.
- Nos momentos em que o jogo pede para o jogador inserir alguma informação, o jogo sempre deixa claro as opção do jogador e o que o jogador deve digitar.
- Ao término do jogo, o jogador tem a opção de reiniciar. Note que o passo de reiniciar deve ser feito sem parar a execução do código.
CONCEITO B#
- Atingiu o nível C e mais os itens listados abaixo.
- Utiliza bons nomes de variáveis e funções facilitando a legibilidade do código.
- Utiliza comentários para descrever alguns trechos de código.
- Implementou a Regra Avançada: Letras Repetidas.
- Implementou a Regra Avançada: Feedback do teclado.
CONCEITO A#
- Atingiu o nível B e mais os itens listados abaixo.
- Implementou a Regra Avançada: Palavras Válidas.
- Implementou a Regra Avançada: Palavras com acentos.
- Implementou a Regra Avançada: Resumo de Rodadas.
CONCEITO A+#
- Atingiu o nível A e mais os itens listados abaixo.
-
Implementou algum item avançado, tal como:
- Utilizou recursos extras (exemplo: ASCII Art) para aprimorar a interface do jogo.
- Implementar o modo de jogo DIFÍCIL. Neste modo de jogo, ao acertar uma letra na posição correta as tentativas subsequentes devem ser palavras com essas letras na posição correta.
Obs.: Note que o jogo deve possibilitar ao jogador escolher em qual modo deseja jogar.