连连看c语言源代码

连连看c语言源代码

ID:26014831

大小:55.50 KB

页数:12页

时间:2018-11-24

连连看c语言源代码_第1页
连连看c语言源代码_第2页
连连看c语言源代码_第3页
连连看c语言源代码_第4页
连连看c语言源代码_第5页
资源描述:

《连连看c语言源代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/**连连看游戏C语言源代码*/#include#include#include#include#include#definetrue1#definefalse0/*---------------------全局变量------------------------------------*/intBkGndColor=BLACK;intBorderColor=LIGHTGRAY;intLineColor=LIGHTBLUE;/*消除一对方块时时候的连线颜色*//*Pb-ProgressBar*/int

2、PbColor=LIGHTGREEN;intPbY=4;intPbHeight=4;intPbValue;/*进度条百分比,初始值为100.*/longStartTime;/*开始时间的秒数,只统计分钟,秒*/longTotalTime;/*游戏总共的最大秒数!,*//*BoardDatas:asmall-sizeboard*//*Board[x][y][0]-0:empty,1:filled*//*Board[x][y][1]-cell'skey;*/unsignedcharBoard[10][10][2];intCellSize=30;intBoardX=20;intBoardY=60;

3、intBoardWidth=10;intBoardHeight=10;intCellColor=WHITE;intSelColor=BLUE;/*selCell'sborderrectcolor*/intCurColor=RED;/*curCell'sborderrectcolor*/intEraColor=CYAN;/*用于擦除cell的颜色!*/intPairsCount;/*howmuchpairswehaveputonboard*//*用于存储逻辑坐标(索引)*/typedefstruct_tagCELL{charx;chary;}CELL;CELLselCell,curCell;/

4、*缓存前一个被选中的位置以及当前所处位置!*//*ScanCodesDefine*/enumKEYCODES{K_ESC=0x011b,K_UP=0x4800,/*upwardarrow*/K_LEFT=0x4b00,K_DOWN=0x5000,K_RIGHT=0x4d00,K_SPACE=0x3920,K_P=0x1970,K_RETURN=0x1c0d,/*Enter*/};/*---------------------函数列表------------------------------------*/voidInitGame(char*bgiPath);voidPlayGame();v

5、oidQuitGame();voidInitProgressBar();voidUpdateProgressBar(intpercent);voidDrawCell(intkey,intx,inty,intcolor);voidEraseCell(intx,inty);voidDrawBorderRect(CELL*c,intcolor);voidDrawGameOver(char*info);intGetKeyCode();intFindPath(CELL*c1,CELL*c2);/*绘制消除方块时候的连接路径!,用指定颜色!*/voidDrawPath(intx1,inty1,intx2

6、,inty2,intx3,inty3,intx4,inty4,intcolor);/*----------------------函数实现-----------------------------------*//*----------------------[核心算法]---------------------------------*先进行水平方向判断,找出两点所在的水平直线活动范围,*算出这两条线段在垂直方向的共同区域!!!,*遍历该区域判断能否在两线段间架起公垂线,能则两点连接上;*接着进行垂直方向判断,类同。无论两点在不在一条直线上,*都能使用该算法,因为两点同线只是两点作为矩形对

7、角点的特例而已。*//*找到两个CELL之间的路径,成功返回true*/intFindPath(CELL*c1,CELL*c2){inti,j,path,min1,max1,min2,max2,left,right,top,bottom;/*---------------(0)判断是否点中相同块!------------*/if(Board[c1->x][c1->y][1]!=Board[c2->x][c2-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。