1、C语言程序设计连连看#include #include #include #include #include using namespace std; #include int mai() /倒计时 for (int i=3; i=0; i-) long t = time(NULL); for(;) long n = time(NULL); if(n != t) break; system(cls); cout endl; cout endl; cout 离史上最卡哇依的游戏开始还有* i *秒哦!endl; return 0; void init1(); void print1(); int
2、 exit1();void init2();void print2();int exit2();void init3();void print3();int exit3();void near1(int a,int b,int a1,int b1); char chessman1010; void main() /主函数 time_t start,end,time; start=clock(); mai(); int d; cout endl; cout endl; cout endl; cout *endl; cout *endl; cout *亲,请选择适合您智商的级别:1低级 2中级 3
3、登峰造极 *endl; cout *endl; cout *endl; cout endl; cout endl; cout 研发小组:Q Y Qendl; coutd; cout -* endl; system(pause); switch(d) case 1:init1();break; case 2:init2();break; case 3:init3();break; default :cout你个逗比; int op; int row,line; int row2,line2; do if(d=1) print1(); else if(d=2) print2(); else if(
4、d=3) print3(); printf(options:n); printf(t1.selectn); printf(t2.restartn); printf(t3.sortn); scanf(%d,&op); if(op=1) printf(不造亲第一个相中了谁呢:); scanf(%d %d,&line,&row); printf(再给他找个伴儿吧,亲:); scanf(%d %d,&line2,&row2); if(chessmanlinerow!=chessmanline2row2) printf(有缘无分呐!n); system(pause); else if(line=line
5、2&row=row2) printf(有搞错哦,亲!n); system(pause); else if(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(nnntt哇呀!你好厉害!n); end=clock(); time=end-start; /这里的时间是计算机内部时间 cout endl time: time endl; system(
6、pause); cout本次得分:98分! 继续保持哦!endl; system(pause);void init1() /4乘4矩阵 int i,j; int a4=0; srand(time(NULL); for(i=1;i4;i+) for(j=1;j5;j+) chessmanij=rand()%4+65; if(chessmanij=65) a0+; if(chessmanij=66) a1+; if(chessmanij=67) a2+; if(chessmanij=68) a3+; for(i=0;i4;i+) if(ai%2!=0) chessman4i+1=i+65; els
7、e chessman4i+1=69; void print1() int i,j; system(cls); printf(t 1 2 3 4n); for(i=0;i5;i+) printf(tnt); for(j=0;j5;j+) printf(%4c,chessmanij); if(j=4&i!=0&i!=5) printf(t%d,i); printf(nnnn); int exit1() int i,j; for(i=0;i6;i+) for(j=0;j6;j+) if(chessmanij!=0) return 1; return 0; void init2() /6乘6矩阵 in
8、t i,j; int a6=0; srand(time(NULL); for(i=1;i6;i+) for(j=1;j7;j+) chessmanij=rand()%6+65; if(chessmanij=65) a0+; if(chessmanij=66) a1+; if(chessmanij=67) a2+; if(chessmanij=68) a3+; if(chessmanij=69) a4+; if(chessmanij=70) a5+; for(i=0;i6;i+) if(ai%2!=0) chessman6i+1=i+65; else chessman6i+1=71; void
9、print2() int i,j; system(cls); printf(t 1 2 3 4 5 6n); for(i=0;i8;i+) printf(tnt); for(j=0;j8;j+) printf(%4c,chessmanij); if(j=6&i!=0&i!=7) printf(t%d,i); printf(nnnn); int exit2() int i,j; for(i=0;i8;i+) for(j=0;j8;j+) if(chessmanij!=0) return 1; return 0; void init3() /8乘8矩阵 int i,j; int a8=0; sra
10、nd(time(NULL); for(i=1;i8;i+) for(j=1;j9;j+) chessmanij=rand()%8+65; /棋盘内容为A到H if(chessmanij=65) a0+; /记录A的个数 if(chessmanij=66) a1+; if(chessmanij=67) a2+; if(chessmanij=68) a3+; if(chessmanij=69) a4+; if(chessmanij=70) a5+; if(chessmanij=71) a6+; if(chessmanij=72) a7+; for(i=0;i8;i+) if(ai%2!=0) ch
11、essman8i+1=i+65; else chessman8i+1=73; void print3() int i,j; system(cls); printf(t 1 2 3 4 5 6 7 8 n); for(i=0;i10;i+) printf(tnt); for(j=0;j10;j+) printf(%4c,chessmanij); if(j=9&i!=0&i!=9) printf(t%d,i); printf(nnnn); int exit3() int i,j; for(i=0;i10;i+) for(j=0;j10;j+) if(chessmanij!=0) return 1;
12、 return 0; void near1(int a,int b,int a1,int b1) /三种路径 int arow2; int aline2; int brow2; int bline2; int start=0,end=0; /临时两个点 int i,j,n; /用于循环 for(i=0;i2;i+) /初始化数组 arowi=a; browi=a1; alinei=b; blinei=b1; /(a, b)a列中有哪些列 for(i=a+1;i=0;i-) if(chessmanib=0) / arow【0】 A点a行向上向量 arow0=i; else break; /(a1
13、,b1)a行中有哪些列 for(i=a1+1;i=0;i-) if(chessmanib1=0) / brow1B点a1行向上向量 brow0=i; else break; /(a,b)b行有哪些列 for(i=b+1;i=0;i-) if(chessmanai=0) /aline0A点b列向左向量 aline0=i; else break; /(a1,b1)中b1列中有哪些行 for(i=b1+1;i=0;i-) if(chessmana1i=0) /bline1B点b1列向右向量 bline0=i; else break; /关键算法/*情况一(a,b) (a1,b1)*情况二 (a.b)
14、 (a1,b1)* /考虑上下向量 if(brow0=arow0) /向上方向向量 有共同的列向量 start=brow0; /取大的 else start=arow0; if(brow1=arow1) /向下的方向向量 有共同的列向量 end=brow1; 取小的 else end=arow1; for(;start=end;start+) /列向量上共同sart到end / b1要大于b,否则就交换 如果不交换将使下面的循环出错、/ if(bb1) j=b; /小的赋值到j i=b1; /大的赋值到i else j=b1; i=b; /这里节约一个变量 for(n=0;j0) /因为b和b
15、1大小不能确定,所以有两个if chessmanab=chessmana1b1=0; if(n=b1-b)&(n0) chessmanab=chessmana1b1=0; /考虑左右向量/ if(aline0=bline0) /向左的向量有共同的列向量 start=aline0; /取大的 else start=bline0; if(aline1bline1) end=aline1; else end=bline1; for(i=start;i=end;i+) for(j=a,n=0;j0) chessmanab=chessmana1b1=0; break; /* 同行 或者 同列 (a,b) 或者(a,b) (a1,b1) (a1,b1)* if(a=a1) /同行 if(aline1=b1)|(aline0=a1) chessmanab=chessmana1b1=0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1