Advertisement
pauloludewig

BLACKJACK 50.0

May 4th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.96 KB | None | 0 0
  1. /* ~~~ BLACKJACK ™ (21) ~~~ Projeto para Linguagem de Programação;
  2. ~~~ 23-04-2013; últimas modificações: 02-05-2013; 03-05-2013;
  3. ~~~ Gabriel C. B. E PAULO LUDEWIG
  4. ~~~ Versão 50.0 : jogador pedindo mais cartas - OK;
  5. soma de pontos - OK;
  6. sistema de apostas pronto - OK;
  7. funções para melhor visualização - OK.
  8. Jogar mais uma rodada - PENDENTE
  9. FUNCIONANDOOOOOOOOOOO */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <time.h>
  14.  
  15.  
  16. // declaração de funções
  17. //void imprime(int cartas);
  18. void imprime(int cartas, int *soma); // imprime cartas e soma os pontos do jogador
  19. void imprime_mesa(int cartas, int *totalmesa); // imprime cartas e soma os pontos da mesa (IA)
  20.  
  21. // ascii : 3=copas / 4=ouros / 5=paus / 6=espadas
  22.  
  23. // FUNÇÃO PRINCIPAL
  24. int main()
  25. { int cartas[8]; // Cartas que estão com o jogador
  26. int mesa[8]; // Cartas que estão com a mesa
  27. int pedemais=1; // Inicialização para perguntar se o jogador quer mais cartas
  28. int cond;
  29. int baralho[16];
  30. int i,j,k,l; // Para fazer o loop das cartas do jogador
  31. int a,b; // Para fazer o loop das cartas da mesa
  32. int quermais=1; // Se quer jogar mais uma rodada
  33. int z;
  34. int continua=1; // flag para continuar o programa , caso as cartas no baralho sejam todas diferentes
  35. //Declaração dos valores da aposta:
  36. float cinquenta=50, duzentosecinquenta=250, quinhentos=500, mil=1000;
  37. float aposta=0; // total da grana apostada
  38. float carteira=5000;
  39. // Inicializa gerador de números aleatórios;
  40. srand(time(NULL));
  41. //Declaração dos valores de pontos:
  42. int soma=0; // Soma dos pontos do jogador
  43. int totalmesa=0; // Soma dos pontos da mesa
  44.  
  45. do{
  46.  
  47.  
  48.  
  49.  
  50. // Carregando vetor com 16 números aleatórios de 0 a 51;
  51. do{
  52. continua=0;
  53. for(k=0;k<16;k++)
  54. {
  55. baralho[k] = rand()%51+0; // Gera números aleatórios de 0 a 51, que serão atribuídos às cartas, futuramente;
  56. // printf("\nPosi%cao %d do vetor cartas:%d",135, i, baralho[i]); *mostra os numeros randomizados
  57. }
  58. for (k=0;k<16;k++)
  59. { for (l=0;l<16;l++)
  60. {
  61. if(k!=l)
  62. { if(baralho[k]==baralho[l])
  63. {continua=1;}
  64. }
  65. }
  66. }
  67. } while ( continua==1 );
  68.  
  69.  
  70. aposta=0;
  71. soma=0;
  72. totalmesa=0;
  73. quermais=1;
  74. pedemais=1;
  75. system("cls");
  76.  
  77. // Começa o BLACKJACK => Baralho já está preparado!
  78. printf("\n\t\t\tBEM VINDO AO BLACKJACK!!!");
  79. sleep(500); // delay de 1s
  80.  
  81. do
  82. {
  83. 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);
  84. scanf("%d", &cond);
  85. }while(cond>4 || cond<1 );
  86.  
  87. switch(cond)
  88. {
  89. case 1:
  90. aposta=aposta+cinquenta;
  91. break;
  92. case 2:
  93. aposta=aposta+duzentosecinquenta;
  94. break;
  95. case 3:
  96. aposta=aposta+quinhentos;
  97. break;
  98. case 4:
  99. aposta=aposta+mil;
  100. break;
  101. }
  102.  
  103. carteira=carteira-aposta;
  104. // Passa as cartas do baralho para a mão e para a mesa
  105. for (i=0;i<8;i++)
  106. { cartas[i]=baralho[i];
  107. /*printf("Baralho:%d\nCarta:%d\n", baralho[i], cartas[i]);*/ }
  108. for (i=0;i<8;i++)
  109. { mesa[i]=baralho[i+8];
  110. /*printf("Baralho:%d\nMesa:%d\n", baralho[i], mesa[i]); */}
  111.  
  112. // Mostrar as cartas do jogador e da mesa no começo, junto com a aposta
  113. system("cls");
  114. printf("\n Aposta : %5.2f", aposta);
  115. printf("\n\n\t\t\tSuas cartas iniciais:");
  116. for (i=0;i<2;i++)
  117. {sleep(300);
  118. imprime(cartas[i], &soma); // Chama função de imprimir cartas e somar pontos do jogador
  119. }
  120. printf("\nTotal: %d", soma);
  121. printf("\n\n\t\t\tCartas da mesa:");
  122. for (a=0;a<1;a++)
  123. {sleep(300);
  124. imprime_mesa(mesa[a], &totalmesa); // Chama função de imprimir cartas e somar pontos da mesa
  125. }
  126. printf("\nTotal: %d", totalmesa);
  127.  
  128. sleep(1000);
  129. i=2;
  130. do{
  131. do{
  132. printf("\n\n\t\tDeseja mais uma carta?\n1 - Sim, por favor\n2 - Nao, obrigado\n");
  133. scanf("%d", &cond);
  134. } while (cond<1 || cond>2);
  135.  
  136.  
  137.  
  138. if ( cond==1 ) // Caso queira mais uma carta
  139. { soma=0;
  140. totalmesa=0;
  141. i++;
  142. system("cls");
  143. printf("\n Aposta : %5.2f", aposta);
  144. printf("\n\n\t\t\tSuas cartas :");
  145. for(j=0;j<i;j++)
  146. {
  147. imprime(cartas[j], &soma); // Chama função de imprimir cartas e somar pontos
  148. }
  149. printf("\nTotal: %d", soma);
  150. printf("\n\n\t\t\tCartas da mesa:");
  151. for (a=0;a<1;a++)
  152. {//sleep(300);
  153. imprime_mesa(mesa[a], &totalmesa); // Chama função de imprimir cartas e somar pontos da mesa
  154. }
  155. printf("\nTotal: %d", totalmesa);
  156.  
  157.  
  158. if(soma>21)
  159. { //system("cls");
  160. //printf("\nTotal: %d", soma);
  161. //printf("\n\n\tVoc%c perdeu!", 136);
  162. pedemais=0;
  163. //carteira=carteira-aposta;
  164. }
  165. if(soma<=21)
  166. {
  167. //printf("\nTotal: %d", soma);
  168. pedemais=1;
  169. }
  170.  
  171. }
  172. if(cond==2)
  173. { system("cls");
  174. //printf("\nTotal= %d", soma);
  175. pedemais=0;
  176. /*printf("\nVoc%c ainda tem $%10.2f para apostar! Deseja jogar mais uma rodada? (s/n)", 136, carteira);
  177. scanf("%c", &quermais);*/
  178. }
  179.  
  180.  
  181. } while(pedemais==1 );
  182.  
  183.  
  184. // Jogador não quer mais cartas, então a mesa começa a pegar as cartas dela
  185. b=0;
  186. do { totalmesa=0;
  187. soma=0;
  188. b++;
  189. system("cls");
  190. printf("\n Aposta : %5.2f", aposta);
  191. printf("\n\n\t\t\tSuas cartas :");
  192. for(j=0;j<i;j++)
  193. {
  194. imprime(cartas[j], &soma); // Chama função de imprimir cartas e somar pontos
  195. }
  196. printf("\nTotal: %d", soma);
  197.  
  198. printf("\n\n\t\t\tCartas da mesa:");
  199. sleep(300);
  200. for (a=0;a<b;a++)
  201. {//sleep(300);
  202. imprime_mesa(mesa[a], &totalmesa); // Chama função de imprimir cartas e somar pontos da mesa
  203. }
  204. printf("\nTotal: %d", totalmesa);
  205.  
  206. } while (totalmesa<17 && soma<22);
  207.  
  208. // CONDIÇÕES DE GANHO OU PERDA DE RODADA CONFORME COMPARAÇÕES ENTRE PONTOS DO JOGADOR E DA MESA
  209.  
  210. if (carteira==0)
  211. { printf("Voc%c est%c sem dinheiro!!!", 136, 160);
  212. }
  213. else{
  214.  
  215. if ((totalmesa>21 || totalmesa<soma) && soma<22)
  216. {printf("\n\n\tVoc%c ganhou!!!", 136);
  217. carteira=carteira+(2*aposta);
  218. do{
  219. 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);
  220. scanf("%d", &quermais);
  221. } while(quermais>2 || quermais<1);
  222. }
  223.  
  224. if (totalmesa==soma && soma<22)
  225. {printf("\n\n\tEMPATE!");
  226. carteira=carteira+aposta;
  227. do{
  228. 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);
  229. scanf("%d", &quermais);
  230. } while(quermais>2 || quermais<1);
  231. }
  232.  
  233. if((totalmesa>soma && soma<22) && totalmesa<22)
  234. { printf("\n\n\tVoc%c perdeu!", 136);
  235.  
  236. do{
  237. 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);
  238. scanf("%d", &quermais);
  239. } while(quermais>2 || quermais<1);
  240. }
  241. if(soma>21)
  242. { printf("\n\n\tVoc%c perdeu -> estourou 21!", 136);
  243. do{
  244. 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);
  245. scanf("%d", &quermais);
  246. } while(quermais>2 || quermais<1);
  247. }
  248. }
  249.  
  250. } while (quermais==1);
  251.  
  252. // printf("\nNAIPES: %c %c %c %c", 3, 4, 5, 6); // Teste de naipes
  253. // Acaba o jogo se não quiser jogar mais
  254. printf("\n");
  255. system("pause");
  256. return (0);
  257. }
  258.  
  259.  
  260. void imprime(int cartas, int *soma)
  261. { switch(cartas)
  262. {
  263. case 0:
  264. printf("\nA de %c", 5);
  265. *soma=*soma+1;
  266. break;
  267. case 1:
  268. printf("\n2 de %c", 5);
  269. *soma=*soma+2;
  270. break;
  271. case 2:
  272. printf("\n3 de %c", 5);
  273. *soma=*soma+3;
  274. break;
  275. case 3:
  276. printf("\n4 de %c", 5);
  277. *soma=*soma+4;
  278. break;
  279. case 4:
  280. printf("\n5 de %c", 5);
  281. *soma=*soma+5;
  282. break;
  283. case 5:
  284. printf("\n6 de %c", 5);
  285. *soma=*soma+6;
  286. break;
  287. case 6:
  288. printf("\n7 de %c", 5);
  289. *soma=*soma+7;
  290. break;
  291. case 7:
  292. printf("\n8 de %c", 5);
  293. *soma=*soma+8;
  294. break;
  295. case 8:
  296. printf("\n9 de %c", 5);
  297. *soma=*soma+9;
  298. break;
  299. case 9:
  300. printf("\n10 de %c", 5);
  301. *soma=*soma+10;
  302. break;
  303. case 10:
  304. printf("\nJ de %c", 5);
  305. *soma=*soma+10;
  306. break;
  307. case 11:
  308. printf("\nQ de %c", 5);
  309. *soma=*soma+10;
  310. break;
  311. case 12:
  312. printf("\nK de %c", 5);
  313. *soma=*soma+10;
  314. break;
  315. case 13:
  316. printf("\nA de %c", 3);
  317. *soma=*soma+1;
  318. break;
  319. case 14:
  320. printf("\n2 de %c", 3);
  321. *soma=*soma+2;
  322. break;
  323. case 15:
  324. printf("\n3 de %c", 3);
  325. *soma=*soma+3;
  326. break;
  327. case 16:
  328. printf("\n4 de %c", 3);
  329. *soma=*soma+4;
  330. break;
  331. case 17:
  332. printf("\n5 de %c", 3);
  333. *soma=*soma+5;
  334. break;
  335. case 18:
  336. printf("\n6 de %c", 3);
  337. *soma=*soma+6;
  338. break;
  339. case 19:
  340. printf("\n7 de %c", 3);
  341. *soma=*soma+7;
  342. break;
  343. case 20:
  344. printf("\n8 de %c", 3);
  345. *soma=*soma+8;
  346. break;
  347. case 21:
  348. printf("\n9 de %c", 3);
  349. *soma=*soma+9;
  350. break;
  351. case 22:
  352. printf("\n10 de %c", 3);
  353. *soma=*soma+10;
  354. break;
  355. case 23:
  356. printf("\nJ de %c", 3);
  357. *soma=*soma+10;
  358. break;
  359. case 24:
  360. printf("\nQ de %c", 3);
  361. *soma=*soma+10;
  362. break;
  363. case 25:
  364. printf("\nK de %c", 3);
  365. *soma=*soma+10;
  366. break;
  367. case 26:
  368. printf("\nA de %c", 6);
  369. *soma=*soma+1;
  370. break;
  371. case 27:
  372. printf("\n2 de %c", 6);
  373. *soma=*soma+2;
  374. break;
  375. case 28:
  376. printf("\n3 de %c", 6);
  377. *soma=*soma+3;
  378. break;
  379. case 29:
  380. printf("\n4 de %c", 6);
  381. *soma=*soma+4;
  382. break;
  383. case 30:
  384. printf("\n5 de %c", 6);
  385. *soma=*soma+5;
  386. break;
  387. case 31:
  388. printf("\n6 de %c", 6);
  389. *soma=*soma+6;
  390. break;
  391. case 32:
  392. printf("\n7 de %c", 6);
  393. *soma=*soma+7;
  394. break;
  395. case 33:
  396. printf("\n8 de %c", 6);
  397. *soma=*soma+8;
  398. break;
  399. case 34:
  400. printf("\n9 de %c", 6);
  401. *soma=*soma+9;
  402. break;
  403. case 35:
  404. printf("\n10 de %c", 6);
  405. *soma=*soma+10;
  406. break;
  407. case 36:
  408. printf("\nJ de %c", 6);
  409. *soma=*soma+10;
  410. break;
  411. case 37:
  412. printf("\nQ de %c", 6);
  413. *soma=*soma+10;
  414. break;
  415. case 38:
  416. printf("\nK de %c", 6);
  417. *soma=*soma+10;
  418. break;
  419. case 39:
  420. printf("\nA de %c", 4);
  421. *soma=*soma+1;
  422. break;
  423. case 40:
  424. printf("\n2 de %c", 4);
  425. *soma=*soma+2;
  426. break;
  427. case 41:
  428. printf("\n3 de %c", 4);
  429. *soma=*soma+3;
  430. break;
  431. case 42:
  432. printf("\n4 de %c", 4);
  433. *soma=*soma+4;
  434. break;
  435. case 43:
  436. printf("\n5 de %c", 4);
  437. *soma=*soma+5;
  438. break;
  439. case 44:
  440. printf("\n6 de %c", 4);
  441. *soma=*soma+6;
  442. break;
  443. case 45:
  444. printf("\n7 de %c", 4);
  445. *soma=*soma+7;
  446. break;
  447. case 46:
  448. printf("\n8 de %c", 4);
  449. *soma=*soma+8;
  450. break;
  451. case 47:
  452. printf("\n9 de %c", 4);
  453. *soma=*soma+9;
  454. break;
  455. case 48:
  456. printf("\n10 de %c", 4);
  457. *soma=*soma+10;
  458. break;
  459. case 49:
  460. printf("\nJ de %c", 4);
  461. *soma=*soma+10;
  462. break;
  463. case 50:
  464. printf("\nQ de %c", 4);
  465. *soma=*soma+10;
  466. break;
  467. case 51:
  468. printf("\nK de %c", 4);
  469. *soma=*soma+10;
  470. break;
  471. }
  472. }
  473.  
  474. // FUNÇÂO IMPRIME_MESA => IMPRIME CARTAS E SOMA OS PONTOS DA MESA
  475.  
  476. void imprime_mesa(int mesa, int *totalmesa)
  477. { switch(mesa)
  478. {
  479. case 0:
  480. printf("\nA de %c", 5);
  481. *totalmesa=*totalmesa+1;
  482. break;
  483. case 1:
  484. printf("\n2 de %c", 5);
  485. *totalmesa=*totalmesa+2;
  486. break;
  487. case 2:
  488. printf("\n3 de %c", 5);
  489. *totalmesa=*totalmesa+3;
  490. break;
  491. case 3:
  492. printf("\n4 de %c", 5);
  493. *totalmesa=*totalmesa+4;
  494. break;
  495. case 4:
  496. printf("\n5 de %c", 5);
  497. *totalmesa=*totalmesa+5;
  498. break;
  499. case 5:
  500. printf("\n6 de %c", 5);
  501. *totalmesa=*totalmesa+6;
  502. break;
  503. case 6:
  504. printf("\n7 de %c", 5);
  505. *totalmesa=*totalmesa+7;
  506. break;
  507. case 7:
  508. printf("\n8 de %c", 5);
  509. *totalmesa=*totalmesa+8;
  510. break;
  511. case 8:
  512. printf("\n9 de %c", 5);
  513. *totalmesa=*totalmesa+9;
  514. break;
  515. case 9:
  516. printf("\n10 de %c", 5);
  517. *totalmesa=*totalmesa+10;
  518. break;
  519. case 10:
  520. printf("\nJ de %c", 5);
  521. *totalmesa=*totalmesa+10;
  522. break;
  523. case 11:
  524. printf("\nQ de %c", 5);
  525. *totalmesa=*totalmesa+10;
  526. break;
  527. case 12:
  528. printf("\nK de %c", 5);
  529. *totalmesa=*totalmesa+10;
  530. break;
  531. case 13:
  532. printf("\nA de %c", 3);
  533. *totalmesa=*totalmesa+1;
  534. break;
  535. case 14:
  536. printf("\n2 de %c", 3);
  537. *totalmesa=*totalmesa+2;
  538. break;
  539. case 15:
  540. printf("\n3 de %c", 3);
  541. *totalmesa=*totalmesa+3;
  542. break;
  543. case 16:
  544. printf("\n4 de %c", 3);
  545. *totalmesa=*totalmesa+4;
  546. break;
  547. case 17:
  548. printf("\n5 de %c", 3);
  549. *totalmesa=*totalmesa+5;
  550. break;
  551. case 18:
  552. printf("\n6 de %c", 3);
  553. *totalmesa=*totalmesa+6;
  554. break;
  555. case 19:
  556. printf("\n7 de %c", 3);
  557. *totalmesa=*totalmesa+7;
  558. break;
  559. case 20:
  560. printf("\n8 de %c", 3);
  561. *totalmesa=*totalmesa+8;
  562. break;
  563. case 21:
  564. printf("\n9 de %c", 3);
  565. *totalmesa=*totalmesa+9;
  566. break;
  567. case 22:
  568. printf("\n10 de %c", 3);
  569. *totalmesa=*totalmesa+10;
  570. break;
  571. case 23:
  572. printf("\nJ de %c", 3);
  573. *totalmesa=*totalmesa+10;
  574. break;
  575. case 24:
  576. printf("\nQ de %c", 3);
  577. *totalmesa=*totalmesa+10;
  578. break;
  579. case 25:
  580. printf("\nK de %c", 3);
  581. *totalmesa=*totalmesa+10;
  582. break;
  583. case 26:
  584. printf("\nA de %c", 6);
  585. *totalmesa=*totalmesa+1;
  586. break;
  587. case 27:
  588. printf("\n2 de %c", 6);
  589. *totalmesa=*totalmesa+2;
  590. break;
  591. case 28:
  592. printf("\n3 de %c", 6);
  593. *totalmesa=*totalmesa+3;
  594. break;
  595. case 29:
  596. printf("\n4 de %c", 6);
  597. *totalmesa=*totalmesa+4;
  598. break;
  599. case 30:
  600. printf("\n5 de %c", 6);
  601. *totalmesa=*totalmesa+5;
  602. break;
  603. case 31:
  604. printf("\n6 de %c", 6);
  605. *totalmesa=*totalmesa+6;
  606. break;
  607. case 32:
  608. printf("\n7 de %c", 6);
  609. *totalmesa=*totalmesa+7;
  610. break;
  611. case 33:
  612. printf("\n8 de %c", 6);
  613. *totalmesa=*totalmesa+8;
  614. break;
  615. case 34:
  616. printf("\n9 de %c", 6);
  617. *totalmesa=*totalmesa+9;
  618. break;
  619. case 35:
  620. printf("\n10 de %c", 6);
  621. *totalmesa=*totalmesa+10;
  622. break;
  623. case 36:
  624. printf("\nJ de %c", 6);
  625. *totalmesa=*totalmesa+10;
  626. break;
  627. case 37:
  628. printf("\nQ de %c", 6);
  629. *totalmesa=*totalmesa+10;
  630. break;
  631. case 38:
  632. printf("\nK de %c", 6);
  633. *totalmesa=*totalmesa+10;
  634. break;
  635. case 39:
  636. printf("\nA de %c", 4);
  637. *totalmesa=*totalmesa+1;
  638. break;
  639. case 40:
  640. printf("\n2 de %c", 4);
  641. *totalmesa=*totalmesa+2;
  642. break;
  643. case 41:
  644. printf("\n3 de %c", 4);
  645. *totalmesa=*totalmesa+3;
  646. break;
  647. case 42:
  648. printf("\n4 de %c", 4);
  649. *totalmesa=*totalmesa+4;
  650. break;
  651. case 43:
  652. printf("\n5 de %c", 4);
  653. *totalmesa=*totalmesa+5;
  654. break;
  655. case 44:
  656. printf("\n6 de %c", 4);
  657. *totalmesa=*totalmesa+6;
  658. break;
  659. case 45:
  660. printf("\n7 de %c", 4);
  661. *totalmesa=*totalmesa+7;
  662. break;
  663. case 46:
  664. printf("\n8 de %c", 4);
  665. *totalmesa=*totalmesa+8;
  666. break;
  667. case 47:
  668. printf("\n9 de %c", 4);
  669. *totalmesa=*totalmesa+9;
  670. break;
  671. case 48:
  672. printf("\n10 de %c", 4);
  673. *totalmesa=*totalmesa+10;
  674. break;
  675. case 49:
  676. printf("\nJ de %c", 4);
  677. *totalmesa=*totalmesa+10;
  678. break;
  679. case 50:
  680. printf("\nQ de %c", 4);
  681. *totalmesa=*totalmesa+10;
  682. break;
  683. case 51:
  684. printf("\nK de %c", 4);
  685. *totalmesa=*totalmesa+10;
  686. break;
  687. }
  688. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement