当前位置:文档之家› C语言程序设计连连看

C语言程序设计连连看

C语言程序设计连连看 Prepared on 24 November 2020#include<>#include<>#include<>#include<>#include<iostream>usingnamespacestd;#include<ctime>intmai()//倒计时{for(inti=3;i>=0;i--){longt=time(NULL);for(;;){longn=time(NULL);if(n!=t)break;}system("cls");cout<<""<<endl;cout<<""<<endl;cout<<"离史上最卡哇依的游戏开始还有**"<<i<<"**秒哦!!!"<<endl; }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;cout<<""<<endl;cout<<""<<endl;cout<<""<<endl;cout<<"****************************************************************" <<endl;cout<<"****************************************************************"<<e ndl;cout<<"**亲,请选择适合您智商的级别:[1]低级[2]中级[3]登峰造极**"<<endl;cout<<"****************************************************************" <<endl;cout<<"****************************************************************"<<e ndl;cout<<""<<endl;cout<<""<<endl;cout<<"研发小组:QYQ"<<endl;cout<<"请选择:***-";cin>>d;cout<<"-***"<<endl;system("pause");switch(d){case1:init1();break;case2:init2();break;case3:init3();break;default:cout<<"你个逗比";}intop;introw,line;introw2,line2;do{if(d==1)print1();elseif(d==2)print2();elseif(d==3)print3();printf("options:\n");printf("\\n");printf("\\n");printf("\\n");scanf("%d",&op);if(op==1){printf("不造亲第一个相中了谁呢:");scanf("%d%d",&line,&row);printf("再给他找个伴儿吧,亲:");scanf("%d%d",&line2,&row2);if(chessman[line][row]!=chessman[line2][row2]){printf("有缘无分呐!\n");system("pause");}elseif(line==line2&&row==row2){printf("有搞错哦,亲!!!\n");system("pause"); }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());system("pause");printf("\n\n\n\t\t哇呀!你好厉害!\n");end=clock();time=end-start;//这里的时间是计算机内部时间cout<<endl<<"time:"<<time<<endl;system("pause");cout<<"本次得分:98分!继续保持哦!"<<endl;system("pause");}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;i<4;i++){if(a[i]%2!=0)chessman[4][i+1]=i+65;elsechessman[4][i+1]=69;}}voidprint1(){inti,j;system("cls");printf("\t1234\n");for(i=0;i<5;i++){printf("\t\n\t");for(j=0;j<5;j++){printf("%4c",chessman[i][j]);if(j==4&&i!=0&&i!=5)printf("\t%d",i); }}printf("\n\n\n\n");}intexit1(){inti,j;for(i=0;i<6;i++){for(j=0;j<6;j++)if(chessman[i][j]!=0)return1;}return0;}voidinit2()//6乘6矩阵{inti,j;inta[6]={0};srand(time(NULL));for(i=1;i<6;i++)for(j=1;j<7;j++){chessman[i][j]=rand()%6+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]++; if(chessman[i][j]==69)a[4]++; if(chessman[i][j]==70)a[5]++; }for(i=0;i<6;i++){if(a[i]%2!=0)chessman[6][i+1]=i+65;elsechessman[6][i+1]=71;}}voidprint2(){inti,j;system("cls");printf("\t123456\n");for(i=0;i<8;i++){printf("\t\n\t");for(j=0;j<8;j++){printf("%4c",chessman[i][j]); if(j==6&&i!=0&&i!=7) printf("\t%d",i);}}printf("\n\n\n\n");}intexit2(){inti,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if(chessman[i][j]!=0)return1;}return0;}voidinit3()//8乘8矩阵{inti,j;inta[8]={0};srand(time(NULL));for(i=1;i<8;i++)for(j=1;j<9;j++){chessman[i][j]=rand()%8+65;//棋盘内容为A到H if(chessman[i][j]==65)a[0]++;//记录A的个数if(chessman[i][j]==66)a[1]++;if(chessman[i][j]==67)a[2]++;if(chessman[i][j]==68)a[3]++;if(chessman[i][j]==69)a[4]++;if(chessman[i][j]==70)a[5]++;if(chessman[i][j]==71)a[6]++;if(chessman[i][j]==72)a[7]++;}for(i=0;i<8;i++){if(a[i]%2!=0)chessman[8][i+1]=i+65;elsechessman[8][i+1]=73;}}voidprint3(){inti,j;system("cls");printf("\t\n");for(i=0;i<10;i++){printf("\t\n\t");for(j=0;j<10;j++){printf("%4c",chessman[i][j]);if(j==9&&i!=0&&i!=9)printf("\t%d",i);}}printf("\n\n\n\n");}intexit3(){inti,j;for(i=0;i<10;i++){for(j=0;j<10;j++)if(chessman[i][j]!=0)return1;}return0;}voidnear1(inta,intb,inta1,intb1)//三种路径{intarow[2];intaline[2];intbrow[2];intbline[2];intstart=0,end=0;//临时两个点inti,j,n;//用于循环for(i=0;i<2;i++)//初始化数组{arow[i]=a;brow[i]=a1;aline[i]=b;bline[i]=b1;}/////////////////////////////////////////(a,b)a列中有哪些列for(i=a+1;i<10;i++){if(chessman[i][b]==0)arow[1]=i;//arow【1】A点a行向下向量elsebreak;}for(i=a-1;i>=0;i--){if(chessman[i][b]==0)//arow【0】A点a行向上向量arow[0]=i;elsebreak;}////////////////////////////////////////////(a1,b1)a行中有哪些列for(i=a1+1;i<10;i++){if(chessman[i][b1]==0)//brow[1]B点a1行向下向量brow[1]=i;elsebreak;}for(i=a1-1;i>=0;i--){if(chessman[i][b1]==0)//brow[1]B点a1行向上向量brow[0]=i;elsebreak;}//////////////////////////////////////(a,b)b行有哪些列for(i=b+1;i<10;i++){if(chessman[a][i]==0)//aline[1]A点b列向右向量aline[1]=i;elsebreak;}for(i=b-1;i>=0;i--){if(chessman[a][i]==0)//aline[0]A点b列向左向量aline[0]=i;elsebreak;}/////////////////////////////(a1,b1)中b1列中有哪些行for(i=b1+1;i<10;i++){if(chessman[a1][i]==0)//bline[1]B点b1列向左向量bline[1]=i;elsebreak;}for(i=b1-1;i>=0;i--){if(chessman[a1][i]==0)//bline[1]B点b1列向右向量bline[0]=i;elsebreak;}///////////////////////////////////////关键算法/////////////////////////////////// /**********************情况一(a,b)(a1,b1)*********************************情况二()(a1,b1)***********************************/考虑上下向量if(brow[0]>=arow[0])//向上方向向量有共同的列向量start=brow[0];//取大的elsestart=arow[0];if(brow[1]<=arow[1])//向下的方向向量有共同的列向量end=brow[1];取小的elseend=arow[1];for(;start<=end;start++)//列向量上共同sart到end{//b1要大于b,否则就交换如果不交换将使下面的循环出错、//if(b<b1){j=b;//小的赋值到ji=b1;//大的赋值到i}else{j=b1;i=b;}///这里节约一个变量for(n=0;j<i;j++)//同一行上,从列j到i{if(chessman[start][j]==0)//同一行上,所有列都是0n++;elsebreak;}if((n==b-b1)&&(n>0))//因为b和b1大小不能确定,所以有两个if chessman[a][b]=chessman[a1][b1]=0;if((n==b1-b)&&(n>0))chessman[a][b]=chessman[a1][b1]=0;}//考虑左右向量//if(aline[0]>=bline[0])//向左的向量有共同的列向量start=aline[0];//取大的elsestart=bline[0];if(aline[1]<bline[1])end=aline[1];elseend=bline[1];for(i=start;i<=end;i++){for(j=a,n=0;j<a1;j++){if(chessman[j][i]==0)//同一列上所有行都是0n++;elsebreak;}if(n==a1-a&&n>0){chessman[a][b]=chessman[a1][b1]=0;break;}}//************************************************************************* *同行或者同列(a,b)或者(a,b)(a1,b1)(a1,b1)*************************************************************************** ****if(a==a1)//同行{if((aline[1]>=b1)||(aline[0]<=b1))chessman[a][b]=chessman[a1][b1]=0;}if(b==b1)//同列{if(arow[1]>=a1)chessman[a][b]=chessman[a1][b1]=0;}}。

相关主题