• Python
  • Projetos
  • Projetos passados
  • Projeto Individual 2 2022-1

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.

Wordle

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.

  1. 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.
  2. 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.
  3. 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;
  4. Ganhando a Rodada: Se o jogador acertar a palavra, ele ganha e o jogo deve informar em quantas tentativas o jogador acertou a palavra.

  5. Perdendo a Rodada: Se as tentativas do jogador se encerrarem, o jogador perde o jogo.
  6. 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.

  1. 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.

    Exemplo ALLOW

    • 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.

    Exemplo FLURR

  2. Feedback do teclado A cada tentativa, o jogo apresenta o alfabeto indicando quais letras já foram utilizadas e qual o seu status.

    Dicas utilizando o alfabeto

  3. 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

  4. 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.

    Chute FOGÃO

  5. 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.

Exemplo do jogo para terminal.

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.

    Modo difícil

    Obs.: Note que o jogo deve possibilitar ao jogador escolher em qual modo deseja jogar.