Advertisement
Guest User

Untitled

a guest
Mar 8th, 2021
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.89 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define N_KARTEN 52
  6.  
  7. int erster_zug=1;
  8. int COM1_win_dez=0;
  9. int COM2_win_dez=0;
  10. int COM1_los_dez=0;
  11. int COM2_los_dez=0;
  12. int stand=0;
  13. int sw_end=0;
  14. int sw_nr=1;
  15. int deck_count=0;
  16. int werte_add[2];
  17.  
  18. typedef struct{
  19.   char name[10];
  20.   int farbe;
  21.   int wert;
  22. } karte;
  23.  
  24. char f2s[][10]={"Karo","Herz","Piek","Kreuz"};
  25.  
  26. void anmeldung(int *wdh, int *rsk1, int *rsk2, int *spl_anz);
  27. void swap(karte *a, karte *b);
  28. void print_karten(karte blatt[]);
  29. void spiel(karte blatt[], int wdh, int anz, int rsk1, int rsk2);
  30.   void erste_karten(karte blatt[]);
  31.   void sw_erster_zug(karte blatt[]);
  32.     void akt_COM1_erster(karte blatt[]);
  33.     void akt_COM2_erster(karte blatt[]);
  34.     void akt_COM1(karte blatt[]);
  35.     void akt_COM2(karte blatt[]);
  36.     void COM1_w(karte blatt[]);
  37.     void COM2_w(karte blatt[]);
  38.     void deck_count_check_erste_karten(karte blatt[]);
  39.     void deck_count_check_akt(karte blatt[]);
  40.     void deck_mischen(karte blatt[]);
  41.       void mischen(karte blatt[]);
  42. void auswertung(int wdh, int rsk1, int rsk2);
  43.  
  44. int main(){
  45.   int deck_count=0;
  46.   int spl_wdh=0;
  47.   int spl_anz=0;
  48.   int spl_rsk1=0;
  49.   int spl_rsk2=0;
  50.   anmeldung(&spl_wdh, &spl_rsk1, &spl_rsk2, &spl_anz);
  51.   karte blatt[N_KARTEN]={
  52.     {"zwei",0,2},{"drei",0,3},{"vier",0,4},{"fuenf",0,5},{"sechs",0,6},{"sieben",0,7},{"acht",0,8},
  53.     {"neun",0,9},{"zehn",0,10},{"bube",0,10},{"dame",0,10},{"koenig",0,10},{"ass",0,11},
  54.     {"zwei",1,2},{"drei",1,3},{"vier",1,4},{"fuenf",1,5},{"sechs",1,6},{"sieben",1,7},{"acht",1,8},
  55.     {"neun",1,9},{"zehn",1,10},{"bube",1,10},{"dame",1,10},{"koenig",1,10},{"ass",1,11},
  56.     {"zwei",2,2},{"drei",2,3},{"vier",2,4},{"fuenf",2,5},{"sechs",2,6},{"sieben",2,7},{"acht",2,8},
  57.     {"neun",2,9},{"zehn",2,10},{"bube",2,10},{"dame",2,10},{"koenig",2,10},{"ass",2,11},
  58.     {"zwei",3,2},{"drei",3,3},{"vier",3,4},{"fuenf",3,5},{"sechs",3,6},{"sieben",3,7},{"acht",3,8},
  59.     {"neun",3,9},{"zehn",3,10},{"bube",3,10},{"dame",3,10},{"koenig",3,10},{"ass",3,11}};
  60.   print_karten(blatt);
  61.   srand(time(NULL));
  62.   mischen(blatt);
  63.   printf("===================================\n");
  64.   printf("Weiter mit <return>\n");
  65.   getchar();
  66.   print_karten(blatt);
  67.   spiel(blatt, spl_wdh, spl_rsk1, spl_rsk2, spl_anz);
  68.   auswertung(spl_wdh, spl_rsk1, spl_rsk2);
  69. }
  70.  
  71. void anmeldung(int *wdh, int *rsk1, int *rsk2, int *anz) {
  72.   printf("Willkommen bei 17 und 4. Dies ist der Demomodus wo ein COM gegen einen anderen COM spielt.\n");
  73.   printf("Es gibt 2 Aktionen die Sie wählen können:\n");
  74.   printf("Wie viele Spiele wollen Sie spielen: ");
  75.   scanf("%d", wdh);
  76.   printf("Die COM's können in verschiedenen Risikobereitschaften ihre Züge wählen: 1: ganz ängstlich\n");
  77.   printf("                                                                            2: etwas ängstlich\n");
  78.   printf("                                                                            3: normal\n");
  79.   printf("                                                                            4: etwas mutiger\n");
  80.   printf("                                                                            5: sehr mutig\n");
  81.   printf("Risikobereitschaft COM1: ");
  82.   scanf("%d", rsk1);
  83.   printf("Risikobereitschaft COM2: ");
  84.   scanf("%d", rsk2);
  85.   printf("Sollen alle Spielzüge gezeigt werden: 1 - Ja\n");
  86.   printf("                                      2 - Nein\n");
  87.   scanf("%d", anz);
  88. }
  89.  
  90. void print_karten(karte blatt[]){
  91.     int i;
  92.     for(i=0;i<N_KARTEN;i++){
  93.       printf("%-10s %-10s Wert: %2d\n",f2s[blatt[i].farbe],blatt[i].name,blatt[i].wert);
  94.     }
  95. }
  96.  
  97. void swap(karte *a, karte *b){
  98.   karte tmp;
  99.   tmp=*a;
  100.   *a=*b;
  101.   *b=tmp;
  102. }
  103.  
  104.  
  105. void mischen(karte blatt[]){
  106.   int i;
  107.   int a,b;
  108.   for(i=0;i<N_KARTEN*4;i++){
  109.     a=rand()%N_KARTEN;
  110.     b=rand()%N_KARTEN;
  111.     swap(&blatt[a],&blatt[b]);
  112.   }
  113. }
  114.  
  115. void spiel(karte blatt[], int wdh, int anz, int rsk1, int rsk2){
  116.   for(int i=0; i<wdh;i++){
  117.     erste_karten(blatt);
  118.     sw_erster_zug(blatt);
  119.   }
  120. }
  121.  
  122. void erste_karten(karte blatt[]){
  123.   extern int deck_count;
  124.   deck_count_check_erste_karten(blatt);
  125.   printf("---------------------------------------------------------------------------------------\n");
  126.   printf("%-10s %-10s Wert: %2d",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
  127.   werte_add[0]=blatt[deck_count].wert;
  128.   deck_count++;
  129.   printf("                          %-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
  130.   werte_add[1]=blatt[deck_count].wert;
  131.   deck_count++;
  132.   printf("%-10s %-10s Wert: %2d",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
  133.   if((werte_add[0]==11) && blatt[deck_count].wert==11){
  134.     werte_add[0]=21;
  135.   }
  136.   else{
  137.   werte_add[0]=werte_add[0]+blatt[deck_count].wert;
  138.   }
  139.   deck_count++;
  140.   printf("                          %-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
  141.   if((werte_add[1]==11) && (blatt[deck_count].wert==11)){
  142.     werte_add[1]=21;
  143.   }
  144.   else{
  145.   werte_add[1]=werte_add[1]+blatt[deck_count].wert;
  146.   }
  147.   deck_count++;
  148.   printf("%30d", werte_add[0]);
  149.   printf("                          %30d\n",werte_add[1]);
  150.   printf("---------------------------------------------------------------------------------------\n");
  151. }
  152.  
  153. void sw_erster_zug(karte blatt[]){
  154.     switch(erster_zug){
  155.         case 1:
  156.           akt_COM1_erster(blatt);
  157.           break;
  158.         case 2:
  159.           akt_COM2_erster(blatt);
  160.           break;
  161.     }
  162. }
  163.  
  164. void akt_COM1_erster(karte blatt[]){
  165.   extern int sw_nr;
  166.   while(sw_end==0){
  167.     switch(sw_nr){
  168.       case 1:
  169.         akt_COM1(blatt);
  170.         break;
  171.       case 2:
  172.         akt_COM2(blatt);
  173.         break;
  174.       case 3:
  175.         COM1_w(blatt);
  176.         break;
  177.       case 4:
  178.         COM2_w(blatt);
  179.         break;
  180.     }
  181.   }
  182.   werte_add[0]=0;
  183.   werte_add[1]=0;
  184.   sw_nr=1;
  185.   sw_end=0;
  186.   stand=0;
  187.   erster_zug=2;
  188. }
  189.  
  190. void akt_COM2_erster(karte blatt[]){
  191.   extern int sw_nr;
  192.   while(sw_end==0){
  193.     switch(sw_nr){
  194.       case 1:
  195.         akt_COM2(blatt);
  196.         break;
  197.       case 2:
  198.         akt_COM1(blatt);
  199.         break;
  200.       case 3:
  201.         COM1_w(blatt);
  202.         break;
  203.       case 4:
  204.         COM2_w(blatt);
  205.         break;
  206.     }
  207.   }
  208.   werte_add[0]=0;
  209.   werte_add[1]=0;
  210.   sw_nr=1;
  211.   sw_end=0;
  212.   stand=0;
  213.   erster_zug=1;
  214. }
  215.  
  216. void akt_COM1(karte blatt[]){
  217.   extern int deck_count;
  218.   extern int sw_nr;
  219.   deck_count_check_akt(blatt);
  220.   if((((werte_add[0]<21) || (werte_add[0]==21)) && ((stand==2) || (stand==0))) || (((werte_add[0])<(werte_add[1])) && (stand==2))){
  221.     if(((werte_add[0]<10) || (werte_add[0]<=werte_add[1]))){
  222.       printf("%-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
  223.       werte_add[0]=werte_add[0]+blatt[deck_count].wert;
  224.       deck_count++;
  225.       printf("%30d\n", werte_add[0]);
  226.     }
  227.     else{
  228.       stand=1;
  229.     }
  230.     sw_nr=2;
  231.     if((werte_add[0])==21){
  232.       sw_nr=3;
  233.     }
  234.     if(werte_add[0]>21){
  235.       sw_nr=4;
  236.     }
  237.   }
  238.   else{
  239.     if((stand==1) && ((werte_add[0])<(werte_add[1]))){
  240.       sw_nr=4;
  241.     }
  242.     if((stand==1) && ((werte_add[0])>=(werte_add[1]))){
  243.       if(erster_zug==1){
  244.         sw_nr=2;
  245.       }
  246.       else{
  247.         sw_nr=1;
  248.       }
  249.     }
  250.   }
  251. }
  252.  
  253. void akt_COM2(karte blatt[]){
  254.   extern int sw_nr;
  255.   extern int deck_count;
  256.   deck_count_check_akt(blatt);
  257.   if((((werte_add[1]<21) || (werte_add[1]==21)) && ((stand==1) || (stand==0))) || (((werte_add[1])<(werte_add[0])) && (stand==1))){
  258.     if(((werte_add[1]<10) || (werte_add[1]<=werte_add[0]))){
  259.       printf("                                                        %-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
  260.       werte_add[1]=werte_add[1]+blatt[deck_count].wert;
  261.       deck_count++;
  262.       printf("                                                        %30d\n", werte_add[1]);
  263.     }
  264.     else{
  265.       stand=2;
  266.     }
  267.     sw_nr=1;
  268.     if(werte_add[1]==21){
  269.       sw_nr=4;
  270.     }
  271.     if(werte_add[1]>21){
  272.       sw_nr=3;
  273.     }
  274.   }
  275.   else{
  276.     if((stand==2) && ((werte_add[1])<(werte_add[0]))){
  277.       sw_nr=3;
  278.     }
  279.     if((stand==2) && ((werte_add[1])>=(werte_add[0]))){
  280.       if(erster_zug==1){
  281.         sw_nr=1;
  282.       }
  283.       else{
  284.         sw_nr=2;
  285.       }
  286.     }
  287.   }
  288. }
  289.  
  290. void COM1_w(karte blatt[]){
  291.   COM1_win_dez++;
  292.   COM2_los_dez++;
  293.   printf("COM1 hat gewonnen  *******************************************************************\n");
  294.   sw_end=1;
  295. }
  296.  
  297. void COM2_w(karte blatt[]){
  298.   COM2_win_dez++;
  299.   COM1_los_dez++;
  300.   printf("*******************************************************************  COM2 hat gewonnen\n");
  301.   sw_end=1;
  302. }
  303.  
  304. void deck_count_check_erste_karten(karte blatt[]){
  305.   if(deck_count>47){
  306.     deck_mischen(blatt);
  307.     deck_count=0;
  308.   }
  309. }
  310.  
  311. void deck_count_check_akt(karte blatt[]){
  312.   if (deck_count==51){
  313.     deck_mischen(blatt);
  314.     deck_count=0;
  315.   }
  316. }
  317.  
  318. void deck_mischen(karte blatt[]){
  319.   mischen(blatt);
  320.   printf("===================================\n");
  321.   print_karten(blatt);
  322.   printf("===================================\n");
  323. }
  324.  
  325. void auswertung(int wdh, int rsk1, int rsk2){
  326.  
  327.   printf("______________________________________________________________________________________________\n");
  328.   printf("Spiele: %d    || Gewonnen (dez) || Verloren (dez) ||\n", wdh);
  329.   printf("______________________________________________________________________________________________\n");
  330.   printf("COM1 (Risiko: %d) ||      %4d      ||      %4d      ||\n", rsk1, COM1_win_dez, COM1_los_dez);
  331.   printf("______________________________________________________________________________________________\n");
  332.   printf("COM2 (Risiko: %d) ||      %4d      ||      %4d      ||\n", rsk2, COM2_win_dez, COM2_los_dez);
  333.   printf("______________________________________________________________________________________________\n");
  334. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement