M3 Estrutura de Dados (Poker)
A downloadable project for Windows
1. Introdução
O pôquer, originado de jogos europeus como "poque" e "pochen", evoluiu ao longo dos séculos, ganhando popularidade nos Estados Unidos a partir do século XVIII, se expandindo durante a Guerra Civil Americana e se consolidando com a criação do Texas Hold'em no século XX. A partir disso, em 2003, houve um grande "boom" impulsionado pela vitória de Chris Moneymaker na World Series of Poker (WSOP), o qual faturou 2,5 milhões de dólares, ocasionando na popularização do pôquer online (GE, 2023). Com isso, nota-se que a utilização da programação para a criação desse jogo é fundamental.
O Visual Studio, lançado pela Microsoft em 1997, consolidou diversas ferramentas de desenvolvimento em uma suíte integrada. Ao longo dos anos, evoluiu para suportar uma ampla gama de linguagens de programação e plataformas. Com o passar do tempo, o Visual Studio tornou-se uma peça fundamental para os desenvolvedores, oferecendo recursos avançados para desenvolvimento de software. Dentro disso, há o C# (C Sharp), lançado pela Microsoft em 2000 como parte do .NET Framework, é uma linguagem de programação moderna e orientada a objetos, ao qual foi projetada para facilitar o uso e integração ao ecossistema .NET (Microsoft, 2024). A partir disso, ao longo dos anos, passou por várias atualizações, introduzindo recursos para atender as necessidades dos desenvolvedores. Amplamente adotado, o C# é utilizado em uma variedades de aplicações, incluindo o o desenvolvimento de jogos (Microsoft, 2020).
Portanto, o trabalho consiste em criar um simulador de pôquer, capaz de validar as regras do jogo no estilo de Texas Hold'em. Tal projeto foi desenvolvido por seis estudantes do curso de Design de Jogos da Universidade do Vale do Itajaí (Univali), como parte da disciplina de Estrutura de Dados. O principal objetivo deste projeto foi aplicar com sucesso os conceitos e práticas aprendidos durante a disciplina, proporcionando uma experiência de desenvolvimento voltada a programação.
2. Desenvolvimento
A realização do projeto adotou uma abordagem incremental e iterativa, estruturada em 3 fases. Representado na figura 1.
Figura 1: Fluxograma das etapas do trabalho feito durante a matéria (Autores, 2024).
Inicialmente, foi realizada a etapa teórica, onde aprendemos os pilares da programação de orientada objetos e organização de dados. Em seguida, foram implementadas as funcionalidades básicas, com base nos princípios do desenvolvidos anteriormente. Uma vez concluído, foram criados testes automatizados para validar o comportamento do jogo e assegurar a precisão das regras de pôquer. Por fim, ajustes e melhorias foram efetuados com base no feedback obtido durante esses testes.
2.1 Conceito
O conceito do projeto é: Utilizar uma variação do estilo de jogos de baralho, o pôquer, no qual pode ser jogado em qualquer computador usando o Promt de Comando do próprio sistema operacional. O programa usa da variante de pôquer "Texas Hold'em". A partir disso, a jogabilidade pode ser descrita como: o jogador recebe duas cartas, enquanto cinco outras cartas são reveladas na mesa e então o programa faz uma avaliação para ver qual é o maior ranque possível nas mãos dos jogadores utilizando o sistema de ranque padrão do pôquer, após definindo o vencedor. Tal ordem de ranque, do maior para o menor, é representada por:
10 - Royal Straight Flush
09 - Straight Flush
08 - Four of a Kind
07 - Full House
06 - Flush
05 - Straight
04 - Three of a Kind
03 - Two Pair
02 - One Pair
01 - High Card
2.2 Programação
Fez-se a programação do nosso jogo de pôquer usando a linguagem C#, no programa Visual Studios. Com base no código entregue pelo professor na M2, foi adicionado as mão de Poker para o teste single e a definição do jogador, além das mãos prontas em .csv. Como mostrado na figura 2.
Figura 2: Programação das mãos de pôquer.
Para a M3, implementou-se o teste full junto com o "Game", onde pede-se ao jogador para escrever seu nome, no qual aparecerá no final. Representado na figura 3.
Figura 3: Programação para adicionar e mostrar o nome do jogador.
Sendo assim, no "Program", criou-se o player 1, o player 2 e a mesa com as cartas distribuídas de forma aleatória, tendo assim 5 cartas em comum na mesa e 2 diferentes para cada jogador. Como mostrado na figura 4 e 5.
Figura 4: Código sobre a distribuição das cartas para os players e mesa.
Figura 5: Código sobre as listas das mãos "temporárias".
Outras alterações no código, além das implementações acima, foi adicionado uma forma de identificar as cartas com números e naipes, informando quais cartas são da mesa e quais são do jogador para ajudar nos testes do jogo, mesmo não sendo algo fundamental, mas importante para a compreensão da funcionalidade do código. Representado na figura 6.
Figura 6: Código para demonstrar a separação das cartas.
A partir disso, criou-se uma classe "Game" com 2 histogramas, comparando as cartas da mesa com as de cada jogador, em seguida checando cada mão, definindo uma pontuação a partir da mão mais alta para a mão mais baixa, sendo a "High Card" a mão que retorna a pontuação 1.
Figura 7: Código definindo 2 players e separando os histogramas de cada um.
Figura 8: Código de pontuação para as mãos.
Após a criação da classe Game, ela é chamada no "Program" para ser efetuada, representado na figura 9. Em seguida, Fez-se a comparação da pontuação de cada jogador, definindo qual dos jogadores venceu o jogo, encerrando o programa, como mostrado na figura 10.
Figura 9: Código da classe "Game" em "program".
Figura 10: Código sobre os vencedores do programa.
2.3 Discussão dos Resultados
Após toda a criação do código, notou-se que o programa encontrou com sucesso a maioria das mãos de pôquer, como demonstrado nas figuras 12 e 13. Porém, em algumas mãos ele falhou em achar, como o Full-House e Straight Flush. Salientando que dentre as dez mãos, duas falharam, havendo poucos problemas na versão final do projeto.
Imagem 12: Full House foi encontrado.
Imagem 13: Three of a Kind foi encontrado.
Ao analisar os erros do projeto, observa-se que no resultado do "Full House", em alguns momentos, o programa confunde com o "Three of a Kind", mas o erro não ocorre sempre, demonstrando funcionar em alguns testes. Sendo assim, motivo do erro ainda é desconhecido até o momento da entrega final do projeto. Enquanto o Straight Flush, o programa diz que o encontrou mesmo se for apenas um Flush. O motivo desse erro ainda serão descobertos pelo grupo, mas sem solução definitiva no momento da entrega. Como representado nas figuras a seguir.
Imagem 11: Erro ao encontrar o Full-House.
Imagem 14: Erro ao encontrar o Straight Flush.
3. Conclusão
Levando em consideração a trajetória do pôquer, desde as suas raízes culturais até ao seu fenômeno cultural global, com a popularização do estilo "Texas Hold'em", nota-se que a criação de um projeto, para a matéria "Estrutura de dados", utilizando tal estilo como base e operando na ferramenta Visual Studio, com o foco em C#, tem um rendimento satisfatório. Porém, todo desenvolvimento por trás do jogo provou-se ser extremamente desgastante e difícil para os estudante. Apesar disso, o presente projeto apresentou um resultado bom, pois conseguiu desenvolver oito das dez mãos de pôquer com funcionalidade, apresentando erros somente no "Full House" e "Straight Flush". Portanto, observou-se que o projeto cumpriu quase todos os requisitos propostos e está próximo de ter a funcionalidade total.
Referências
https://ge.globo.com/outros-esportes/poker/noticia/2023/12/14/como-surgiu-o-poke...
Microsoft. (2020). What's New in C# 9.0. Retirada de "Microsoft Documentation".
Microsoft. (2024). The History of C#. Retirada de "Microsoft Documentation".
OPENAI. ChatGPT. 2024. Disponível em: https://chat.openai.com. Acesso em: 20/05/2024.
Ficha Completa da Equipe:
Adriel Luca Bustingorri - Atividades/Função - Itch.io
Caio Bonetti - Atividades/Função - Itch.io
Isabella Zanatta - Atividades/Função - Itch.io
Lucas Eduardo Mallmann Müller - Atividades/Função - Itch.io
Luiz Gustavo Pereira Martins - Atividades/Função - Itch.io
Marcos Vinícius Oliveira Ribeiro - Atividades/Função - Itch.io
...
Marcelo Dornbusch Lopes - Orientador - m4rc3lo
Universidade do Vale do Itajaí - UNIVALI
Cesar Albenes Zeferino | Diretor Escola Politécnica
Giorgio Gilwan | Coordenador do Curso de Design de Jogos
Rafael Kojiio | Coordenador Gamelab UNIVALI
----
Projeto desenvolvido como requisito parcial para obtenção de aprovação na disciplina: Estruturas de Dados - Professor - Marcelo Dornbusch Lopes
Status | In development |
Category | Other |
Platforms | Windows |
Rating | Rated 5.0 out of 5 stars (1 total ratings) |
Authors | Luiz Gustavo P. Martins, 93muller, Isa Zanatta, Yutuka, Salamesh, grayfrog |
Leave a comment
Log in with itch.io to leave a comment.