翻牌游戏
#include<iostream>#include<time.h>
using namespace std;
void main()
{
srand((unsigned)time(NULL));
//pk 与result相对应,如果pk中的牌一翻开,result对应的位置记为“1”
int pk[4][4]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};
int result[4][4]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//洗牌
for(int i=0;i<1000;i++)
{
int rand1=rand()%4;
int rand2=rand()%4;
int rand3=rand()%4;
int rand4=rand()%4;
int tmp=pk[rand1][rand2];
pk[rand1][rand2]=pk[rand3][rand4];
pk[rand3][rand4]=tmp;
}
bool over=true;
while(over)
{
//遍历result计算“1“的个数,如果是16 说明已全部猜对,并结束游戏
int count=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(result[i][j]==1)
count++;
}
}
if(count==16)
{
cout<<"恭喜你全部猜对";
break;
}
//显示全部的牌(一翻开的和未翻开的)
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(result[i][j]==0)
cout<<"*"<<"\t";
else
cout<<pk[i][j]<<"\t";
}
cout<<endl;
}
cout<<"请输入第一个行号 列号:"<<endl;
int r1=0;
int c1=0;
cin>>r1>>c1;
r1--;
c1--;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(i==r1&&j==c1)
cout<<pk[i][j]<<"\t";
else
cout<<"*"<<"\t";
}
cout<<endl;
}
cout<<"请输入第二个行号 列号:"<<endl;
int r2=0;
int c2=0;
cin>>r2>>c2;
r2--;
c2--;
//判断两次算选的牌是否相等,如果相等 而将result相应的位置 标记为”1“。
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(i==r2&&j==c2)
cout<<pk[i][j]<<"\t";
else
cout<<"*"<<"\t";
}
cout<<endl;
}
if(pk[r1][c1]==pk[r2][c2])
{
result[r1][c1]=1;
result[r2][c2]=1;
}
/* for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cout<<result[i][j]<<"\t";
}
cout<<endl;
}*/
cout<<"请输入1.继续游戏 2.推出游戏;";
int t=0;
cin>>t;
if(t==2)
{
over=false;
}
//清屏
system("cls");
}
}
[ 本帖最后由 王向 于 2012-3-18 23:14 编辑 ]