Guest User

Untitled

a guest
Jan 19th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define TRUE 1
  6. #define FALSE 0
  7.  
  8. typedef struct{
  9.     int num;
  10.     char palo;
  11.     int disp;
  12. }carta;
  13.  
  14. void fflushstdin();
  15. void pause();
  16. void deal(carta hands[2][3]);
  17. int play(carta hands[2][3], int *palyer_tag);
  18.  
  19. int main(void) {
  20.     char name[12];
  21.     carta hands[2][3];
  22.     int player_tag=0; //0 para player 1 y 1 para cpu
  23.     int score[2]= {0, 0}; //vector de puntajes para respectivos jugadores
  24.     int win;
  25.  
  26.     srand(time(NULL)); //seed
  27.     printf("Ingrese su nombre: \n");
  28.     fgets(name,12,stdin);
  29.     fflushstdin();
  30.     printf("%s", name);
  31.     printf("A cuantos puntos desea jugar\n 1- 18\n 2- 30\n");
  32.     scanf("%d",&win);
  33.     if(win=1){
  34.         win=18;
  35.     }
  36.     else{
  37.         win=30;
  38.     }
  39.     do { //como cortesia la computadora empieza siendo el pie y el usuario la mano
  40.         player_tag=play(hands,&player_tag);
  41.         score[player_tag]++;
  42.         printf("FIN DE LA MANO\nPuntos:\nHumano\t\tMaquina\n%d\t\t%d\n",score[0],score[1]);
  43.     }while ((score[0]<win)&&(score[1]<win));
  44.     printf("FIN DEL JUEGO");
  45.     return EXIT_SUCCESS;
  46. }
  47.  
  48. void pause (){
  49.     while ('\n' != getchar ());
  50. }
  51.  
  52. void fflushstdin() {
  53.     int c;
  54.     while( (c = fgetc( stdin )) != EOF && c != '\n' );
  55. }
  56.  
  57. void deal(carta hands[2][3]){
  58.     int i;
  59.     int j;
  60.     int k;
  61.     int l;
  62.     carta aux;
  63.  
  64.     for(i=0;i<2; i++){
  65.         for (j=0;j<3;j++){
  66.             do {
  67.                 hands[i][j].num=(rand()%11)+1;
  68.             }while ((hands[i][j].num==8) || (hands[i][j].num==9));
  69.             hands[i][j].palo = (rand()%3);
  70.             switch (hands[i][j].palo){
  71.             case 0:
  72.                 hands[i][j].palo='E';
  73.                 break;
  74.             case 1:
  75.                 hands[i][j].palo='O';
  76.                 break;
  77.             case 2:
  78.                 hands[i][j].palo='B';
  79.                 break;
  80.             default:
  81.                 hands[i][j].palo='C';
  82.                 break;
  83.             }
  84.             hands[i][j].disp = TRUE;
  85.         }
  86.     }
  87.     for(i=0;i<2;i++){
  88.         for(j=0;j<3;j++){
  89.             aux.num=hands[i][j].num;
  90.             aux.palo=hands[i][j].palo;
  91.             for(k=0;k<2;k++){
  92.                 for(l=0;l<3;l++){
  93.                     if((i!=k)||(j!=l)){
  94.                         if ((hands[i][j].num==hands[k][l].num)&&(hands[i][j].palo==hands[k][l].palo)){
  95.                             deal(hands);
  96.                             return;
  97.                         }
  98.                     }
  99.                 }
  100.             }
  101.         }
  102.     }
  103.     for(i=0;i<2;i++){
  104.         for(j=0;j<3;j++){
  105.             printf("%d,%c\t",hands[i][j].num,hands[i][j].palo);
  106.         }
  107.             printf("\n");
  108.     }
  109.     return;
  110. }
  111.  
  112. int play(carta hands[2][3], int *player_tag){
  113.     int i;
  114.     int j;
  115.     int k=0;
  116.     int aux;
  117.     int lol;
  118.     int str[2];
  119.     int vic[3];
  120.     int flag=TRUE;
  121.  
  122.     deal(hands);
  123.     while (flag==TRUE){
  124.         do{
  125.             j= rand()%3;
  126.         }while(hands[1][j].disp==FALSE);
  127.         hands[1][j].disp=FALSE;
  128.         if(*player_tag==1){
  129.             printf("Carta de la maquina:\n%d,%c\n",hands[1][j].num,hands[1][j].palo);
  130.             do{
  131.                 printf("Que carta desea usar?\n");
  132.                 scanf("%d",&i);
  133.             }while(hands[0][i].disp==FALSE);
  134.         }
  135.         else{
  136.             do{
  137.                 printf("Que carta desea usar?\n");
  138.                 scanf("%d",&i);
  139.             }while(hands[0][i].disp==FALSE);
  140.         }
  141.         hands[0][i].disp=FALSE;
  142.         printf("Cartas en mesa:\nUsuario\t\tMaquina\n%d,%c\t\t%d,%c\n",hands[0][i].num,hands[0][i].palo,hands[1][j].num,hands[1][j].palo);
  143.         for (aux=0;aux<2;aux++){
  144.             if (aux==0){
  145.                 lol=i;
  146.             }
  147.             else{
  148.                 lol=j;
  149.             }
  150.             switch (hands[aux][lol].num){
  151.             case 1:
  152.                 if(hands[aux][lol].palo=='E'){
  153.                     str[aux]=14;
  154.                 }
  155.                 else{
  156.                     if(hands[aux][lol].palo=='B'){
  157.                         str[aux]=13;
  158.                     }
  159.                     else{
  160.                         str[aux]=8;
  161.                     }
  162.                 }
  163.                 break;
  164.             case 2:
  165.                 str[aux]=9;
  166.                 break;
  167.             case 3:
  168.                 str[aux]=10;
  169.                 break;
  170.             case 4:
  171.                 str[aux]=1;
  172.                 break;
  173.             case 5:
  174.                 str[aux]=2;
  175.                 break;
  176.             case 6:
  177.                 str[aux]=3;
  178.                 break;
  179.             case 7:
  180.                 if(hands[aux][lol].palo=='E'){
  181.                     str[aux]=12;
  182.                 break;
  183.                 }
  184.                 else{
  185.                     if(hands[aux][lol].palo=='O'){
  186.                         str[aux]=11;
  187.                     }
  188.                     else{
  189.                         str[aux]=4;
  190.                     }
  191.                 }
  192.                 break;
  193.             case 10:
  194.                 str[aux]=5;
  195.                 break;
  196.             case 11:
  197.                 str[aux]=6;
  198.                 break;
  199.             case 12:
  200.                 str[aux]=7;
  201.                 break;
  202.             }
  203.         }
  204.         if(str[0]>str[1]){
  205.             printf("Gano el humano\n");
  206.             *player_tag=0;
  207.             vic[k]=*player_tag;
  208.         }
  209.         else{
  210.             if(str[0]<str[1]){
  211.                 printf("Gano la maquina\n");
  212.                 *player_tag=1;
  213.                 vic[k]=*player_tag;
  214.             }
  215.             else{
  216.                 printf("Empate\n");
  217.                 vic[k]=2;
  218.             }
  219.         }
  220.         k++;
  221.         if(k>1){
  222.             if(k==2){
  223.                 if((vic[0]==vic[1])&&(vic[0]!=2)){
  224.                     printf("La mano la gana el player: %d\n",vic[0]);
  225.                     return vic[0];
  226.                 }
  227.                 if((vic[0]==2)&&(vic[1]!=2)){
  228.                     printf("La mano la gana el player: %d\n",vic[1]);
  229.                     return vic[1];
  230.                 }
  231.             }
  232.             else{
  233.                 if((vic[0]!=vic[1])&&(vic[0]!=2)&&(vic[1]!=2)){
  234.                     if(vic[2]!=2){
  235.                         printf("La mano la gana el player: %d\n",vic[2]);
  236.                         return vic[2];
  237.                     }
  238.                     else{
  239.                         printf("La mano la gana el player: %d\n",vic[0]);
  240.                         return vic[0];
  241.                     }
  242.                 }
  243.                 else{
  244.                     if (vic[2]!=2){
  245.                         printf("La mano la gana el player: %d\n",vic[2]);
  246.                         return vic[2];
  247.                     }
  248.                     else{
  249.                         printf("La mano la gana el player: %d\n",player_tag);
  250.                         return player_tag;
  251.                     }
  252.                 }
  253.             }
  254.         }
  255.     }
  256. }
Add Comment
Please, Sign In to add comment