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
- int erster_zug=1;
- int COM1_win_dez=0;
- int COM2_win_dez=0;
- int COM1_los_dez=0;
- int COM2_los_dez=0;
- int stand=0;
- int sw_end=0;
- int sw_nr=1;
- int deck_count=0;
- int werte_add[2];
- 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[], int wdh, int anz, int rsk1, int rsk2);
- void erste_karten(karte blatt[]);
- void sw_erster_zug(karte blatt[]);
- void akt_COM1_erster(karte blatt[]);
- void akt_COM2_erster(karte blatt[]);
- void akt_COM1(karte blatt[]);
- void akt_COM2(karte blatt[]);
- void COM1_w(karte blatt[]);
- void COM2_w(karte blatt[]);
- void deck_count_check_erste_karten(karte blatt[]);
- void deck_count_check_akt(karte blatt[]);
- void deck_mischen(karte blatt[]);
- void mischen(karte blatt[]);
- void auswertung(int wdh, int rsk1, int rsk2);
- int main(){
- int deck_count=0;
- int spl_wdh=0;
- int spl_anz=0;
- int spl_rsk1=0;
- int spl_rsk2=0;
- 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, spl_wdh, spl_rsk1, spl_rsk2, spl_anz);
- auswertung(spl_wdh, spl_rsk1, spl_rsk2);
- }
- 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[], int wdh, int anz, int rsk1, int rsk2){
- for(int i=0; i<wdh;i++){
- erste_karten(blatt);
- sw_erster_zug(blatt);
- }
- }
- void erste_karten(karte blatt[]){
- extern int deck_count;
- deck_count_check_erste_karten(blatt);
- printf("---------------------------------------------------------------------------------------\n");
- printf("%-10s %-10s Wert: %2d",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
- werte_add[0]=blatt[deck_count].wert;
- deck_count++;
- printf(" %-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
- werte_add[1]=blatt[deck_count].wert;
- deck_count++;
- printf("%-10s %-10s Wert: %2d",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
- if((werte_add[0]==11) && blatt[deck_count].wert==11){
- werte_add[0]=21;
- }
- else{
- werte_add[0]=werte_add[0]+blatt[deck_count].wert;
- }
- deck_count++;
- printf(" %-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
- if((werte_add[1]==11) && (blatt[deck_count].wert==11)){
- werte_add[1]=21;
- }
- else{
- werte_add[1]=werte_add[1]+blatt[deck_count].wert;
- }
- deck_count++;
- printf("%30d", werte_add[0]);
- printf(" %30d\n",werte_add[1]);
- printf("---------------------------------------------------------------------------------------\n");
- }
- void sw_erster_zug(karte blatt[]){
- switch(erster_zug){
- case 1:
- akt_COM1_erster(blatt);
- break;
- case 2:
- akt_COM2_erster(blatt);
- break;
- }
- }
- void akt_COM1_erster(karte blatt[]){
- extern int sw_nr;
- while(sw_end==0){
- switch(sw_nr){
- case 1:
- akt_COM1(blatt);
- break;
- case 2:
- akt_COM2(blatt);
- break;
- case 3:
- COM1_w(blatt);
- break;
- case 4:
- COM2_w(blatt);
- break;
- }
- }
- werte_add[0]=0;
- werte_add[1]=0;
- sw_nr=1;
- sw_end=0;
- stand=0;
- erster_zug=2;
- }
- void akt_COM2_erster(karte blatt[]){
- extern int sw_nr;
- while(sw_end==0){
- switch(sw_nr){
- case 1:
- akt_COM2(blatt);
- break;
- case 2:
- akt_COM1(blatt);
- break;
- case 3:
- COM1_w(blatt);
- break;
- case 4:
- COM2_w(blatt);
- break;
- }
- }
- werte_add[0]=0;
- werte_add[1]=0;
- sw_nr=1;
- sw_end=0;
- stand=0;
- erster_zug=1;
- }
- void akt_COM1(karte blatt[]){
- extern int deck_count;
- extern int sw_nr;
- deck_count_check_akt(blatt);
- if((((werte_add[0]<21) || (werte_add[0]==21)) && ((stand==2) || (stand==0))) || (((werte_add[0])<(werte_add[1])) && (stand==2))){
- if(((werte_add[0]<10) || (werte_add[0]<=werte_add[1]))){
- printf("%-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
- werte_add[0]=werte_add[0]+blatt[deck_count].wert;
- deck_count++;
- printf("%30d\n", werte_add[0]);
- }
- else{
- stand=1;
- }
- sw_nr=2;
- if((werte_add[0])==21){
- sw_nr=3;
- }
- if(werte_add[0]>21){
- sw_nr=4;
- }
- }
- else{
- if((stand==1) && ((werte_add[0])<(werte_add[1]))){
- sw_nr=4;
- }
- if((stand==1) && ((werte_add[0])>=(werte_add[1]))){
- if(erster_zug==1){
- sw_nr=2;
- }
- else{
- sw_nr=1;
- }
- }
- }
- }
- void akt_COM2(karte blatt[]){
- extern int sw_nr;
- extern int deck_count;
- deck_count_check_akt(blatt);
- if((((werte_add[1]<21) || (werte_add[1]==21)) && ((stand==1) || (stand==0))) || (((werte_add[1])<(werte_add[0])) && (stand==1))){
- if(((werte_add[1]<10) || (werte_add[1]<=werte_add[0]))){
- printf(" %-10s %-10s Wert: %2d\n",f2s[blatt[deck_count].farbe],blatt[deck_count].name,blatt[deck_count].wert);
- werte_add[1]=werte_add[1]+blatt[deck_count].wert;
- deck_count++;
- printf(" %30d\n", werte_add[1]);
- }
- else{
- stand=2;
- }
- sw_nr=1;
- if(werte_add[1]==21){
- sw_nr=4;
- }
- if(werte_add[1]>21){
- sw_nr=3;
- }
- }
- else{
- if((stand==2) && ((werte_add[1])<(werte_add[0]))){
- sw_nr=3;
- }
- if((stand==2) && ((werte_add[1])>=(werte_add[0]))){
- if(erster_zug==1){
- sw_nr=1;
- }
- else{
- sw_nr=2;
- }
- }
- }
- }
- void COM1_w(karte blatt[]){
- COM1_win_dez++;
- COM2_los_dez++;
- printf("COM1 hat gewonnen *******************************************************************\n");
- sw_end=1;
- }
- void COM2_w(karte blatt[]){
- COM2_win_dez++;
- COM1_los_dez++;
- printf("******************************************************************* COM2 hat gewonnen\n");
- sw_end=1;
- }
- void deck_count_check_erste_karten(karte blatt[]){
- if(deck_count>47){
- deck_mischen(blatt);
- deck_count=0;
- }
- }
- void deck_count_check_akt(karte blatt[]){
- if (deck_count==51){
- deck_mischen(blatt);
- deck_count=0;
- }
- }
- void deck_mischen(karte blatt[]){
- mischen(blatt);
- printf("===================================\n");
- print_karten(blatt);
- printf("===================================\n");
- }
- void auswertung(int wdh, int rsk1, int rsk2){
- printf("______________________________________________________________________________________________\n");
- printf("Spiele: %d || Gewonnen (dez) || Verloren (dez) ||\n", wdh);
- printf("______________________________________________________________________________________________\n");
- printf("COM1 (Risiko: %d) || %4d || %4d ||\n", rsk1, COM1_win_dez, COM1_los_dez);
- printf("______________________________________________________________________________________________\n");
- printf("COM2 (Risiko: %d) || %4d || %4d ||\n", rsk2, COM2_win_dez, COM2_los_dez);
- printf("______________________________________________________________________________________________\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement