
Projeto Poker_M2_2025/1
A downloadable tool
Projeto Poker_M2_2025/1
Introdução
Neste momento da disciplina, da etapa da M2, o foco está no desenvolvimento prático de código em C# para o reconhecimento automático das mãos de poker. O objetivo principal permanece o mesmo, aplicar e sintetizar técnicas de representação e manipulação de dados em um projeto guiado que conecta diretamente teoria e prática.
A disciplina também se baseia na metodologia de aprendizagem baseada em projetos, que nos estimula a aprender resolvendo problemas reais. Agora, essa abordagem se materializa por meio da implementação dos algoritmos que reconhecem as diversas combinações possíveis em uma partida de Texas Hold’em por exemplo.
O tema central do projeto de reconhecimento de mãos de poker, ganha profundidade na M2. Já compreendemos as regras e estruturas envolvidas, e agora partimos para o desafio concreto de traduzir esse conhecimento em código funcional e eficiente ao invés de um pseudocódigo.
O problema que temos que resolver é como identificar corretamente as combinações de cartas em uma mão de poker, considerando as sete cartas disponíveis (cinco na mesa e duas do jogador) e garantindo que ao menos uma carta da combinação pertença ao jogador.
Para isso, estabelecemos alguns objetivos específicos: criar arquivos CSV para testes, desenvolver as dez classes responsáveis por reconhecer cada tipo de mão (como Royal, Flush, Full House, entre outras), implementar a lógica de reconhecimento no método find() de cada classe, e garantir que a estrutura de herança e os princípios do projeto base Poker_2025 sejam respeitados.
Esta etapa é essencial para nossa formação acadêmica em Design de Games, pois, além de reforçar os conteúdos teóricos de estruturas de dados e programação orientada a objetos, nos desafia a escrever código limpo, modular e documentar habilidades fundamentais para atuar de forma profissional em projetos de software, jogos etc.
Nosso trabalho segue uma sequência definida: análise das mãos, implementação das classes em C#, execução e validação dos algoritmos, e por fim, documentação seguindo os padrões indicados. Todo esse processo será conduzido em equipe, promovendo também o desenvolvimento das nossas habilidades colaborativas.
A avaliação das equipes nesta fase (Código M2) será baseada em dois critérios principais: corretude dos algoritmos e qualidade da documentação, com pesos respectivos de 6 e 4. A clareza dos comentários, a aderência ao padrão do projeto e a organização do código são aspectos fundamentais para alcançar um bom desempenho.
Ao concluir esta etapa, esperamos dominar a aplicação prática de estruturas como arrays, listas e enums, além de entender melhor como organizar um projeto em arquitetura MVC e aplicar boas práticas de desenvolvimento em C#.
Nos capítulos seguintes, este relatório irá detalhar a implementação de cada uma das dez mãos de poker, apresentando os algoritmos, exemplos de teste e a lógica por trás de cada decisão de código tomada ao longo do projeto
Desenvolvimento
Começamos o projeto usando o código base Poker_2025, que já tinha algumas classes prontas e organizadas no padrão MVC. A partir disso, nossa tarefa foi criar as 10 classes que identificam as mãos de poker, como Royal, Flush, Full House e outras.
Cada classe foi programada em C# dentro da pasta controller/hands
e usa o método find()
para verificar se aquela mão está presente nas cartas. Para testar se o código funcionava, usamos arquivos .csv
com exemplos positivos e negativos para cada mão.
Durante o desenvolvimento, usamos conceitos da disciplina como listas, arrays, enums e herança. Também usamos as classes prontas do projeto, como Card
, Load
, Show
e Suit
, para montar as mãos e mostrar os resultados.
O trabalho foi feito em equipe: alguns ficaram responsáveis por programar e outros pela documentação. Seguimos etapas bem definidas, entender a mão, programar, testar e documentar.
Esse projeto ajudou a colocar em prática o que aprendemos sobre estruturas de dados e programação orientada a objetos, de um jeito mais aplicado ao mundo dos jogos.
Códigos M2
Os códigos em C# foram desenvolvidos com base na estrutura do projeto Poker_2025, seguindo um padrão que facilita a identificação de cada mão de pôquer. Cada classe foi pensada para ser clara, objetiva e funcionar dentro da arquitetura do projeto.
Boa parte do código foi construída reutilizando trechos da estrutura já existente, adaptando-os conforme a lógica de cada combinação de cartas. Isso ajudou a manter um padrão e agilizar o desenvolvimento das 10 mãos.
A lógica principal se baseia no uso do histograma, que armazena os valores e naipes das cartas. A partir disso, o código verifica se há repetições ou sequências. Quando essas repetições seguem a regra de uma mão específica, o método find()
retorna verdadeiro, confirmando o reconhecimento.
Considerações Finais
Gianluca:
Para implementar o pseudocódigo no projeto em C#, enfrentamos diversas dificuldades que exigiram bastante planejamento. Em primeiro lugar, não tenho muita familiaridade com programação, o que já representou um desafio inicial. Além disso, alguns dos pseudocódigos apresentados estavam incorretos ou não atingiam de forma satisfatória os objetivos propostos pelo grupo.
Maria Clara:
Acabei ajudando mais com a parte da documentação do trabalho. No começo, precisei dar uma estudada nos conteúdos pra conseguir acompanhar melhor, porque alguns temas eram novos pra mim. Mas depois que me aprofundei um pouco, consegui entender bem a parte teórica da matéria e isso me ajudou bastante a fazer minha parte com mais segurança.
Vitor:
Durante o desenvolvimento deste trabalho, fiquei mais responsável pela parte da documentação dos conteúdos e um pouco só da programação, mesmo assim eu consegui entender como os conceitos teóricos de tipos de dados, estruturas e orientação a objetos são aplicados na prática. Dessa forma eu consegui reforçar meu entendimento da matéria.
Juan Pedro:
Com os novos desafios que surgiram no trabalho, comecei a ter dificuldade em entender completamente como fazê-lo. No entanto, com pesquisa e prática, consegui entender os fundamentos teóricos e implementá-los na prática com um pouco de programação e arquivos CSV.
Referências
Livros:
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:
Data Structures Tutorial. Site: [https://www.geeksforgeeks.org/data-structures/]. Acesso em 15 de Maio de 2025
Connect, code, and grow. Object-Oriented programming (C#). Site: [https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/tutorials/oop]. Acesso em 15 de Maio de 2025
C# Tutorial. Site: [https://www.tutorialspoint.com/csharp/index.htm]. Acesso em 15 de Maio de 2025
---------------------------------------------------------------------------------------------------
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
Leave a comment
Log in with itch.io to leave a comment.