欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

连连看C语言代码

  • 资源ID:36552236       资源大小:46.51KB        全文页数:7页
  • 资源格式: DOC        下载积分:15积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要15积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

连连看C语言代码

*功能:连连看*制作人:蒋睿立*时间:2007年8月1日*编译环境: VC+ 6.0*程序语言: C语言*/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <conio.h>void initialize(); /初始化void near1(int a,int b,int a1,int b1); /算法void print_chess(); /打印棋盘int exit_chess(); /判断是否结束/全局变量char chessman1010; /编译系统初始化每个元素为0void main() int row,line; /row是行号,line是列号 int row2,line2; /row是行号,line是列号 printf("ttt按任意键开始n"); fflush(stdin); getch(); initialize(); /初始化棋盘内容 do print_chess(); printf("输入第一个:"); fflush(stdin); scanf("%d.%d",&line,&row); printf("输入第二个:"); fflush(stdin); scanf("%d.%d",&line2,&row2); if(chessmanlinerow!=chessmanline2row2) printf("两数不相同!n"); /两数不同 else if(line=line2&&row=row2) printf("错误输入!n"); /输入相同的坐标,提示用户错误 else if(line<=line2) near1(line,row,line2,row2); /使用函数处理,第一个点一定在第二个点上方 else near1(line2,row2,line,row); /使用函数处理 system("pause"); while(exit_chess(); system("pause");printf("nnntt恭喜您,您胜利了!n");printf("ntt制作人:蒋睿立n");printf("nt博客:http:");void initialize() /初始化棋盘 int i,j; /用于循环计数 int a8=0; /记录哪些字符出现次数不是偶数 srand(time(NULL); for(i=1;i<8;i+) /这里只随机前8行,留最后一行不打印 for(j=1;j<9;j+) chessmanij=rand()%8+65; /棋盘内容为大写字母A到H if(chessmanij=65) a0+; /记录A的个数 if(chessmanij=66) a1+; /记录B的个数 if(chessmanij=67) a2+; /记录C的个数 if(chessmanij=68) a3+; /记录D的个数 if(chessmanij=69) a4+; /记录E的个数 if(chessmanij=70) a5+; /记录F的个数 if(chessmanij=71) a6+; /记录G的个数 if(chessmanij=72) a7+; /记录H的个数 for(i=0;i<8;i+) if(ai%2!=0) /如果字符的个数是奇数就还需要打印一个 chessman8i+1=i+65; else /如果前面7行随机的A到H字符恰好是偶数,最后一行全是I字符 chessman8i+1=73; void print_chess() /打印棋盘内容 int i,j; system("cls"); printf("t 1 2 3 4 5 6 7 8 n"); for(i=0;i<10;i+) printf("tnt"); for(j=0;j<10;j+) printf("%4c",chessmanij); if(j=9&&i!=0&&i!=9) printf("t%d",i); printf("nnnn");int exit_chess() /判断是否满足退出 int i,j; for(i=0;i<10;i+) for(j=0;j<10;j+) if(chessmanij!=0) return 1; /只要有1个棋子不为0,就返回1 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;i<2;i+) /初始化数组 arowi=a; browi=a1; alinei=b; blinei=b1; /(a,b) a行中有哪些列 for(i=a+1;i<10;i+) if(chessmanib=0) arow1=i; /arow1是A点a行向下向量 else break; for(i=a-1;i>=0;i-) if(chessmanib=0) /arow0是A点a行向上向量 arow0=i; else break; /(a1,b1) a1行中有哪些列 for(i=a1+1;i<10;i+) if(chessmanib1=0) /brow1是B点a1行向下向量 brow1=i; else break; for(i=a1-1;i>=0;i-) if(chessmanib1=0) /brow0是B点a1行向上向量 brow0=i; else break; /(a,b) b列中有哪些行 for(i=b+1;i<10;i+) if(chessmanai=0) /aline1是A点b列向右向量 aline1=i; else break; for(i=b-1;i>=0;i-) if(chessmanai=0) /aline0是A点b列向左向量 aline0=i; else break; /(a1,b1) b1列中有哪些行 for(i=b1+1;i<10;i+) if(chessmana1i=0) /bline1是B点b1列向右向量 bline1=i; else break; for(i=b1-1;i>=0;i-) if(chessmana1i=0) /bline0是B点b1列向左向量 bline0=i; else break; /关键算法/ /* 情况一 (a,b) (a1,b1) */ /* 情况二 (a,b) (a1,b1) */ /*考虑上下向量*/ if(brow0>=arow0) /向上方向向量 有共同的列向量 start=brow0; /取大的 else start=arow0; if(brow1<=arow1) /向下方向向量 有共同的列向量 end=brow1; /取小的 else end=arow1; for(;start<=end;start+) /列向量上共同点start到end /* b1要大于b,否则就交换如果不交换将使下面的循环出错*/if(b<b1)j=b; /小的数赋到j中i=b1; /大的数赋到i中elsej=b1;i=b; /*这里节约一个变量,所有看起来有点复杂*/ for(n=0;j<i;j+) /同一行上,从列j到列i if(chessmanstartj=0) /同一行上,所有列都是0 n+; else break; if(n=b-b1)&&(n>0) /因为b与b1大小不能确定,所有有2个if chessmanab=chessmana1b1=0; if(n=b1-b)&&(n>0) chessmanab=chessmana1b1=0; /*考虑左右向量*/ if(aline0>=bline0) /向左的向量 有共同的行向量 start=aline0; /取大的 else start=bline0; if(aline1<bline1) /向右的向量 有共同的行向量 end=aline1; /取小的 else end=bline1; for(i=start;i<=end;i+) for(j=a,n=0;j<a1;j+) if(chessmanji=0) /同一列上,所有行都是0 n+; else break; if(n=a1-a&&n>0) /a1始终大于a chessmanab=chessmana1b1=0; break; /* 同行 或者 同列 (a,b)* * 或者 * (a,b) (a1,b1) (a1,b1)*/ if(a=a1) /同行 if(aline1>=b1)|(aline0<=b1) chessmanab=chessmana1b1=0; if(b=b1) /同列 if(arow1>=a1) chessmanab=chessmana1b1=0;

注意事项

本文(连连看C语言代码)为本站会员(1777****777)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!