/* dealing program */ #include char suit[4] = {'S','H','D','C'}; char card[14] = {"AKQJT98765432"}; /* special cards for Tichu */ char special[4] = {'D','P','1','d'}; /* dragon, pheonix, wish, dog */ main(argc,argv) int argc; char **argv; { int deck[56]; int deals; /* how many */ int i; if (argc == 2) deals = atoi(argv[1]); else deals = 1; initdeck(deck); for (i=0;i deck[j]) { temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } } } for (i=14;i<28;i++) { for (j=i+1;j<28;j++) { if (deck[i] > deck[j]) { temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } } } for (i=28;i<42;i++) { for (j=i+1;j<42;j++) { if (deck[i] > deck[j]) { temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } } } for (i=42;i<56;i++) { for (j=i+1;j<56;j++) { if (deck[i] > deck[j]) { temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } } } return; } printdeal(deck) int *deck; { int i,j; int count; sorthands(deck); /* print the north hand */ printf(" S: "); for (i=0;i<14;i++) { if (deck[i] >= 13) break; printf("%c",card[deck[i]]); } printf("\n"); printf(" H: "); for (i=0;i<14;i++) { if (deck[i] >= 26) break; if (deck[i] >= 13) printf("%c",card[deck[i]-13]); } printf("\n"); printf(" D: "); for (i=0;i<14;i++) { if (deck[i] >= 39) break; if (deck[i] >= 26) printf("%c",card[deck[i]-26]); } printf("\n"); printf(" C: "); for (i=0;i<14;i++) { if (deck[i] >= 52) break; if (deck[i] >= 39) printf("%c",card[deck[i]-39]); } printf("\n"); /* print special cards */ printf(" SP: "); for (i=0;i<14;i++) { if (deck[i] >= 52) printf("%c",special[deck[i]-52]); } printf("\n"); /* print West and East hands */ printf("S: "); count = 0; for (i=42;i<56;i++) { if (deck[i] >= 13) break; printf("%c",card[deck[i]]); count++; } /* add spaces */ for (i=0;i<14-count;i++) printf(" "); printf("S: "); for (i=28;i<42;i++) { if (deck[i] >= 13) break; printf("%c",card[deck[i]]); } printf("\n"); printf("H: "); count = 0; for (i=42;i<56;i++) { if (deck[i] >= 26) break; if (deck[i] >= 13) { printf("%c",card[deck[i]-13]); count++; } } for (i=0;i<14-count;i++) printf(" "); printf("H: "); for (i=28;i<42;i++) { if (deck[i] >= 26) break; if (deck[i] >= 13) printf("%c",card[deck[i]-13]); } printf("\n"); printf("D: "); count = 0; for (i=42;i<56;i++) { if (deck[i] >= 39) break; if (deck[i] >= 26) { printf("%c",card[deck[i]-26]); count++; } } for (i=0;i<14-count;i++) printf(" "); printf("D: "); for (i=28;i<42;i++) { if (deck[i] >= 39) break; if (deck[i] >= 26) printf("%c",card[deck[i]-26]); } printf("\n"); printf("C: "); count = 0; for (i=42;i<56;i++) { if (deck[i] >= 52) break; if (deck[i] >= 39) { printf("%c",card[deck[i]-39]); count++; } } for (i=0;i<14-count;i++) printf(" "); printf("C: "); for (i=28;i<42;i++) { if (deck[i] >= 52) break; if (deck[i] >= 39) printf("%c",card[deck[i]-39]); } printf("\n"); /* do the special cards */ printf("SP: "); count = 1; /* SP is one space longer than S/H/D/C */ for (i=42;i<56;i++) { if (deck[i] >= 52) { printf("%c",special[deck[i]-52]); count++; } } for (i=0;i<14-count;i++) printf(" "); printf("SP: "); for (i=28;i<42;i++) { if (deck[i] >= 52) printf("%c",special[deck[i]-52]); } printf("\n"); /* print the south hand */ printf(" S: "); for (i=14;i<28;i++) { if (deck[i] >= 13) break; printf("%c",card[deck[i]]); } printf("\n"); printf(" H: "); for (i=14;i<28;i++) { if (deck[i] >= 26) break; if (deck[i] >= 13) printf("%c",card[deck[i]-13]); } printf("\n"); printf(" D: "); for (i=14;i<28;i++) { if (deck[i] >= 39) break; if (deck[i] >= 26) printf("%c",card[deck[i]-26]); } printf("\n"); printf(" C: "); for (i=14;i<28;i++) { if (deck[i] >= 52) break; if (deck[i] >= 39) printf("%c",card[deck[i]-39]); } printf("\n"); /* print special cards */ printf(" SP: "); for (i=14;i<28;i++) { if (deck[i] >= 52) printf("%c",special[deck[i]-52]); } printf("\n"); return; }