Skip to content

Instantly share code, notes, and snippets.

@FloydHsiu
Created December 28, 2016 14:27
Show Gist options
  • Save FloydHsiu/8603819019a4e95d824d8624e9d64fbd to your computer and use it in GitHub Desktop.
Save FloydHsiu/8603819019a4e95d824d8624e9d64fbd to your computer and use it in GitHub Desktop.
typedef struct Cards
{
int face;
char* suit;
} Card;
char spade[5];
char heart[5];
char diamond[7];
char club[4];
strcpy(spade, "spade");
strcpy(heart, "heart");
strcpy(diamond, "diamond");
strcpy(club, "club");
int main(){
int cards[52];
Card* aicards[10];
Card* usercards[10];
char input[5];
int aipicktimes = 0, userpicktimes = 0;
for(i=0; i<10; i++){
aicards[i] = NULL;
usercards[i] = NULL;
}
srand(time(NULL));
for(i=0; i<52; i++){
cards[i] = 0;
}
for(aipicktimes; aipicktimes<2; aipicktimes++){
aicards[aipicktimes] = output(cards);
}
for(userpicktimes; userpicktimes<2; userpicktimes++){
usercards[i] = output(cards);
}
//print
printf("%d %s", aicards[0]->face, aicards[0]->suit);
//Hit or Stand
while(1){
scanf("%s", input);
if( strcmp(input, "Hit") == 0){
usercards[++userpicktimes] = output(cards);
if( face_sum(aicards) < 17 ){
aicards[++aipicktimes] = output(cards);
}
//print
if( face_sum(usercards) > 21 || face_sum(aicards) > 21){
break;
}
}
else if( strcmp(input, "Stand") == 0){
if( face_sum(aicards) < 17 ){
aicards[++aipicktimes] = output(cards);
}
else{
break;
}
//print
if( face_sum(usercards) > 21 || face_sum(aicards) > 21){
break;
}
}
else{
//print error
}
}
int aisum = face_sum(aicards), usersum = face_sum(usercards);
if( usersum > 21 && aisum > 21){
//print ai win
}
else if( usersum > 21 ){
//print ai win
}
else if( aisum > 21 ){
//print user win
}
else if( usersum > aisum ){
//print user win
}
else if( usersum < aisum ){
//print ai win
}
else if( usersum == aisum ){
//draw
}
}
Card* output(int* cards){
int randnum;
do{
randnum = rand()%52;
}while( cards[randnum] == 1)
cards[randnum] = 1;
Card *card = malloc(sizeof(Card));
card->face = num%13+1;//數字1~13
switch(num/13){
case 0:
card->suit = spade;
break;
case 1:
card->suit = heart;
break;
case 2:
card->suit = diamond;
break;
case 3:
card->suit = club;
break;
}
return card;
}
int face_sum(Card** cardget){
int i = 0, sum = 0, face;
while( cardget[i] != NULL){
face = cardget[i]->face;
if( face > 1 && face < 11){
sum = sum + face;
}
else if( face >= 11){
sum = sum + 10;
}
else{ //face == 1
if( sum + 11 > 21){
sum = sum + 1;
}
else{
sum = sum + 11;
}
}
}
return sum;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment