Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ~~~ BLACKJACK ™ (21) ~~~ Projeto para Linguagem de Programação;
- ~~~ 23-04-2013; últimas modificações: 02-05-2013; 03-05-2013;
- ~~~ Gabriel C. B. E PAULO LUDEWIG
- ~~~ Versão 50.0 : jogador pedindo mais cartas - OK;
- soma de pontos - OK;
- sistema de apostas pronto - OK;
- funções para melhor visualização - OK.
- Jogar mais uma rodada - PENDENTE
- FUNCIONANDOOOOOOOOOOO */
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- // declaração de funções
- //void imprime(int cartas);
- void imprime(int cartas, int *soma); // imprime cartas e soma os pontos do jogador
- void imprime_mesa(int cartas, int *totalmesa); // imprime cartas e soma os pontos da mesa (IA)
- // ascii : 3=copas / 4=ouros / 5=paus / 6=espadas
- // FUNÇÃO PRINCIPAL
- int main()
- { int cartas[8]; // Cartas que estão com o jogador
- int mesa[8]; // Cartas que estão com a mesa
- int pedemais=1; // Inicialização para perguntar se o jogador quer mais cartas
- int cond;
- int baralho[16];
- int i,j,k,l; // Para fazer o loop das cartas do jogador
- int a,b; // Para fazer o loop das cartas da mesa
- int quermais=1; // Se quer jogar mais uma rodada
- int z;
- int continua=1; // flag para continuar o programa , caso as cartas no baralho sejam todas diferentes
- //Declaração dos valores da aposta:
- float cinquenta=50, duzentosecinquenta=250, quinhentos=500, mil=1000;
- float aposta=0; // total da grana apostada
- float carteira=5000;
- // Inicializa gerador de números aleatórios;
- srand(time(NULL));
- //Declaração dos valores de pontos:
- int soma=0; // Soma dos pontos do jogador
- int totalmesa=0; // Soma dos pontos da mesa
- do{
- // Carregando vetor com 16 números aleatórios de 0 a 51;
- do{
- continua=0;
- for(k=0;k<16;k++)
- {
- baralho[k] = rand()%51+0; // Gera números aleatórios de 0 a 51, que serão atribuídos às cartas, futuramente;
- // printf("\nPosi%cao %d do vetor cartas:%d",135, i, baralho[i]); *mostra os numeros randomizados
- }
- for (k=0;k<16;k++)
- { for (l=0;l<16;l++)
- {
- if(k!=l)
- { if(baralho[k]==baralho[l])
- {continua=1;}
- }
- }
- }
- } while ( continua==1 );
- aposta=0;
- soma=0;
- totalmesa=0;
- quermais=1;
- pedemais=1;
- system("cls");
- // Começa o BLACKJACK => Baralho já está preparado!
- printf("\n\t\t\tBEM VINDO AO BLACKJACK!!!");
- sleep(500); // delay de 1s
- do
- {
- printf("\n\n\n\n\tVoc%c possui $%10.2f . Quanto deseja apostar ?\n\n1 - $%5.2f\n2 - $%5.2f\n3 - $%5.2f\n4 - $%5.2f\n", 136, carteira, cinquenta, duzentosecinquenta, quinhentos, mil);
- scanf("%d", &cond);
- }while(cond>4 || cond<1 );
- switch(cond)
- {
- case 1:
- aposta=aposta+cinquenta;
- break;
- case 2:
- aposta=aposta+duzentosecinquenta;
- break;
- case 3:
- aposta=aposta+quinhentos;
- break;
- case 4:
- aposta=aposta+mil;
- break;
- }
- carteira=carteira-aposta;
- // Passa as cartas do baralho para a mão e para a mesa
- for (i=0;i<8;i++)
- { cartas[i]=baralho[i];
- /*printf("Baralho:%d\nCarta:%d\n", baralho[i], cartas[i]);*/ }
- for (i=0;i<8;i++)
- { mesa[i]=baralho[i+8];
- /*printf("Baralho:%d\nMesa:%d\n", baralho[i], mesa[i]); */}
- // Mostrar as cartas do jogador e da mesa no começo, junto com a aposta
- system("cls");
- printf("\n Aposta : %5.2f", aposta);
- printf("\n\n\t\t\tSuas cartas iniciais:");
- for (i=0;i<2;i++)
- {sleep(300);
- imprime(cartas[i], &soma); // Chama função de imprimir cartas e somar pontos do jogador
- }
- printf("\nTotal: %d", soma);
- printf("\n\n\t\t\tCartas da mesa:");
- for (a=0;a<1;a++)
- {sleep(300);
- imprime_mesa(mesa[a], &totalmesa); // Chama função de imprimir cartas e somar pontos da mesa
- }
- printf("\nTotal: %d", totalmesa);
- sleep(1000);
- i=2;
- do{
- do{
- printf("\n\n\t\tDeseja mais uma carta?\n1 - Sim, por favor\n2 - Nao, obrigado\n");
- scanf("%d", &cond);
- } while (cond<1 || cond>2);
- if ( cond==1 ) // Caso queira mais uma carta
- { soma=0;
- totalmesa=0;
- i++;
- system("cls");
- printf("\n Aposta : %5.2f", aposta);
- printf("\n\n\t\t\tSuas cartas :");
- for(j=0;j<i;j++)
- {
- imprime(cartas[j], &soma); // Chama função de imprimir cartas e somar pontos
- }
- printf("\nTotal: %d", soma);
- printf("\n\n\t\t\tCartas da mesa:");
- for (a=0;a<1;a++)
- {//sleep(300);
- imprime_mesa(mesa[a], &totalmesa); // Chama função de imprimir cartas e somar pontos da mesa
- }
- printf("\nTotal: %d", totalmesa);
- if(soma>21)
- { //system("cls");
- //printf("\nTotal: %d", soma);
- //printf("\n\n\tVoc%c perdeu!", 136);
- pedemais=0;
- //carteira=carteira-aposta;
- }
- if(soma<=21)
- {
- //printf("\nTotal: %d", soma);
- pedemais=1;
- }
- }
- if(cond==2)
- { system("cls");
- //printf("\nTotal= %d", soma);
- pedemais=0;
- /*printf("\nVoc%c ainda tem $%10.2f para apostar! Deseja jogar mais uma rodada? (s/n)", 136, carteira);
- scanf("%c", &quermais);*/
- }
- } while(pedemais==1 );
- // Jogador não quer mais cartas, então a mesa começa a pegar as cartas dela
- b=0;
- do { totalmesa=0;
- soma=0;
- b++;
- system("cls");
- printf("\n Aposta : %5.2f", aposta);
- printf("\n\n\t\t\tSuas cartas :");
- for(j=0;j<i;j++)
- {
- imprime(cartas[j], &soma); // Chama função de imprimir cartas e somar pontos
- }
- printf("\nTotal: %d", soma);
- printf("\n\n\t\t\tCartas da mesa:");
- sleep(300);
- for (a=0;a<b;a++)
- {//sleep(300);
- imprime_mesa(mesa[a], &totalmesa); // Chama função de imprimir cartas e somar pontos da mesa
- }
- printf("\nTotal: %d", totalmesa);
- } while (totalmesa<17 && soma<22);
- // CONDIÇÕES DE GANHO OU PERDA DE RODADA CONFORME COMPARAÇÕES ENTRE PONTOS DO JOGADOR E DA MESA
- if (carteira==0)
- { printf("Voc%c est%c sem dinheiro!!!", 136, 160);
- }
- else{
- if ((totalmesa>21 || totalmesa<soma) && soma<22)
- {printf("\n\n\tVoc%c ganhou!!!", 136);
- carteira=carteira+(2*aposta);
- do{
- printf("\n\n\tVoc%c ainda t%cm $%10.2f para apostar! Deseja jogar mais uma rodada? \n(1-Sim/2-N%co)", 136, 136, carteira, 131);
- scanf("%d", &quermais);
- } while(quermais>2 || quermais<1);
- }
- if (totalmesa==soma && soma<22)
- {printf("\n\n\tEMPATE!");
- carteira=carteira+aposta;
- do{
- printf("\n\n\tVoc%c ainda t%cm $%10.2f para apostar! Deseja jogar mais uma rodada? \n(1-Sim/2-N%co)", 136, 136, carteira, 131);
- scanf("%d", &quermais);
- } while(quermais>2 || quermais<1);
- }
- if((totalmesa>soma && soma<22) && totalmesa<22)
- { printf("\n\n\tVoc%c perdeu!", 136);
- do{
- printf("\n\n\tVoc%c ainda t%cm $%10.2f para apostar! Deseja jogar mais uma rodada? \n(1-Sim/2-N%co)", 136, 136, carteira, 131);
- scanf("%d", &quermais);
- } while(quermais>2 || quermais<1);
- }
- if(soma>21)
- { printf("\n\n\tVoc%c perdeu -> estourou 21!", 136);
- do{
- printf("\n\n\tVoc%c ainda t%cm $%10.2f para apostar! Deseja jogar mais uma rodada? \n(1-Sim/2-N%co)", 136, 136, carteira, 131);
- scanf("%d", &quermais);
- } while(quermais>2 || quermais<1);
- }
- }
- } while (quermais==1);
- // printf("\nNAIPES: %c %c %c %c", 3, 4, 5, 6); // Teste de naipes
- // Acaba o jogo se não quiser jogar mais
- printf("\n");
- system("pause");
- return (0);
- }
- void imprime(int cartas, int *soma)
- { switch(cartas)
- {
- case 0:
- printf("\nA de %c", 5);
- *soma=*soma+1;
- break;
- case 1:
- printf("\n2 de %c", 5);
- *soma=*soma+2;
- break;
- case 2:
- printf("\n3 de %c", 5);
- *soma=*soma+3;
- break;
- case 3:
- printf("\n4 de %c", 5);
- *soma=*soma+4;
- break;
- case 4:
- printf("\n5 de %c", 5);
- *soma=*soma+5;
- break;
- case 5:
- printf("\n6 de %c", 5);
- *soma=*soma+6;
- break;
- case 6:
- printf("\n7 de %c", 5);
- *soma=*soma+7;
- break;
- case 7:
- printf("\n8 de %c", 5);
- *soma=*soma+8;
- break;
- case 8:
- printf("\n9 de %c", 5);
- *soma=*soma+9;
- break;
- case 9:
- printf("\n10 de %c", 5);
- *soma=*soma+10;
- break;
- case 10:
- printf("\nJ de %c", 5);
- *soma=*soma+10;
- break;
- case 11:
- printf("\nQ de %c", 5);
- *soma=*soma+10;
- break;
- case 12:
- printf("\nK de %c", 5);
- *soma=*soma+10;
- break;
- case 13:
- printf("\nA de %c", 3);
- *soma=*soma+1;
- break;
- case 14:
- printf("\n2 de %c", 3);
- *soma=*soma+2;
- break;
- case 15:
- printf("\n3 de %c", 3);
- *soma=*soma+3;
- break;
- case 16:
- printf("\n4 de %c", 3);
- *soma=*soma+4;
- break;
- case 17:
- printf("\n5 de %c", 3);
- *soma=*soma+5;
- break;
- case 18:
- printf("\n6 de %c", 3);
- *soma=*soma+6;
- break;
- case 19:
- printf("\n7 de %c", 3);
- *soma=*soma+7;
- break;
- case 20:
- printf("\n8 de %c", 3);
- *soma=*soma+8;
- break;
- case 21:
- printf("\n9 de %c", 3);
- *soma=*soma+9;
- break;
- case 22:
- printf("\n10 de %c", 3);
- *soma=*soma+10;
- break;
- case 23:
- printf("\nJ de %c", 3);
- *soma=*soma+10;
- break;
- case 24:
- printf("\nQ de %c", 3);
- *soma=*soma+10;
- break;
- case 25:
- printf("\nK de %c", 3);
- *soma=*soma+10;
- break;
- case 26:
- printf("\nA de %c", 6);
- *soma=*soma+1;
- break;
- case 27:
- printf("\n2 de %c", 6);
- *soma=*soma+2;
- break;
- case 28:
- printf("\n3 de %c", 6);
- *soma=*soma+3;
- break;
- case 29:
- printf("\n4 de %c", 6);
- *soma=*soma+4;
- break;
- case 30:
- printf("\n5 de %c", 6);
- *soma=*soma+5;
- break;
- case 31:
- printf("\n6 de %c", 6);
- *soma=*soma+6;
- break;
- case 32:
- printf("\n7 de %c", 6);
- *soma=*soma+7;
- break;
- case 33:
- printf("\n8 de %c", 6);
- *soma=*soma+8;
- break;
- case 34:
- printf("\n9 de %c", 6);
- *soma=*soma+9;
- break;
- case 35:
- printf("\n10 de %c", 6);
- *soma=*soma+10;
- break;
- case 36:
- printf("\nJ de %c", 6);
- *soma=*soma+10;
- break;
- case 37:
- printf("\nQ de %c", 6);
- *soma=*soma+10;
- break;
- case 38:
- printf("\nK de %c", 6);
- *soma=*soma+10;
- break;
- case 39:
- printf("\nA de %c", 4);
- *soma=*soma+1;
- break;
- case 40:
- printf("\n2 de %c", 4);
- *soma=*soma+2;
- break;
- case 41:
- printf("\n3 de %c", 4);
- *soma=*soma+3;
- break;
- case 42:
- printf("\n4 de %c", 4);
- *soma=*soma+4;
- break;
- case 43:
- printf("\n5 de %c", 4);
- *soma=*soma+5;
- break;
- case 44:
- printf("\n6 de %c", 4);
- *soma=*soma+6;
- break;
- case 45:
- printf("\n7 de %c", 4);
- *soma=*soma+7;
- break;
- case 46:
- printf("\n8 de %c", 4);
- *soma=*soma+8;
- break;
- case 47:
- printf("\n9 de %c", 4);
- *soma=*soma+9;
- break;
- case 48:
- printf("\n10 de %c", 4);
- *soma=*soma+10;
- break;
- case 49:
- printf("\nJ de %c", 4);
- *soma=*soma+10;
- break;
- case 50:
- printf("\nQ de %c", 4);
- *soma=*soma+10;
- break;
- case 51:
- printf("\nK de %c", 4);
- *soma=*soma+10;
- break;
- }
- }
- // FUNÇÂO IMPRIME_MESA => IMPRIME CARTAS E SOMA OS PONTOS DA MESA
- void imprime_mesa(int mesa, int *totalmesa)
- { switch(mesa)
- {
- case 0:
- printf("\nA de %c", 5);
- *totalmesa=*totalmesa+1;
- break;
- case 1:
- printf("\n2 de %c", 5);
- *totalmesa=*totalmesa+2;
- break;
- case 2:
- printf("\n3 de %c", 5);
- *totalmesa=*totalmesa+3;
- break;
- case 3:
- printf("\n4 de %c", 5);
- *totalmesa=*totalmesa+4;
- break;
- case 4:
- printf("\n5 de %c", 5);
- *totalmesa=*totalmesa+5;
- break;
- case 5:
- printf("\n6 de %c", 5);
- *totalmesa=*totalmesa+6;
- break;
- case 6:
- printf("\n7 de %c", 5);
- *totalmesa=*totalmesa+7;
- break;
- case 7:
- printf("\n8 de %c", 5);
- *totalmesa=*totalmesa+8;
- break;
- case 8:
- printf("\n9 de %c", 5);
- *totalmesa=*totalmesa+9;
- break;
- case 9:
- printf("\n10 de %c", 5);
- *totalmesa=*totalmesa+10;
- break;
- case 10:
- printf("\nJ de %c", 5);
- *totalmesa=*totalmesa+10;
- break;
- case 11:
- printf("\nQ de %c", 5);
- *totalmesa=*totalmesa+10;
- break;
- case 12:
- printf("\nK de %c", 5);
- *totalmesa=*totalmesa+10;
- break;
- case 13:
- printf("\nA de %c", 3);
- *totalmesa=*totalmesa+1;
- break;
- case 14:
- printf("\n2 de %c", 3);
- *totalmesa=*totalmesa+2;
- break;
- case 15:
- printf("\n3 de %c", 3);
- *totalmesa=*totalmesa+3;
- break;
- case 16:
- printf("\n4 de %c", 3);
- *totalmesa=*totalmesa+4;
- break;
- case 17:
- printf("\n5 de %c", 3);
- *totalmesa=*totalmesa+5;
- break;
- case 18:
- printf("\n6 de %c", 3);
- *totalmesa=*totalmesa+6;
- break;
- case 19:
- printf("\n7 de %c", 3);
- *totalmesa=*totalmesa+7;
- break;
- case 20:
- printf("\n8 de %c", 3);
- *totalmesa=*totalmesa+8;
- break;
- case 21:
- printf("\n9 de %c", 3);
- *totalmesa=*totalmesa+9;
- break;
- case 22:
- printf("\n10 de %c", 3);
- *totalmesa=*totalmesa+10;
- break;
- case 23:
- printf("\nJ de %c", 3);
- *totalmesa=*totalmesa+10;
- break;
- case 24:
- printf("\nQ de %c", 3);
- *totalmesa=*totalmesa+10;
- break;
- case 25:
- printf("\nK de %c", 3);
- *totalmesa=*totalmesa+10;
- break;
- case 26:
- printf("\nA de %c", 6);
- *totalmesa=*totalmesa+1;
- break;
- case 27:
- printf("\n2 de %c", 6);
- *totalmesa=*totalmesa+2;
- break;
- case 28:
- printf("\n3 de %c", 6);
- *totalmesa=*totalmesa+3;
- break;
- case 29:
- printf("\n4 de %c", 6);
- *totalmesa=*totalmesa+4;
- break;
- case 30:
- printf("\n5 de %c", 6);
- *totalmesa=*totalmesa+5;
- break;
- case 31:
- printf("\n6 de %c", 6);
- *totalmesa=*totalmesa+6;
- break;
- case 32:
- printf("\n7 de %c", 6);
- *totalmesa=*totalmesa+7;
- break;
- case 33:
- printf("\n8 de %c", 6);
- *totalmesa=*totalmesa+8;
- break;
- case 34:
- printf("\n9 de %c", 6);
- *totalmesa=*totalmesa+9;
- break;
- case 35:
- printf("\n10 de %c", 6);
- *totalmesa=*totalmesa+10;
- break;
- case 36:
- printf("\nJ de %c", 6);
- *totalmesa=*totalmesa+10;
- break;
- case 37:
- printf("\nQ de %c", 6);
- *totalmesa=*totalmesa+10;
- break;
- case 38:
- printf("\nK de %c", 6);
- *totalmesa=*totalmesa+10;
- break;
- case 39:
- printf("\nA de %c", 4);
- *totalmesa=*totalmesa+1;
- break;
- case 40:
- printf("\n2 de %c", 4);
- *totalmesa=*totalmesa+2;
- break;
- case 41:
- printf("\n3 de %c", 4);
- *totalmesa=*totalmesa+3;
- break;
- case 42:
- printf("\n4 de %c", 4);
- *totalmesa=*totalmesa+4;
- break;
- case 43:
- printf("\n5 de %c", 4);
- *totalmesa=*totalmesa+5;
- break;
- case 44:
- printf("\n6 de %c", 4);
- *totalmesa=*totalmesa+6;
- break;
- case 45:
- printf("\n7 de %c", 4);
- *totalmesa=*totalmesa+7;
- break;
- case 46:
- printf("\n8 de %c", 4);
- *totalmesa=*totalmesa+8;
- break;
- case 47:
- printf("\n9 de %c", 4);
- *totalmesa=*totalmesa+9;
- break;
- case 48:
- printf("\n10 de %c", 4);
- *totalmesa=*totalmesa+10;
- break;
- case 49:
- printf("\nJ de %c", 4);
- *totalmesa=*totalmesa+10;
- break;
- case 50:
- printf("\nQ de %c", 4);
- *totalmesa=*totalmesa+10;
- break;
- case 51:
- printf("\nK de %c", 4);
- *totalmesa=*totalmesa+10;
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement