Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define N_KARTEN 52
- struct zaehler{
- int deck_count;
- int erster_zug;
- int COM1_win_dez;
- int COM2_win_dez;
- int COM1_los_dez;
- int COM2_los_dez;
- int stand;
- int sw_end;
- int sw_nr;
- int werte_add_1;
- int werte_add_2;
- } counter={0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0};
- typedef struct{
- char name[10];
- int farbe;
- int wert;
- } karte;
- char f2s[][10]={"Karo","Herz","Piek","Kreuz"};
- void anmeldung(int *wdh, int *rsk1, int *rsk2, int *spl_anz);
- void swap(karte *a, karte *b);
- void print_karten(karte blatt[]);
- void spiel(karte blatt[], struct zaehler *Zaehler, int wdh, int anz, int rsk1, int rsk2);
- void erste_karten(karte blatt[], struct zaehler *Zaehler);
- void sw_erster_zug(karte blatt[], struct zaehler *Zaehler);
- void akt_COM1_erster(karte blatt[], struct zaehler *Zaehler);
- void akt_COM2_erster(karte blatt[], struct zaehler *Zaehler);
- void akt_COM1(karte blatt[], struct zaehler *Zaehler);
- void akt_COM2(karte blatt[], struct zaehler *Zaehler);
- void COM1_w(struct zaehler *Zaehler);
- void COM2_w(struct zaehler *Zaehler);
- void deck_count_check_erste_karten(karte blatt[], struct zaehler *Zaehler);
- void deck_count_check_akt(karte blatt[], struct zaehler *Zaehler);
- void deck_mischen(karte blatt[], struct zaehler *Zaehler);
- void mischen(karte blatt[]);
- void auswertung(int wdh, int rsk1, int rsk2, struct zaehler *Zaehler);
- int main(){
- int spl_wdh;
- int spl_anz;
- int spl_rsk1;
- int spl_rsk2;
- anmeldung(&spl_wdh, &spl_rsk1, &spl_rsk2, &spl_anz);
- karte blatt[N_KARTEN]={
- {"zwei",0,2},{"drei",0,3},{"vier",0,4},{"fuenf",0,5},{"sechs",0,6},{"sieben",0,7},{"acht",0,8},
- {"neun",0,9},{"zehn",0,10},{"bube",0,10},{"dame",0,10},{"koenig",0,10},{"ass",0,11},
- {"zwei",1,2},{"drei",1,3},{"vier",1,4},{"fuenf",1,5},{"sechs",1,6},{"sieben",1,7},{"acht",1,8},
- {"neun",1,9},{"zehn",1,10},{"bube",1,10},{"dame",1,10},{"koenig",1,10},{"ass",1,11},
- {"zwei",2,2},{"drei",2,3},{"vier",2,4},{"fuenf",2,5},{"sechs",2,6},{"sieben",2,7},{"acht",2,8},
- {"neun",2,9},{"zehn",2,10},{"bube",2,10},{"dame",2,10},{"koenig",2,10},{"ass",2,11},
- {"zwei",3,2},{"drei",3,3},{"vier",3,4},{"fuenf",3,5},{"sechs",3,6},{"sieben",3,7},{"acht",3,8},
- {"neun",3,9},{"zehn",3,10},{"bube",3,10},{"dame",3,10},{"koenig",3,10},{"ass",3,11}};
- print_karten(blatt);
- srand(time(NULL));
- mischen(blatt);
- printf("===================================\n");
- printf("Weiter mit <return>\n");
- getchar();
- print_karten(blatt);
- spiel(blatt, &counter, spl_wdh, spl_rsk1, spl_rsk2, spl_anz);
- auswertung(spl_wdh, spl_rsk1, spl_rsk2, &counter);
- }
- void anmeldung(int *wdh, int *rsk1, int *rsk2, int *anz) {
- printf("Willkommen bei 17 und 4. Dies ist der Demomodus wo ein COM gegen einen anderen COM spielt.\n");
- printf("Es gibt 2 Aktionen die Sie wählen können:\n");
- printf("Wie viele Spiele wollen Sie spielen: ");
- scanf("%d", wdh);
- printf("Die COM's können in verschiedenen Risikobereitschaften ihre Züge wählen: 1: ganz ängstlich\n");
- printf(" 2: etwas ängstlich\n");
- printf(" 3: normal\n");
- printf(" 4: etwas mutiger\n");
- printf(" 5: sehr mutig\n");
- printf("Risikobereitschaft COM1: ");
- scanf("%d", rsk1);
- printf("Risikobereitschaft COM2: ");
- scanf("%d", rsk2);
- printf("Sollen alle Spielzüge gezeigt werden: 1 - Ja\n");
- printf(" 2 - Nein\n");
- scanf("%d", anz);
- }
- void print_karten(karte blatt[]){
- int i;
- for(i=0;i<N_KARTEN;i++){
- printf("%-10s %-10s Wert: %2d\n",f2s[blatt[i].farbe],blatt[i].name,blatt[i].wert);
- }
- }
- void swap(karte *a, karte *b){
- karte tmp;
- tmp=*a;
- *a=*b;
- *b=tmp;
- }
- void mischen(karte blatt[]){
- int i;
- int a,b;
- for(i=0;i<N_KARTEN*4;i++){
- a=rand()%N_KARTEN;
- b=rand()%N_KARTEN;
- swap(&blatt[a],&blatt[b]);
- }
- }
- void spiel(karte blatt[], struct zaehler *Zaehler, int wdh, int anz, int rsk1, int rsk2){
- for(int i=0; i<wdh;i++){
- erste_karten(blatt, &counter);
- sw_erster_zug(blatt, &counter);
- }
- }
- void erste_karten(karte blatt[], struct zaehler *Zaehler){
- deck_count_check_erste_karten(blatt, &counter);
- printf("---------------------------------------------------------------------------------------\n");
- printf("%-10s %-10s Wert: %2d",f2s[blatt[(*Zaehler).deck_count].farbe],blatt[(*Zaehler).deck_count].name,blatt[(*Zaehler).deck_count].wert);
- (*Zaehler).werte_add_1=blatt[(*Zaehler).deck_count].wert;
- counter.deck_count++;
- printf(" %-10s %-10s Wert: %2d\n",f2s[blatt[(*Zaehler).deck_count].farbe],blatt[(*Zaehler).deck_count].name,blatt[(*Zaehler).deck_count].wert);
- counter.werte_add_2=blatt[(*Zaehler).deck_count].wert;
- counter.deck_count++;
- printf("%-10s %-10s Wert: %2d",f2s[blatt[(*Zaehler).deck_count].farbe],blatt[(*Zaehler).deck_count].name,blatt[(*Zaehler).deck_count].wert);
- if(((*Zaehler).werte_add_1==11) && blatt[(*Zaehler).deck_count].wert==11){
- counter.werte_add_1=21;
- }
- else{
- counter.werte_add_1=counter.werte_add_1+blatt[(*Zaehler).deck_count].wert;
- }
- counter.deck_count++;
- printf(" %-10s %-10s Wert: %2d\n",f2s[blatt[(*Zaehler).deck_count].farbe],blatt[(*Zaehler).deck_count].name,blatt[(*Zaehler).deck_count].wert);
- if(((*Zaehler).werte_add_2==11) && (blatt[(*Zaehler).deck_count].wert==11)){
- counter.werte_add_2=21;
- }
- else{
- counter.werte_add_2=counter.werte_add_2+blatt[(*Zaehler).deck_count].wert;
- }
- counter.deck_count++;
- printf("%30d", counter.werte_add_1);
- printf(" %30d\n", counter.werte_add_2);
- printf("---------------------------------------------------------------------------------------\n");
- }
- void sw_erster_zug(karte blatt[], struct zaehler *Zaehler){
- switch((*Zaehler).erster_zug){
- case 1:
- akt_COM1_erster(blatt, &counter);
- break;
- case 2:
- akt_COM2_erster(blatt, &counter);
- break;
- }
- }
- void akt_COM1_erster(karte blatt[], struct zaehler *Zaehler){
- while((*Zaehler).sw_end==0){
- switch((*Zaehler).sw_nr){
- case 1:
- akt_COM1(blatt, &counter);
- break;
- case 2:
- akt_COM2(blatt, &counter);
- break;
- case 3:
- COM1_w(&counter);
- break;
- case 4:
- COM2_w(&counter);
- break;
- }
- }
- counter.werte_add_1=0;
- counter.werte_add_2=0;
- counter.sw_nr=1;
- counter.sw_end=0;
- counter.stand=0;
- counter.erster_zug=2;
- }
- void akt_COM2_erster(karte blatt[], struct zaehler *Zaehler){
- while((*Zaehler).sw_end==0){
- switch((*Zaehler).sw_nr){
- case 1:
- akt_COM2(blatt, &counter);
- break;
- case 2:
- akt_COM1(blatt, &counter);
- break;
- case 3:
- COM1_w(&counter);
- break;
- case 4:
- COM2_w(&counter);
- break;
- }
- }
- counter.werte_add_1=0;
- counter.werte_add_2=0;
- counter.sw_nr=1;
- counter.sw_end=0;
- counter.stand=0;
- counter.erster_zug=1;
- }
- void akt_COM1(karte blatt[], struct zaehler *Zaehler){
- deck_count_check_akt(blatt, &counter);
- if(((((*Zaehler).werte_add_1<21) || ((*Zaehler).werte_add_1==21)) && (((*Zaehler).stand==2) || ((*Zaehler).stand==0))) || ((((*Zaehler).werte_add_1)<((*Zaehler).werte_add_2)) && ((*Zaehler).stand==2))){
- if((((*Zaehler).werte_add_1<10) || ((*Zaehler).werte_add_1<=(*Zaehler).werte_add_2))){
- printf("%-10s %-10s Wert: %2d\n",f2s[blatt[(*Zaehler).deck_count].farbe],blatt[(*Zaehler).deck_count].name,blatt[(*Zaehler).deck_count].wert);
- counter.werte_add_1=counter.werte_add_1+blatt[(*Zaehler).deck_count].wert;
- counter.deck_count++;
- printf("%30d\n", counter.werte_add_1);
- }
- else{
- counter.stand=1;
- }
- counter.sw_nr=2;
- if((counter.werte_add_1)==21){
- counter.sw_nr=3;
- }
- if(counter.werte_add_1>21){
- counter.sw_nr=4;
- }
- }
- else{
- if(((*Zaehler).stand==1) && (((*Zaehler).werte_add_1)<((*Zaehler).werte_add_2))){
- counter.sw_nr=4;
- }
- if(((*Zaehler).stand==1) && (((*Zaehler).werte_add_1)>=((*Zaehler).werte_add_2))){
- if((*Zaehler).erster_zug==1){
- counter.sw_nr=2;
- }
- else{
- counter.sw_nr=1;
- }
- }
- }
- }
- void akt_COM2(karte blatt[], struct zaehler *Zaehler){
- deck_count_check_akt(blatt, &counter);
- if(((((*Zaehler).werte_add_2<21) || ((*Zaehler).werte_add_2==21)) && (((*Zaehler).stand==1) || ((*Zaehler).stand==0))) || ((((*Zaehler).werte_add_2)<((*Zaehler).werte_add_1)) && ((*Zaehler).stand==1))){
- if((((*Zaehler).werte_add_2<10) || ((*Zaehler).werte_add_2<=(*Zaehler).werte_add_1))){
- printf(" %-10s %-10s Wert: %2d\n",f2s[blatt[(*Zaehler).deck_count].farbe],blatt[(*Zaehler).deck_count].name,blatt[(*Zaehler).deck_count].wert);
- counter.werte_add_2=counter.werte_add_2+blatt[(*Zaehler).deck_count].wert;
- counter.deck_count++;
- printf(" %30d\n", counter.werte_add_2);
- }
- else{
- counter.stand=2;
- }
- counter.sw_nr=1;
- if(counter.werte_add_2==21){
- counter.sw_nr=4;
- }
- if(counter.werte_add_2>21){
- counter.sw_nr=3;
- }
- }
- else{
- if(((*Zaehler).stand==2) && ((counter.werte_add_2)<((*Zaehler).werte_add_1))){
- counter.sw_nr=3;
- }
- if(((*Zaehler).stand==2) && (((*Zaehler).werte_add_2)>=((*Zaehler).werte_add_1))){
- if((*Zaehler).erster_zug==1){
- counter.sw_nr=1;
- }
- else{
- counter.sw_nr=2;
- }
- }
- }
- }
- void COM1_w(struct zaehler *Zaehler){
- counter.COM1_win_dez++;
- counter.COM2_los_dez++;
- printf("COM1 hat gewonnen *******************************************************************\n");
- counter.sw_end=1;
- }
- void COM2_w(struct zaehler *Zaehler){
- counter.COM2_win_dez++;
- counter.COM1_los_dez++;
- printf("******************************************************************* COM2 hat gewonnen\n");
- counter.sw_end=1;
- }
- void deck_count_check_erste_karten(karte blatt[], struct zaehler *Zaehler){
- if((*Zaehler).deck_count>47){
- deck_mischen(blatt, &counter);
- counter.deck_count=0;
- }
- }
- void deck_count_check_akt(karte blatt[], struct zaehler *Zaehler){
- if ((*Zaehler).deck_count==51){
- deck_mischen(blatt, &counter);
- counter.deck_count=0;
- }
- }
- void deck_mischen(karte blatt[], struct zaehler *Zaehler){
- mischen(blatt);
- printf("===================================\n");
- print_karten(blatt);
- printf("===================================\n");
- }
- void auswertung(int wdh, int rsk1, int rsk2, struct zaehler *Zaehler){
- printf("______________________________________________________________________________________________\n");
- printf("Spiele: %d || Gewonnen (dez) || Verloren (dez) ||\n", wdh);
- printf("______________________________________________________________________________________________\n");
- printf("COM1 (Risiko: %d) || %4d || %4d ||\n", rsk1, (*Zaehler).COM1_win_dez, (*Zaehler).COM1_los_dez);
- printf("______________________________________________________________________________________________\n");
- printf("COM2 (Risiko: %d) || %4d || %4d ||\n", rsk2, (*Zaehler).COM2_win_dez, (*Zaehler).COM2_los_dez);
- printf("______________________________________________________________________________________________\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement