资源描述:
《C语言扫雷源代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include/*鼠标信息宏定义*/#defineWAITING0xff00#defineLEFTPRESS0xff01#defineLEFTCLICK0xff10#defineLEFTDRAG0xff19#defineRIGHTPRESS0xff02#defineRIGHTCLICK0xff20#defineRIGHTDRAG0xff2a#defineMIDDLEPRESS0xff04#defineMIDDLECLICK0xff40
2、#defineMIDDLEDRAG0xff4c#defineMOUSEMOVE0xff08struct{intnum;/*格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子*/introundnum;/*统计格子周围有多少雷*/intflag;/*右键按下显示红旗的标志,0没有红旗标志,1有红旗标志*/}Mine[10][10];intgameAGAIN=0;/*是否重来的变量*/intgamePLAY=0;/*是否是第一次玩游戏的标志*/intmineNUM;/*统计处理过的格子数*/charrandmineNUM[3];/*显示数字的字符串*/i
3、ntKeystate;intMouseExist;intMouseButton;intMouseX;intMouseY;intup[16][16],down[16][16],mouse_draw[16][16],pixel_save[16][16];voidMouseMath()/*计算鼠标的样子*/{inti,j,jj,k;longUpNum[16]={0x3fff,0x1fff,0x0fff,0x07ff,0x03ff,0x01ff,0x00ff,0x007f,0x003f,0x00ff,0x01ff,0x10ff,0x30ff,0xf87f,0xf87
4、f,0xfc3f};longDownNum[16]={0x0000,0x7c00,0x6000,0x7000,0x7800,0x7c00,0x7e00,0x7f00,0x7f80,0x7e00,0x7c00,0x4600,0x0600,0x0300,0x0300,0x0180};for(i=0;i<16;i++){j=jj=15;while(UpNum[i]!=0){up[i][j]=UpNum[i]%2;j--;UpNum[i]/=2;}while(DownNum[i]!=0){down[i][jj--]=DownNum[i]%2;DownNum[i]/=
5、2;}for(k=j;k>=0;k--)up[i][k]=0;for(k=jj;k>=0;k--)down[i][k]=0;for(k=0;k<16;k++)/*四种组合方式*/{if(up[i][k]==0&&down[i][k]==0)mouse_draw[i][k]=1;elseif(up[i][k]==0&&down[i][k]==1)mouse_draw[i][k]=2;elseif(up[i][k]==1&&down[i][k]==0)mouse_draw[i][k]=3;elsemouse_draw[i][k]=4;}}mouse_draw[1
6、][2]=4;/*特殊点*/}voidInit(void);/*图形驱动*/voidMouseOn(int,int);/*鼠标光标显示*/voidMouseOff(void);/*鼠标光标隐藏*/voidMouseSetXY(int,int);/*设置当前位置*/intLeftPress(void);/*左键按下*/intRightPress(void);/*鼠标右键按下*/intMiddlePress();voidMouseGetXY(void);/*得到当前位置*/intMouseStatus();voidControl(void);/*游戏开始,重新,
7、关闭*/voidGameBegain(void);/*游戏开始画面*/voidDrawSmile(void);/*画笑脸*/voidDrawRedflag(int,int);/*显示红旗*/voidDrawEmpty(int,int,int,int);/*两种空格子的显示*/voidGameOver(void);/*游戏结束*/voidGameWin(void);/*显示胜利*/intMineStatistics(int,int);/*统计每个格子周围的雷数*/intShowWhite(int,int);/*显示无雷区的空白部分*/voidGamePlay(
8、void);/*游戏过程*/voidClose(vo