思想:
一副扑克牌共有54张,大小王各一张,每个花色各13张,花色共有4种,黑桃、红桃、方块、梅花,13*4+2=52+2=54,对就是这样,没错啦。玩斗地主会有3人参与,先从整副牌中拿出3张分给叫地主的人,然后将牌平均分为3份,即农民每人各17张牌,地主21张牌。分析完之后,我们就开始写代码啦,此次编写代码采用函数的形式,因为这样便于阅读和维护。
实现步骤:
我们先是有54张空白的牌,然后再按顺序给他们写上数,这便叫作初始化。玩斗地主的时候,系统分给我们的牌是随机的,我们无法掌控牌好坏,只能听天由命,这就需要将牌打乱,即混牌。混牌的实质就是随机将两张牌交换位置,想要乱一点就多交换几次呗。系统将打乱后的牌分给我们,我们就能看到手中的牌了,这就是显示。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int cards[54];//产生54张空白牌
void init();
void mix();
void show();
int main(){
srand(time(0));//随机初始化
//初始化
init();
//混牌
mix();
//显示
show();
return 0;
}
void init(){
int i;
for(i=0;i<54;i++){
cards[i]=i;
}
}
void mix(){
int i;
for(i=0;i<30;i++){
int a=rand()%54;//随机产生一个0~53的数
int b=rand()%54;
int t=cards[a];
cards[a]=cards[b];
cards[b]=t;
}
}
void show(){
int i;
char styles[4][8]={"黑桃","红桃","方块","梅花"};
char number[13][4]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for(i=0;i<54;i++){
if(cards[i]==52){
printf("小王 ");
}else if(cards[i]==53){
printf("大王 ");
}else{
printf("%s%s ",styles[cards[i]/13],number[cards[i]%13]);
}
if((i+1)%17==0){
printf("\n");}
}
}