Enunciado do projecto de programação - Entrega Intermédia aqui.
Código exemplo para a interface gráfica disponível aqui - versão 14/03/2016.
Todos os projectos intermédios entregues devem compilar em Linux usando o seguinte comando:
gcc BlackJackGUI.c -g -I/usr/local/include -Wall -pedantic -std=c99 -L/usr/local/lib -lm -lSDL2 -lSDL2_ttf -lSDL2_image -o blackjack
Nota: o local dos ficheiros include e das bibliotecas poderá variar conforme a versão do Linux usada (fazer "sdl2-config --cflags --libs" para descobrir os locais).
Nota: o local dos ficheiros include e das bibliotecas poderá variar conforme a versão do Linux usada (fazer "sdl2-config --cflags --libs" para descobrir os locais).
-------------
Enunciado do projecto de programação - Entrega final aqui (actualizado em 27/05/2016).
Errata:
Secção 8.1, 1bullet, fase 2: Remoção de um jogador da mesa sempre que este fique sem dinheiro inserção de um jogador sempre que o utilizador o sinalizar (opção A)
Secção 2: (tecla da seta cima) e (tecla da seta baixo).
Todos os projectos intermédios entregues devem compilar em Linux usando o seguinte comando: gcc *.c -g -I/usr/local/include -Wall -pedantic -std=c99 -L/usr/local/lib -lm -lSDL2 -lSDL2_ttf -lSDL2_image -o blackjack
Critérios de avaliação:
Todos os projectos intermédios entregues devem compilar em Linux usando o seguinte comando: gcc *.c -g -I/usr/local/include -Wall -pedantic -std=c99 -L/usr/local/lib -lm -lSDL2 -lSDL2_ttf -lSDL2_image -o blackjack
Critérios de avaliação:
Fase 1: 12 valores (valor max.)
Fase 2: +8 valores (valor max.)
Bonus 1: +0.75 valores quando cada jogador possui uma pilha/fila de cartas (valor max.)
Bonus 2: +0.75 valores quando implementam correctamente a estratégia HI-LO. (valor max.)
Bonus 2: +0.75 valores quando implementam correctamente a estratégia HI-LO. (valor max.)
O Bonus 2 apenas pode ser recebido se tiverem as funcionalidades da fase 1,2 e Bonus 1, correctamente implementadas.
Existem ficheiros de configuração para testar o nosso programa ? Se sim, quais são ?
Como é que se pode efectuar o baralhar cartas numa lista ?
Quando é que pode ser escrito o ficheiro de estatísticas ?
O Surrender conta como uma vitória, uma derrota ou um empate ?
Derrota !
Frequently Asked Questions
Existem ficheiros de configuração para testar o nosso programa ? Se sim, quais são ?
Ficheiro 1, Ficheiro 2 e Ficheiro 3
No ficheiro de configuração, os valores em cada linha que identifica o jogador estão separados por um caracter. Qual é ?
Estão separados pelo caracter '-' com o valor de 45.
Neste caso, não é possível usar o sscanf para separar os vários valores. Que função posso usar então ?
No ficheiro de configuração, os valores em cada linha que identifica o jogador estão separados por um caracter. Qual é ?
Estão separados pelo caracter '-' com o valor de 45.
Neste caso, não é possível usar o sscanf para separar os vários valores. Que função posso usar então ?
Usa a função strtok, a documentação está disponível aqui: http://www.cplusplus.com/reference/cstring/strtok/
Quantas listas vão ser necessárias ?
Quantas listas vão ser necessárias ?
Uma lista para os jogadores, em que cada um jogador tem uma pilha(implementado em forma de lista) para as cartas. Também é necessário uma lista para o mega-baralho (cartas a distribuir) e uma pilha para as cartas da casa.
Posso usar uma fila/lista em vez de uma pilha para representar as cartas que a casa e os jogadores recebem ?
Posso usar uma fila/lista em vez de uma pilha para representar as cartas que a casa e os jogadores recebem ?
Sim !
Posso usar vectores e matrizes 2D criados de uma forma estática ?
Não !
Como é que se pode efectuar o baralhar cartas numa lista ?
O baralhar cartas deve ser realizado removendo cartas de uma lista e respeitando sempre o algoritmo de Fisher-Yates (método original).
Na estratégia delineada na Figura 1, quando um jogador EA receber dois Ases, qual é a acção que se deve fazer ?
Na estratégia delineada na Figura 1, quando um jogador EA receber dois Ases, qual é a acção que se deve fazer ?
Podem escolher uma ação apropriada, por exemplo sempre hit.
Quando é que pode ser escrito o ficheiro de estatísticas ?
Apenas quando o utilizador carregar no quit, após uma ronda acabar.
Como é que posso verificar se o meu programa libertou toda a memória alocada ?
Como é que posso verificar se o meu programa libertou toda a memória alocada ?
valgrind --leak-check=yes myprog arg1 arg2
O Surrender conta como uma vitória, uma derrota ou um empate ?
Derrota !
O que significa Ds, Dh e Rh ?
Dh => Double se permitido, caso contrário hit
Ds => Double se permitido, caso contrário stand
Rh => Surrender se permitido, caso contrário hit
Como é que o programa vai ser chamado ?
Por exemplo: ./blackjack ficheiro_config_jogo.txt ficheiro_config_EAs.txt