1、/* BoardDatas: a small-size board */* Boardxy0 - 0:empty, 1:filled */* Boardxy1 - cells key; */unsigned char Board15152;int CellSize=20;int BoardX=170;int BoardY=70;int BoardWidth=15;int BoardHeight=15;int CellColor=WHITE;int Focus=RED; /* focuss border rect color */int EraColor=CYAN; /* 用于擦除cell的颜色
2、!*/int PairsCount; /*方块对的数量*/int CellCount=0; /*剩余方块的数量*/char buf100;int sroce; /*游戏得分*/int wmin,wmax,hmin,hmax;/* 用于存储逻辑坐标(索引) */typedef struct _tagCELL char x; char y; CELL;CELL focus;/*定义焦点*/enum KEYCODES K_ESC =0x011b, K_UP =0x4800, /* upward arrow */ K_LEFT =0x4b00, K_DOWN =0x5000, K_RIGHT =0x4
3、d00, K_SPACE =0x3920, K_P =0x1970, K_RETURN =0x1c0d, /* Enter */;/* -函数列表- */void InitGame(char *bgiPath); /*初始化游戏方块*/void PlayGame();void QuitGame();void InitProgressBar(); /*初始化进度条*/void UpdateProgressBar(int percent);void DrawCell(int key,int x,int y,int color);void EraseCell(int x,int y);void Dr
4、awBorderRect(CELL *c,int color);void DrawGameOver(char *info,int sroce);int GetKeyCode();int FindPath(CELL *c1);void start();void DrawPath(int x1,int y1,int x2,int y2,int x3,int y3,int color);void DrawPath3(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4,int color);void start() int gdriver=D
5、ETECT,gmode; initgraph(&gdriver,&gmode,); setcolor(YELLOW); /*中方块*/ setcolor(RED); rectangle(100,200,120,180); /*上方块*/ setcolor(WHITE); rectangle(100,150,120,130); setfillstyle(7, WHITE); floodfill(110,140,WHITE); /*下方块*/ rectangle(100,250,120,230); setfillstyle(6, WHITE); floodfill(110,240,WHITE);
6、/*左方块*/ rectangle(50,200,70,180); floodfill(60,190,WHITE); /*右方块*/ rectangle(150,200,170,180); setfillstyle(4, WHITE); floodfill(160,190,WHITE); moveto(200,190); lineto(230,190); moveto(215,205); lineto(215,175); rectangle(260,200,320,180); outtextxy(270,187,SPACE moveto(350,195); lineto(370,195); m
7、oveto(350,185); lineto(370,185); rectangle(100+350,200,120+350,180); rectangle(100+350,150,120+350,130); floodfill(110+350,140,WHITE); rectangle(150+350,200,170+350,180); floodfill(160+350,190,WHITE); outtextxy(120,300,Please do the following tips start the game! outtextxy(200,320,press any key to c
8、ontinue outtextxy(220,340,-by junjie2012int AllRemove(CELL *c1) DrawPath(c1-x,c1-y, wmin,c1-y,c1-x,hmin,LineColor);y, c1-x,hmax,wmax,c1-y,LineColor); delay(6000);x,hmin,BkGndColor);y, BkGndColor); EraseCell(wmin,c1-y); EraseCell(wmax,c1- EraseCell(c1-x,hmin);x,hmax); Boardc1-xhmin1 =0;xhmax1 =0;xhmi
9、n0 =0;xhmax0 =0; Boardwminc1-y1 =0; Boardwmaxc1-y0 =0; sroce+=60; return true;int FindPath(CELL *c1) /*-查找水平方向遇到两个方块的坐标-*/ wmin=wmax=c1-x; while(wmin=0) wmin-; if( Boardwminc1-y0! break; while(wmax /*-查找垂直方向遇到的两个方块的坐标-*/ hmin=hmax=c1-y; while(hmin hmin-; if( Boardc1-xhmin0! while(hmaxxhmax0! /*-方块两两
10、相同的情况 -*/ /*(wmin,y)与(wmax,y)相同的情况*/ if(wmin!=-1&wmax!=BoardWidth&(Boardwminc1-y1 = Boardwmaxc1-y1)&y1 != Boardc1-xhmin1)&xhmax1)xhmin1=Boardc1-xhmax1&hmin!hmax!=BoardHeight) AllRemove(&focus) ; elsey,wmax,c1- sroce+=20; /*(wmin,y)与(x,hmin)相同的情况*/Boardwminc1-y1 = Boardc1-xhmin1&= Boardwmaxc1-y1&xhma
11、x1)xhmax1=Boardwmaxc1- /*(wmin,y)与(x,hmax)相同的情况*/=BoardHeight&xhmin1)xhmin1=Boardwmaxc1-=BoardWidth)x,hmax,LineColor);x,hmax,BkGndColor); /*(wmax,y)与(x,hmin)相同的情况*/ if(hmin!Boardwmaxc1-= Boardwminc1- if(Boardwminc1-y1=Boardc1-wmin!y, wmax,c1- /*(wmax,y)与(x,hmax)相同的情况*/ if(wmax!=-1) /*(x,hmin)与(x,hmax)相同的情况*/Boardc1-xhmin1 = Boardc1-xhmin1 !y1)y1=Boardwmaxc1-x,hmin,c1- /*-3个方块相同的情况-*/xhmax1=Boardwminc1-xhmin1! DrawPath3(c1-x,hmax,wmin,c1-y,BkGndColor); sroce+=40;xhmin1 = Boardwmaxc1-y1=Boardwminc1-x,hmin,wmin,c1-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1