📄 暗记扑克牌.cpp
字号:
//计算机从一副扑克牌(54张)中任意抽出27张,摆放在不同的三行上(每行9张),
//用户"暗记"某张纸牌,而后告诉计算机所"暗记"的那张纸牌处于哪一行中;之后计算机再两次将纸牌重新摆放,
//并让用户再回答两次相同的提问(那张纸牌在重新摆放后又处在哪一行上);此时计算机会将用户所"暗记"的
//那张纸牌给挑出来。
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <cmath>
#include <process.h>
#include<time.h>
int v1,v2;
int b[27]; //全局变量
char * mapping( int x) //随机数映射为字符
{
/*char c[4][15];
for(int i=0;i<14;i++)
for(int j=0;j<4;j++)
c[i][j]=*/
switch(x)
{
case 1:return "a-1";break; //太繁了,可当时就没想到别的方法,编程太少了!
case 2:return "b-1";break;
case 3:return "c-1";break;
case 4:return "d-1";break;
case 5:return "a-2";break;
case 6:return "b-2";break;
case 7:return "c-2";break;
case 8:return "d-2";break;
case 9:return "a-3";break;
case 10:return "b-3";break;
case 11:return "c-3";break;
case 12:return "d-3";break;
case 13:return "a-4";break;
case 14:return "b-4";break;
case 15:return "c-4";break;
case 16:return "d-4";break;
case 17:return "a-5";break;
case 18:return "b-5";break;
case 19:return "c-5";break;
case 20:return "d-5";break;
case 21:return "a-6";break;
case 22:return "b-6";break;
case 23:return "c-6";break;
case 24:return "d-6";break;
case 25:return "a-7";break;
case 26:return "b-7";break;
case 27:return "c-7";break;
case 28:return "d-7";break;
case 29:return "a-8";break;
case 30:return "b-8";break;
case 31:return "c-8";break;
case 32:return "d-8";break;
case 33:return "a-9";break;
case 34:return "b-9";break;
case 35:return "c-9";break;
case 36:return "d-9";break;
case 37:return "a-10";break;
case 38:return "b-10";break;
case 39:return "c-10";break;
case 40:return "d-10";break;
case 41:return "a-J";break;
case 42:return "b-J";break;
case 43:return "c-J";break;
case 44:return "d-J";break;
case 45:return "a-Q";break;
case 46:return "b-Q";break;
case 47:return "c-Q";break;
case 48:return "d-Q";break;
case 49:return "a-K";break;
case 50:return "b-K";break;
case 51:return "c-K";break;
case 52:return "d-K";break;
case 53:return "KING1";break;
case 54:return "KING2";break;
default:exit(1);
}
}
void show1() // 输出初态
{
int a[27];
srand( (unsigned)time( NULL ) );
a[0]=rand()%54;
cout<<"Line 1 "<<mapping(a[0])<<" ";
for (int i=1;i<27;i++)
{
a[i]=rand()%54;
int bool1=1;
for (int t=i-1;t>=0;t--)
{
if (a[i]==a[t])
{
bool1=0;
i=i-1;break;
}
}
while(bool1)
{ int x =a[i];
cout<<mapping(x)<<" ";
bool1=0;
}
if(i==8) cout<<endl<<"Line 2 ";
if(i==17) cout<<endl<<"Line 3 ";
}
for(int k=0;k<27;k++)
{
b[k]=a[k];
}
cout<<endl;
}
void show2(int n, int *a)//按某种算法重排列,输出
{
int temp;
switch(n)
{
case 1:{for(int i=0;i<3;i++)
{temp=a[i];a[i]=a[i+15];a[i+15]=temp;}
for(int j=3;j<6;j++)
{temp=a[j];a[j]=a[j+24];a[j+24]=temp;}
}
break;
case 2:{for(int k=9;k<12;k++)
{temp=a[k];a[k]=a[k-3];a[k-3]=temp;}
for(int l=12;l<15;l++)
{temp=a[l];a[l]=a[l+12];a[l+12]=temp;}
}
break;
case 3:{for(int m=18;m<21;m++)
{temp=a[m];a[m]=a[m-12];a[m-12]=temp;}
for(int t=21;t<24;t++)
{temp=a[t];a[t]=a[t-6];a[t-6]=temp;}
}
break;
default:exit(1);
break;
}
cout<<"Line1 ";
for(int r=0;r<27;r++)
{
cout<<mapping(a[r])<<" ";
if(r==8)cout<<endl<<"Line2 ";
if(r==17)cout<<endl<<"Line3 ";
}
cout<<endl;
}
void show3(int n,int *a)//再按某种算法重排列,输出
{ int h;
if(v1==1&&n==1)h=1;
else if(v1==1&&n==2)h=2;
else if(v1==1&&n==3)h=3;
else if(v1==2&&n==1)h=4;
else if(v1==2&&n==2)h=5;
else if(v1==2&&n==3)h=6;
else if(v1==3&&n==1)h=7;
else if(v1==3&&n==2)h=8;
else if(v1==3&&n==3)h=9;
int temp;
switch(h)
{
case 1:
case 4:
case 7:
{
temp=a[6];a[6]=a[17];a[17]=temp;
temp=a[7];a[7]=a[26];a[26]=temp;
}break;
case 2:
case 5:
case 8:
{
temp=a[15];a[15]=a[8];a[8]=temp;
temp=a[16];a[16]=a[26];a[26]=temp;
}break;
case 3:
case 6:
case 9:
{
temp=a[24];a[24]=a[8];a[8]=temp;
temp=a[17];a[17]=a[25];a[25]=temp;
}break;
default:break;
}
cout<<"Line1 ";
for(int r=0;r<27;r++)
{
cout<<mapping(a[r])<<" ";
if(r==8)cout<<endl<<"Line2 ";
if(r==17)cout<<endl<<"Line3 ";
}
cout<<endl;
}
int show4(int n,int *a)//得出最后的结果;
{
if(n==1) return a[8];
if(n==2) return a[17];
if(n==3) return a[26];
return 0;
}
void main()
{
show1();
int n;
cout<<"Remember a card, and tell me what line it reside in(1/2/3):";
cin>>n;
v1=n;
show2(n,b);
cout<<"What line the card you remembered reside in now (1/2/3) :";
cin>>n;
v2=n;
show3(n,b);
cout<<"What line the card you remembered reside in now (1/2/3) : ";
cin>>n;
int u;
u=show4(n,b);
cout<<"Your remembered card is :"<<mapping(u)<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -