A downloadable tool

Projeto Poker_M1_2025/1

Introdução

Este trabalho teve como principal objetivo aprofundar a compreensão da equipe sobre o reconhecimento das mãos de pôquer, um aspecto essencial do projeto em desenvolvimento. Durante a atividade, foi possível analisar como essas combinações são formadas e os métodos mais eficientes para identificá-las. Essa experiência prática também contribuiu para fortalecer a base teórica da equipe, essencial para o progresso contínuo ao longo do curso.

Além do estudo das mãos de pôquer, o trabalho também abordou conceitos fundamentais da programação, como os tipos de dados. Tipos homogêneos, como arrays e listas de um único tipo, oferecem vantagens de desempenho e simplicidade na alocação de memória. Já os tipos heterogêneos, como tuplas, registros ou objetos, permitem armazenar informações variadas em uma única estrutura, sendo úteis para representar entidades mais complexas.

Por fim, os Tipos Abstratos de Dados (TADs) foram destacados como estruturas que priorizam a forma de manipulação dos dados, independentemente da implementação interna. Exemplos como pilhas, filas e listas encadeadas são fundamentais na construção de algoritmos e sistemas mais organizados, favorecendo a modularidade, a reutilização de código e a manutenção eficiente dos projetos.

Desenvolvimento

Nosso projeto tem como foco o reconhecimento de mãos de pôquer por meio da linguagem de programação. Para isso, são utilizadas estruturas de dados como listas e dicionários, que ajudam na organização e análise das cartas. O trabalho é voltado à identificação automática de mãos como par, trinca, sequência, entre outras, com o objetivo de aplicar conceitos teóricos em uma prática concreta, aproximando a estruturação de código com o raciocínio lógico necessário para resolver problemas reais.

Duas classes principais estruturam o funcionamento do programa: a classe Card, que representa uma carta de pôquer com seus respectivos atributos de valor e naipe; e a classe Histogram, que é responsável por organizar as cartas da mão recebida e contar as ocorrências de cada valor e de cada naipe. Essa contagem facilita a verificação de padrões e combinações, sendo uma base essencial para o reconhecimento das diferentes mãos possíveis no jogo de pôquer.

A classe Card é simples e objetiva, servindo como molde para a criação das cartas com seus valores e naipes definidos. Já a classe Histogram trabalha diretamente com dicionários para gerar histogramas de valor e de naipe, o que permite interpretar e manipular as cartas recebidas de forma mais eficaz. As funções contidas nessa classe tornam mais prática a análise de uma mão, já que o número de repetições de cada valor ou a quantidade de cartas de determinado naipe pode ser acessado rapidamente.

Com essas estruturas, é possível aplicar algoritmos que identificam padrões típicos das mãos de pôquer. O projeto propõe que essa base seja usada para a criação de métodos que, a partir das informações contidas nos histogramas, consigam classificar uma mão de forma precisa. Assim, o trabalho não apenas reforça os conhecimentos de programação orientada a objetos e uso de estruturas de dados, mas  também à resolução de problemas lógicos de forma eficiente e estruturada.

Pseudocódigos M1

O pseudocódigo foi elaborado para facilitar a etapa de codificação do programa, servindo como uma base que nos orienta na implementação do código responsável por identificar as mãos de pôquer.

Grande parte do pseudocódigo foi baseada na reutilização de códigos já existentes, adaptando-os para reconhecer diferentes tipos de mãos de pôquer.

O histograma armazena os números e verifica se há repetições de valores ou naipes. Se a quantidade de repetições corresponder ao que o código exige, a condição é considerada verdadeira — e esse processo se aplica a todas as 10 possíveis mãos de pôquer.

Considerações Finais

Gianluca: 

No começo, mexer com o histograma foi complicado, mas, ao analisar os pseudocódigos já fornecidos pelo professor, tornou-se possível adaptar o pensamento para esse tipo de código. Muito do trabalho foi baseado nos pseudocódigos existentes, o que facilitou bastante o entendimento sobre histogramas.

Maria Clara:

Por eu não possuir experiência alguma com programação e áreas afins, precisei fazer algumas pesquisas para ajudar no trabalho em um geral, principalmente por conta do tema (poker), já que eu não conhecia as regras muito menos como se joga.

Vitor:

Eu comecei não entendendo muito bem como prosseguir na parte dos pseudocódigos, mas após dar uma lida e conversar com os colegas do grupo consegui entender melhor o conteúdo e ajudar na escrita do pseudocódigo.

Juan Pedro: 

Entender o tema foi bastante complicado para mim, foi necessário ler vários textos e documentação para ter uma melhor ideia de como fazer o trabalho, eu não tenho muita experiência na área de programação mas vou aprendendo aos poucos.

Referências

Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford. Introduction to Algorithms [recurso eletrônico]. 4. ed. Cambridge: MIT Press, 2022. ISBN 978-0-262-04630-5. Disponível em: https://pt.wikipedia.org/wiki/Introdu%C3%A7%C3%A3o_aos_Algoritmos. Acesso em: 30 Mar. 2025.

Szwarcfiter, Jayme L.; Markenzon, Lilian. Estruturas de Dados e Seus Algoritmos [recurso eletrônico]. 3. ed. Rio de Janeiro: LTC, 2020. ISBN 978-85-216-2691-2.

Sites

Dados homogêneos e heterogêneos -  https://www.amandanascimento.com/post/dados-homogêneos-x-heterogêneos

Lista de mãos de poker -

https://pt.wikipedia.org/wiki/Lista_de_jogadas_do_pôquer

Tipos de dados abstratos -  https://docente.ifsc.edu.br/alexandre.perin/std/estruturadadosmaterial/TiposAbstratosDados.pdf

Como usar structs (espanhol) -   https://www.luisllamas.es/que-es-una-struct/#:~:text=Los%20STRUCT%20son%20estructuras%20de,los%20guisantes%20con%20el%20arroz).

O que é um histograma -  https://www.jmp.com/es/statistics-knowledge-portal/exploratory-data-analysis/histogram#:~:text=Un%20histograma%20muestra%20la%20forma,distribución%2C%20de%20una%20variable%20continua.

Vídeos

Estruturas de Dados 1 - #32 Tipo Abstrato de Dados (Definição) - https://youtu.be/06PJrmeG784

Equipe

Gianluca Daunis Zanetti - gianlucazt.itch.io

Juan Pedro Silveira Ayres - pedro-univali.itch.io

Maria Clara Pontel Volpato - claravolpato.itch.io

Vitor Battistella Luna -  vituluna.itch.io

----------------------------------------------------------------------------------------------------

Projeto desenvolvido como requisito parcial para obtenção de aprovação na disciplina:  Estruturas de Dados - professor m4rc3lo

O conteúdo aqui tem direito reservado e pode conter inconsistências 

conceituais. 

Universidade do Vale do Itajaí - UNIVALI 

Cesar Albenes Zeferino | Diretor Escola Politécnica  

Giorgio Gilwan | Coordenador do Curso: Design de Games

Rafael Kojiio | Coordenador Gamelab

Updated 9 days ago
Published 10 days ago
StatusPrototype
CategoryTool
Authorvituluna

Leave a comment

Log in with itch.io to leave a comment.