C语言程序设计连连看Word格式文档下载.docx
《C语言程序设计连连看Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计连连看Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
离史上最卡哇依的游戏开始还有**"
<
i<
**秒哦!
!
}return0;
}
voidinit1();
voidprint1();
intexit1();
voidinit2();
voidprint2();
intexit2();
voidinit3();
voidprint3();
intexit3();
voidnear1(inta,intb,inta1,intb1);
charchessman[10][10];
voidmain()//主函数
{time_tstart,end,time;
start=clock();
mai();
intd;
****************************************************************"
**亲,请选择适合您智商的级别:
[1]低级[2]中级[3]登峰造极**"
研发小组:
QYQ"
请选择:
***-"
cin>
>
d;
-***"
pause"
switch(d)
{
case1:
init1();
break;
case2:
init2();
case3:
init3();
default:
cout<
你个逗比"
}
intop;
introw,line;
introw2,line2;
do
{if(d==1)
print1();
elseif(d==2)
print2();
elseif(d==3)
print3();
printf("
options:
\n"
\t1.select\n"
\t2.restart\n"
\t3.sort\n"
scanf("
%d"
&
op);
if(op==1)
不造亲第一个相中了谁呢:
%d%d"
line,&
row);
再给他找个伴儿吧,亲:
line2,&
row2);
if(chessman[line][row]!
=chessman[line2][row2])
有缘无分呐!
system("
elseif(line==line2&
&
row==row2)
有搞错哦,亲!
system("
elseif(line<
=line2)
near1(line,row,line2,row2);
else
near1(line2,row2,line,row);
if(op==2)
if(op==3)
{main();
}while(exit1(),exit2(),exit3());
\n\n\n\t\t哇呀!
你好厉害!
end=clock();
time=end-start;
//这里的时间是计算机内部时间
cout<
endl<
time:
time<
endl;
本次得分:
98分!
继续保持哦!
voidinit1()//4乘4矩阵
{
inti,j;
inta[4]={0};
srand(time(NULL));
for(i=1;
i<
4;
i++)
for(j=1;
j<
5;
j++)
chessman[i][j]=rand()%4+65;
if(chessman[i][j]==65)a[0]++;
if(chessman[i][j]==66)a[1]++;
if(chessman[i][j]==67)a[2]++;
if(chessman[i][j]==68)a[3]++;
for(i=0;
if(a[i]%2!
=0)
chessman[4][i+1]=i+65;
chessman[4][i+1]=69;
voidprint1()
\t1234\n"
\t\n\t"
for(j=0;
%4c"
chessman[i][j]);
if(j==4&
i!
=0&
=5)
printf("
\t%d"
i);
\n\n\n\n"
}
intexit1()
6;
if(chessman[i][j]!
return1;
return0;
voidinit2()//6乘6矩阵
inta[6]={0};
7;
chessman[i][j]=rand()%6+65;
if(chessman[i][j]==69)a[4]++;
if(chessman[i][j]==70)a[5]++;
chessman[6][i+1]=i+65;
chessman[6][i+1]=71;
voidprint2()
\t123456\n"
8;
if(j==6&
=7)
intexit2()
voidinit3()//8乘8矩阵
inta[8]={0};
9;
chessman[i][j]=rand()%8+65;
//棋盘内容为A到H
//记录A的个数
if(chessman[i][j]==71)a[6]++;
if(chessman[i][j]==72)a[7]++;
chessman[8][i+1]=i+65;
chessman[8][i+1]=73;
voidprint3()
\t12345678\n"
10;
if(j==9&
=9)
intexit3()
voidnear1(inta,intb,inta1,intb1)//三种路径
intarow[2];
intaline[2];
intbrow[2];
intbline[2];
intstart=0,end=0;
//临时两个点
inti,j,n;
//用于循环
2;
i++)//初始化数组
arow[i]=a;
brow[i]=a1;
aline[i]=b;
bline[i]=b1;
/////////////////////////////////////////(a,b)a列中有哪些列
for(i=a+1;
if(chessman[i][b]==0)
arow[1]=i;
//arow【1】A点a行向下向量
break;
for(i=a-1;
i>
i--)
if(chessman[i][b]==0)//arow【0】A点a行向上向量
arow[0]=i;
////////////////////////////////////////////(a1,b1)a行中有哪些列
for(i=a1+1;
if(chessman[i][b1]==0)//brow[1]B点a1行向下向量
brow[1]=i;
for(i=a1-1;
if(chessman[i][b1]==0)//brow[1]B点a1行向上向量
brow[0]=i;
//////////////////////////////////////(a,b)b行有哪些列
for(i=b+1;
if(chessman[a][i]==0)//aline[1]A点b列向右向量
aline[1]=i;
for(i=b-1;
if(chessman[a][i]==0)//aline[0]A点b列向左向量
aline[0]=i;
/////////////////////////////(a1,b1)中b1列中有哪些行
for(i=b1+1;
if(chessman[a1][i]==0)//bline[1]B点b1列向左向量
bline[1]=i;
for(i=b1-1;
if(chessman[a1][i]==0)//bline[1]B点b1列向右向量
bline[0]=i;
///////////////////////////////////////关键算法///////////////////////////////////
/**********************
情况一
(a,b)
(a1,b1)
*********************************
情况二
(a.b)
***********************************
/考虑上下向量
if(brow[0]>
=arow[0])//向上方向向量有共同的列向量
start=brow[0];
//取大的
start=arow[0];
if(brow[1]<
=arow[1])//向下的方向向量有共同的列向量
end=brow[1];
取小的
end=arow[1];
start<
=end;
start++)//列向量上共同sart到end
//b1要大于b,否则就交换
如果不交换将使下面的循环出错、//
if(b<
b1)
j=b;
//小的赋值到j
i=b1;
//大的赋值到i
j=b1;
i=b;
///这里节约一个变量
for(n=0;
i;
j++)//同一行上,从列j到i
if(chessman[start][j]==0)//同一行上,所有列都是0
n++;
if((n==b-b1)&
(n>
0))//因为b和b1大小不能确定,所以有两个if
chessman[a][b]=chessman[a1][b1]=0;
if((n==b1-b)&
0))
//考虑左右向量//
if(aline[0]>
=bline[0])//向左的向量有共同的列向量
start=aline[0];
start=bline[0];
if(aline[1]<
bline[1])
end=aline[1];
end=bline[1];
for(i=start;
for(j=a,n=0;
a1;
if(chessman[j][i]==0)//同一列上所有行都是0
if(n==a1-a&
n>
0)
//*************************************************************************
*同行或者同列(a,b)
或者
(a,b)(a1,b1)(a1,b1)
*******************************************************************************
if(a==a1)//同行
if((aline[1]>
=b1)||(aline[0]<
=b1))
if(b==b1)//同列
if(arow[1]>
=a1)