O jogo desenvolvido para o terceiro projeto de Estruturas de Dados foi o jogo “Cara-Cracha”. Neste jogo, o jogador vive na pele a experiência de trabalhar como monitor em um restaurante universitário (RU). Sua função é verificar se uma pessoa é quem diz ser, olhando para seu rosto e sua suposta carteirinha de estudante.
Durante o jogo, o jogador deve administrar seu tempo e administrar as pessoas que ficam aparecendo na entrada do refeitório. O jogo tem inicio às 11:00 e termina às 14:00, reabrindo das 17:00 às 19:00 simulando o horário de funcionamento padrão do refeitório. Após o início do expediente, uma fila de pessoas começa se formar na frente da catraca. A missão do jogador é ser rápido, para evitar o acúmulo de pessoas, e ser observador, pois pessoas com carteirinhas erradas não podem entrar. Ao autorizar a entrada de alguém com carteirinha irregular, o jogador é penalizado. Ao alcançar o fim do expediente, com uma boa classificação (baseada na quantidade de pessoas corretas e incorretas), o jogador vence.
Uma pessoa é gerada aleatoriamente e possui diversas características que as identifica, além de ter sua própria carteirinha de estudante. Claramente, a carteirinha deve conter determinadas informações e características sobre a pessoa para que seja considerada válida. O jogador deve ser rápido e observar detalhes para evitar cometer erros durante seu dia de trabalho. O que torna o jogo realmente desafiador é o fato de uma pessoa estar de um jeito na foto da carteirinha, mas depois ter pintado o cabelo, comprado um óculos, deixado o bigode crescer, entre outras alterações cotidianas, o que o torna ligeiramente diferente da foto, mas ainda é ele! Então tenha muito cuidado!
Estruturas de Dados do jogo:
- Uma fila de personagens. Gerada no início do jogo e preenchida conforme novos personagens ingressam na fila;
- Uma fila de posições. Cada pessoa possui uma posição, a qual é definida a partir de uma lista ordenada de coordenadas que representam cada posição na fila.
- Uma lista de camadas para a construção do cenário;
Utilizamos a linguagem de programação C++ na versão 11 durante a codificação do jogo. Para compilá-lo, basta executar o comando make
na pasta ./src. O arquivo makefile está configurado para colocar o executável dentro da pasta ./bin, o qual pode ser lançado utilizando o comando make run
. Caso queira otimizar as etapas, ao executar o comando make full
você estará compilando e executando o jogo.
O projeto foi compilado e testado utilizando os seguintes SOs:
-
Windows 8.1 64-bit
-
Linux Xubuntu 64-bit
Para demais sistemas, fica a cargo do utilizador verificar a compatibilidade. Ocorrendo algum problema, comunique-nos criando uma nova questão. Caso obtenha sucesso na utilização em demais sistemas, sinta-se à vontade para colaborar com a presente documentação, incrementando-o à lista anterior.
O jogo foi desenvolvido seguindo as configurações do tipo abstrato de dado (TAD) Fila circular, com encadeamento duplo e com nó header. Tem-se então que cada elemento é armazenado em um nó com três atributos, sendo eles:
- Value: armazena o elemento em si;
- Next: ponteiro que define o nó do próximo elemento;
- Previous: ponteiro que define o nó do elemento anterior.
Figura 1: Fila vazia. Nó header, com os campos value, previous e next.
Figura 2: Fila com 3 elementos, nó header e encadeamento duplo. Na figura acima C é o último elemento.
Figura 3: Tela inicial do jogo
Figura 4: Tela com o jogo pausado
Figura 5: Tela do jogo durante uma partida
Figura 6: Tela final 0 do jogo
Figura 7: Tela final 1 do jogo
Figura 8: Tela final 2 do jogo
- Alisson Nunes - Lógica do jogo e programação.
- Gabriel Alves - Estrutura de dados.
- Matheus Bortoleto - Detalhes do jogo.
- Rafael Sales - Documentação.
O código a seguir foi criado para propósitos educacionais e seu reuso é aberto a qualquer um que o queira utilizar, com permissões de cópia, criação, distribuição e remoção de partes ou totalidade dele, desde que se deem os devidos créditos aos autores. Para mais detalhes, acesse o documento completo.