sexta-feira, dezembro 22, 2006

Quem agüenta?

Não agüentei ficar sem programar. Decidi fazer um programa que pudesse rodar em um emulador. Estou usando o no$gba e rodou perfeito este programa (só tem que usar o arquivo gerado .ds.gba).

Pensei num video poker, algo que nunca programei.
Quem olhar o fonte vai notar algo sem otimização nenhuma, pois aqui o que eu queria era desenvolver a lógica. Não consultei nada sobre algoritmos de jogos de cartas, queria desenvolver eu mesmo. É claro, que em 1985, quando eu estava me aprofundando em programação Basic, eu li um algoritmo de como embaralhar cartas e nunca mais esqueci qual era a lógica (na época eu não usei o algoritmo então não sabia se a lógica realmente funcionava).

Embaralhando: a lógica é fazer um vetor com 52 posições, depois ir sorteando valores (rand) e preenchendo o vetor. A cada valor sorteado, percorrer toda a parte já preenchida do vetor para ver se esse valor já não foi sorteado, se foi sorteia outro valor e repete a verificação. Senão, insere esse valor e avança.

O jogo de video poker não é uma pessoa jogando contra a outra, é só um jogador e não existe inteligência artificial envolvida (pelo menos não nos jogos isentos). A lógica é receber a aposta do jogador e pagar um multiplicador pela aposta. Eu fiz a tabela de pontuação assim:
1 par = x1 (recebe de volta o que apostou);
2 pares = x2
trinca = x4
seqüência = x6
flush = x8
full house = x12
quadra = x16
straight flash = x20
royal straight flash = x32

O programa que eu fiz ainda não é o jogo. Ele embaralha e coloca as primeiras 5 cartas na tela, e mostra na outra tela o valor obtido. Se apertar A, ele embaralha de novo e mostra as 5 primeiras cartas com o valor novamente. Se apertar B, ele faz um ciclo de jogos programados, que eu fiz para testar se a minha lógica de análise do jogo para contagem dos pontos estava funcionando.

As cartas, inicialmente tinha desenhado num tamanho 40x56 pixels (acomodado em um sprite de 64x64 pixels). Ficou um lixo, esgotou a memória de vídeo e não conseguiu criar todos os sprites. Aí eu reduzi as imagens para 32x48. Daí o tamanho dos sprites passaram a 32x64. Deu justo para as 52 cartas. Não consegui criar nem o sprite do verso das cartas. Ainda bem que poker não usa coringa.

Link para o programa e o fonte no rapidshare

Nenhum comentário: