纸牌游戏源程序
#define CARDNUM 52
#include
#include
typedef struct{
int* elem;
int length;
}Indexcode;
typedef struct{
int code;
bool isup;
}PreCard;
typedef struct{
PreCard Cards[CARDNUM+1]; }AllCards;
AllCards* RandArrange()
{
int j,k;
AllCards* C=(AllCards*)malloc(sizeof(AllCards));
int c[CARDNUM+1];
Indexcode icode;
icode.elem=c;
icode.length=CARDNUM;
for(int i=1;i<=CARDNUM;i++){
icode.elem[i]=i;
}
for(i=1;i<=CARDNUM;i++){
if(!icode.length)break;
j=(rand()%icode.length)+1;
C->Cards[i].code=icode.elem[j];
for(k=j;kCards[i].isup=true;
}
for(i=1;i<=CARDNUM;i++){
printf("%-d ",C->Cards[i].code);
if((i+1)%18==0) printf("\n");
}
printf("\n");
return C;
}
void Turn_Over(AllCards* C) {
int i,j;
for(i=2;i<=CARDNUM;i++){
for(j=i;j<=CARDNUM;j+=i)
C->Cards[j].isup=!C->Cards[j].isup;
}
}
void Search(AllCards* C) {
int user_input[7];
int user_compare[7];
int f=0;
int m=0;
for(int r=0;r<7;r++)
scanf("%d",&user_input[r]);
for(int i=1;i<=CARDNUM;i++)
if(C->Cards[i].isup)
user_compare[f]=C->Cards[i].code,f++;
for(int w=0;w<7;w++)
for(int q=0;q<7;q++)
if(user_input[q]==user_compare[w])
m++;
if(m>0&&m<7)
printf("还不错~猜对了%d个数字~\n",m);
else if(m==0)
printf("很遗憾~您没有猜中一个,再接再厉~\n");
else
printf("恭喜您~全部猜对~\n");
printf("公布答案,正面向上的有: \n ");
for(i=1;i<=CARDNUM;i++)
if(C->Cards[i].isup)
printf("%d ",C->Cards[i].code);
printf("\n");
}
void jieshu(){
system("cls");
printf("结束\n");
exit(0);
}
void guize(){
system("cls");
char k;
printf(" ************************************************\n");
printf(" 选择开始游戏,系统会自动洗牌,洗牌后,猜测7张\n");
printf(" 正面向上的牌,然后系统按设计的规则进行翻牌。翻牌\n");
printf(" 后,请玩家输入自己猜测的七张牌的牌号,按动回车键,\n ");
printf(" 就能看到本次游戏的信息:自己的猜测是否正确,有几\n");
printf(" 张是对的,翻拍结果又是什么。\n");
printf(" 游戏很简单,想试试自己的运气吗,马上按Y返回,\n");
printf(" 进行游戏吧~\n");
printf(" ************************************************\n");
printf(" ---------------------按Y返回--------------------\n");
scanf("%s",&k);
if(k=='y'||k=='Y')
{
system("cls");
int o;
printf(" 欢 *****************************************
玩\n");
printf(" 迎 *. . . . . . . . . . . . . . . . . . . .* 试\n");
printf(" 试 * 纸牌游戏 * 迎\n");
printf(" 玩 *. . . . . . . . . . . . . . . . . . . .* 欢\n");
printf(" *****************************************\n");
printf(" 这是一个很简单的纸牌游戏,请选择:\n");
printf(" 1:了解游戏规则;\n");
printf(" 2:开始游戏;\n");
printf(" 3:结束游戏;\n");
scanf("%d",&o);
switch(o)
{case 1:guize();break;
case 2:break;
case 3: jieshu();break;
}
}
}
void wellcome(){
system("cls");
int o;
printf(" 欢 ***************************************** 玩
\n");
printf(" 迎 *. . . . . . . . . . . . . . . . . . . .* 试\n");
printf(" 试 * 纸牌游戏 * 迎\n");
printf(" 玩 *. . . . . . . . . . . . . . . . . . . .* 欢\n");
printf(" *****************************************\n");
printf(" 这是一个很简单的纸牌游戏,请选择:\n");
printf(" 1:了解游戏规则;\n");
printf(" 2:开始游戏;\n");
printf(" 3:结束游戏;\n");
scanf("%d",&o);
switch(o)
{case 1:guize();break;
case 2:break;
case 3: jieshu();break;
}
}
void main(){
system("title 纸牌游戏");
AllCards* cards;
char c;
int i=0;
wellcome();
while(1){
if(!(i++))printf("开始第1轮游戏:\n");
else {
printf("继续吗?(Y/N)\n");
scanf("%s",&c);
if(c=='N'||c=='n'){
printf("结束");
return;
}
printf("\n第%d轮游戏:\n",i);
}
printf("洗牌中......\n");
cards=RandArrange();
printf("按规则翻面中......\n");
printf("请在1-52中猜测7个数字,用小到大输入:\n");
Turn_Over(cards);
Search(cards);
}
}