GithubHelp home page GithubHelp logo

mailafap / upsk-py-002-guess-the-number Goto Github PK

View Code? Open in Web Editor NEW

This project forked from laboratoria/upsk-py-002-guess-the-number

0.0 0.0 0.0 122 KB

_Guess the number_ é um jogo interativo que ocorre no terminal, onde o jogador e o computador se revezam tentando adivinhar um número aleatório entre 1 e 100. Devem levar em consideração a tentativa anterior, se foi "muito alta" ou "muito baixa".

Python 100.00%

upsk-py-002-guess-the-number's Introduction

Python 🐍

1. O Jogo

_Guess the number_ é um jogo interativo que ocorre no terminal, onde o jogador
e o computador se revezam tentando adivinhar um número aleatório entre 1 e 100.
Eles devem levar em consideração a tentativa anterior, se foi "muito alta" ou
"muito baixa".

1.1 Como iniciar o jogo?

  • Abra o código no seu terminal e rode o seguinte código: Código para rodar o jogo no terminal

1.2 Simulação do jogo:

  • Mensagem de boas-vendas . Digite seu nome para o jogo saber quem está jogando , e chamá-lo pelo nome. Imagem do retorno no terminal para boas-vindas e digitar o seu nome

  • O terminal iniciará o jogo solicitando um palpite, e mostrará uma mensagem para indicar se o palpite foi maior, menor ou igual ao número sorteado. Imagem do retorno no terminal solicitando um palpite do jogador e indicar logo após se o palpite foi correto ou não

  • Caso não seja o número correto, será a vez do jogador computador palpitar. O mesmo ocorre com a mensagem retornada. Imagem do retorno no terminal indicando o palpite do computador

  • Para fazer o palpite, é necessário colocar um número entre 1 e 100. Caso contrário, aparecerá uma mensagem de erro e o jogo só continuará assim que a condição for preenchida.
    Imagem do retorno no terminal para um erro, caso o jogador palpite algo fora do escopo entre 1 e 100

  • Caso o palpite seja correto, o terminal retorna com uma frase de parabéns e mostra todos os palpites que o vencedor fez durante o jogo. Imagem do retorno no terminal de um palpite correto

  • Existe a opção de jogar novamente ou não. Para iniciar um novo jogo, tecle "s", caso contrário, tecle "n". Imagem do retorno no terminal para a escolha de jogar novamente ou terminar o jogo

  • O terminal retornará uma mensagem de erro caso o jogador tecle qualquer outro caractere direfente de "s" ou "n", até que a condição seja alcançada. Imagem do retorno no terminal com erro ao teclar algo que seja diferente de "s" ou "n"

2. Considerações Gerais

  • Jogo implementado em Python. A única dependência externa que foi utilizadas é o pytest para testes unitários.
  • O jogo será realizado no terminal. Os testes podem ser executados no terminal ou em seu IDE (VSCode é mais do que adequado).
  • Será utilizado um número aleatório entre 1 e 100 como número secreto.
  • O jogador e o computador se revezarão para adivinhar o número.
  • Após cada turno, serão mostradas informações sobre a suposição feita.
  • O jogo terminará quando o número for adivinhado. Será mostrada uma lista de todas as tentativas do jogador vencedor.

3. Considerações Técnicas

O jogo será realizado no terminal usando Python. A lógica do jogo é baseada em estruturas de controle, incluindo loops, condicionais e coleções. Utilizei uma funcionalidade da biblioteca de utilidades do Python para a geração de números aleatórios. Foi realizado testes unitários para suas classes e métodos utilizando PyTest e simulação de geração de números aleatórios com unittest.mock.

4. Futuras implementações e melhorias:

4.1 Criar uma "inteligência" para jogar contra o computador (Edição Hacker)

Depois de ter implementado o jogo básico e feito algumas melhorias, você pode levar as coisas para o próximo nível criando uma "inteligência" para jogar contra o computador. Esta "inteligência" poderia ser simplesmente outra implementação do jogo que usa uma estratégia diferente, ou poderia ser um algoritmo de aprendizado de máquina que melhora a cada jogo que joga.

  1. Implemente uma nova versão do jogo que usa uma estratégia diferente. Por exemplo, em vez de adivinhar aleatoriamente, esta versão poderia tentar adivinhar o número mais provável com base nas suposições anteriores.

  2. Teste sua nova "inteligência" jogando contra o computador. Você pode vencer o computador com sua nova estratégia?

  3. Se você se sentir ambicioso, você pode tentar implementar um algoritmo de aprendizado de máquina. Este algoritmo poderia aprender de cada jogo que joga, melhorando suas suposições a cada jogo. Você poderia usar uma biblioteca de aprendizado de máquina como scikit-learn para fazer isso.

  4. Certifique-se de adicionar testes unitários para sua nova "inteligência". Você também pode querer adicionar algumas métricas para rastrear como seu algoritmo melhora a cada jogo que joga.

Referências

4.2 Extensão: Versão Orientada a Objetos (OOP)

Uma vez que tenhas implementado e aprimorado a versão base do jogo, pode ser interessante considerar a possibilidade de reescrevê-lo utilizando o paradigma da Programação Orientada a Objetos (OOP). Essa seria uma extensão (e não um requisito) que te permitiria familiarizar-se com os objetivos de aprendizado da programação orientada a objetos. Talvez seja útil se os teus próximos projetos em Python envolverem codificação com frameworks que utilizam esse paradigma. Por exemplo, algumas ferramentas como os ORM (Mapeadores Objeto-Relacional) encontrados no mundo do Python são projetados para funcionar com programação orientada a objetos.

  1. Crie uma classe Game que represente uma instância do jogo. Esta classe pode ter métodos como start, play_turn, check_guess, e end_game.

  2. Crie uma classe Player que represente um jogador. Esta classe pode ter atributos como name e guesses, e métodos como make_guess.

  3. Crie uma subclasse ComputerPlayer que herde da classe Player. Esta classe pode sobrescrever o método make_guess para implementar a lógica de adivinhação do computador.

  4. Na classe Game, use instâncias das classes Player e ComputerPlayer para representar o jogador e o computador.

  5. Adicione testes unitários para suas classes e métodos. Python tem um módulo incorporado chamado unittest que você pode usar para isso.

Referências

upsk-py-002-guess-the-number's People

Contributors

mailafap avatar unjust avatar icarito avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.