A downloadable game

1. Introdução

O presente trabalho realizado na disciplina de Estrutura de Dados, ministrado no curso de Design de Jogos da Universidade do Vale do Itajaí (Univali), campus Florianópolis, visa explorar e aplicar conceitos fundamentais da disciplina de Estrutura de Dados, abordando questões cruciais como listas e pihas.  Este projeto integra conhecimentos adquiridos em diversas disciplinas, como Programação Orientada a Objetos, onde se aprendem técnicas de abstração, encapsulamento e polimorfismo, que fornecem uma base teórica necessária para a compreensão das estruturas de dados.

O desenvolvimento prático envolve a implementação de diferentes estruturas de dados, na linguagem de programação C# e desenvolvida no Visual Studio, analisando sua eficiência e aplicabilidade em uma simulação de um Jogo de Poker no CMD.

2. Desenvolvimento

A disciplina de Estrutura de Dados é central neste projeto, focando na organização, gerenciamento e armazenamento eficiente de dados. Conceitos como listas e pilhas são fundamentais, pois permitem o desenvolvimento de algoritmos mais eficientes e a otimização de recursos computacionais.

O desenvolvimento do projeto desenvolveu uma abordagem incremental e iterativa, estruturada nas seguintes etapas:

Primeiro, foi realizado o planejamento e a análise. Em seguida, implementamos as funcionalidades básicas, utilizando os princípios da programação orientada aos objetos. Após essa fase, foram criados testes automatizados para validar o funcionamento do jogo e garantir a conformidade com as regras do Poker. Finalmente, ajustes e melhorias foram feitos com base nos resultados obtidos a partir desses testes.

2.1 Conceito

O projeto foca no desenvolvimento de um jogo de pôquer Texas  Hold'em, onde cada jogador recebe duas cartas privadas e cinco cartas comunitárias são distribuídas na mesa. Os jogadores devem formar a melhor mão possível de cinco cartas, combinando suas cartas privadas com as comunitárias.

Mecânicas de jogo e jogabilidade

  • Jogadores e Cartas

- Cada jogador recebe 2 cartas

- 5 cartas são colocadas na mesa

  • Resultado final

- Após os jogadores receberem suas cartas e  já tendo informações específicas na mesa, o jogador com a melhor mão de 5 cartas é selecionado como ganhador.

Classificações das mãos do Poker

  1.  Royal Flush
  2.  Straight Flush
  3.  Four of a Kind
  4.  Full House
  5.  Flush
  6.  Straight
  7.  Three of a Kind
  8.  Two Pair
  9.  One Pair
  10.  High Card

2.2 Programação

Tendo sua base feita em conjunto como o professor, o código é dividido em várias classes (Figura 1), sendo as principais o "Program", "Card", "Histogram" e "Semantic". 

  
(figura 1) 

Outra parte essencial do código, são as classes Ranks, elas são responsáveis pela identificação das possíveis mãos do poker, podendo ver de exemplo a "FourofKind"(Figura 2), onde é dividida em três funções, sendo elas "Check", "CheckFourofKind" e "Find_owner" (Figura 2), na criação da classe, se encontra a construção das listas que será utilizada no decorrer do código (figura 2)

(Figura 2) 

A função "Check" (Figura 3) é a responsável por chamar as outras funções "CheckFourofKind" e "Find_owner" e para definir o que será exibido na conclusão do código, além de ser a função que será utilizada na classe Game.   

(Figura 3) 

A função "CheckFourofKind" (Figura 4) tem a responsabilidade de verificar dentro do histogram "ranks_histo", se possui quatro cartas dentro de uma posição, como por exemplo quatro "As" 

(Figura 4) 

A função "Find_owner" (Figura 5) tem a responsabilidade de verificar se ao menos um dos "As" está na mão de um jogador 

  (Figura 5) 

Tendo definido a base das classes "Ranks", a classe "Game" (Figura 6) tem a responsabilidade de chamar a classe "FourofKind" e as outras classes "Ranks", para poder fazer uma verificação sistemática das mãos possíveis do jogador, além de fazer a distribuição das cartas para cada jogador, dois no total (Figura 7). 


(Figura 6) 

  (Figura 7)  

2.3 Discussão dos Resultados

Os resultados inicialmente não ocorreram de forma esperada, havendo alguns erros como exibir cartas a mais ou a menos, também havendo resultados positivos como "Você venceu" quando na verdade não havia um retorno de vitória esperado, o resultado esperado deveria ser "Perdeu", e vice versa, também as vezes havendo erro de compatibilidade de uma maquina para outra (pessoal e outra da faculdade). Com ajuda do professor presente e discussões entre o grupo, foi possível ter o resultado que esperávamos, dando resposta do jogo como era o esperado. Em geral a equipe demonstrou desenvolvimento solido e certeiro em relação a exibição das cartas em seus devidos naipes e ordens, havendo poucos momentos de erro.

3. Conclusão

Concluísse que por meio deste projeto os envolvidos, além de terem a experiência e aprendizado para se criar um jogo de pôquer, também foi possível obter melhorias de soft skill e hard skill. No processo do projeto se teve algumas complicações com alguns códigos das cartas, mas também resolvidos pela equipe, também houve uma absorção para melhor aprendizado para a programação orientada a objetos, utilizando a linguagem C#, implementando e aprendendo mais sobre Herança, Polimorfismo, Encapsulamento e Abstração e aplica-los. Ao final do projeto se obteve o resultado esperado, dando assim a conclusão do jogo funcionando de forma correta como esperado.  

Referências

POKERSTAR. Mãos do Poker. Disponível em:  https://www.pokerstars.com/pt-BR/poker/games/rules/hand-rankings/. Acesso em 11 jun 2024.

POKERSTAR. Sobre Texas Hold'em. Disponível em: https://www.pokerstars.com/pt-BR/poker/games/texas-holdem/. Acesso em 11 jun 2024. 

MICROSOFT. Fundamentos de C#.  Disponível em:  https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/it.... Acesso em 11 jun 2024.

HENRIQUE. Programação Orientada a Objetos. Disponível em: https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264. Acesso em 11 jun 2024.

Ficha completa da equipe: 

Caio Ferreira da Silva - Atividades/Função - link

Karoline Dutra da Silva - Atividades/Função - link

João Pedro - Atividades/Função - link

Victor Fineto Silva - Atividades/Função - link

...

Marcelo Dornbusch Lopes - Orientador -  m4rc3lo


Universidade do Vale do Itajaí -  UNIVALI

César 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






StatusPrototype
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorsKarolineDutra, CaioSilvaa

Leave a comment

Log in with itch.io to leave a comment.