⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blackjack.c

📁 日文版畅销书籍10天学会C语言的源程序。适合入门者学习使用。希望对大家有帮助。
💻 C
字号:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int card [4][13];
char total[13] = { 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 };
char *digit[13] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
char *mark[4] = {
	"僴乕僩",
	"僟僀儎",
	"僗儁乕僪",
	"僋儘乕僶乕"
};

int drawCard(int h);

main() {
	int dealer; //僨傿乕儔乕偺堷偄偨僇乕僪偺崌寁
	int player; //僾儗僀儎乕偺堷偄偨僇乕僪偺崌寁
	int draw_digit; //堷偄偨僇乕僪偺悢
	int draw_mark; //堷偄偨僇乕僪偺儅乕僋
	char y_n; //僇乕僪傪堷偔偐堷偐側偄偐偺摎偊

	srand(time(NULL));
	printf("亂僽儔僢僋僕儍僢僋亃\n");

	//僨傿乕儔乕偑堷偔
	draw_mark = rand() % 4 + 1;
	draw_digit = rand() % 13 + 1;
	card[draw_mark-1][draw_digit-1] = 1;
	dealer = total[draw_digit-1];
	printf("僨傿乕儔乕堦枃栚丗%s偺%s\n", mark[draw_mark-1], digit[draw_digit-1]);
	printf("懠偼暁偣傞\n\n");

	//僾儗僀儎乕偑堷偔
	printf("僾儗僀儎乕堦枃栚丗");
	player = drawCard(1);
	printf("僾儗僀儎乕擇枃栚丗");
	player += drawCard(1);

	//僨傿乕儔乕俀枃栚埲崀
	do{
		dealer += drawCard(0);
	} while(dealer <= 16); 

	//僾儗僀儎乕俁枃栚埲崀
	while(player < 21) {
		printf("傕偆1枃堷偒傑偡偐?(y/n) > ");
		scanf("%c" , &y_n);
		while (getchar() != '\n') {  }
		if(y_n == 'y') {
			player += drawCard(1);
		} else if (y_n == 'n') { break; }
	}
  	
	printf("\n僨傿乕儔乕丗%d揰丂僾儗僀儎乕丗%d揰\n", dealer, player);

	//彑攕偺敾掕
	if ((dealer <= 21 && player > 21) || (dealer <= 21 && dealer > player)) {
		printf("僨傿乕儔乕偺彑偪両\n");
	} else if ((player <= 21 && dealer > 21)
				 || (player <= 21 && player > dealer)) {
		printf("僾儗僀儎乕偺彑偪両\n");
	} else {
		printf("堷偒暘偗\n");
    }
	return 0;
}

/*僇乕僪傪堷偔娭悢
堷悢 h丗僇乕僪撪梕昞帵僼儔僌
		僾儗僀儎乕僞乕儞偺帪偼1丄僨傿乕儔乕僞乕儞偺帪偼0
栠傝抣 r:堷偄偨僇乕僪偺揰悢
*/
int drawCard (int h) {
	int draw_mark, draw_digit; //堷偄偨僇乕僪偺儅乕僋偲悢
	int r; //堷偄偨僇乕僪偺揰悢
	char y_n; //僇乕僪傪11偲偟偰寁嶼偡傞偐偳偆偐偺摎偊	
	
	do {
		draw_mark = rand() % 4 + 1;
		draw_digit = rand() % 13 + 1;
	} while (card[draw_mark-1][draw_digit-1]);
	card[draw_mark-1][draw_digit-1] = 1;
	if(h) {
		printf("%s偺%s\n", mark[draw_mark-1], digit[draw_digit-1]);
	}

	if(h && draw_digit == 1) { //僾儗僀儎乕僞乕儞偱堷偄偨悢偑1偺偲偒
		do {
			printf("11偲偟偰寁嶼偟傑偡偐丠(y/n) > ");
			scanf("%c" , &y_n);
			while (getchar() != '\n') {  }
			if(y_n == 'y') { r = total[draw_digit-1];  }
			else if (y_n == 'n') { r = 1;  }
		} while(!(y_n == 'y' || y_n == 'n'));
	} else { r = total[draw_digit-1]; }
	return r;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -