资源描述:
《c语言课程设计汇本扫雷游戏设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言课程设计_扫雷游戏设计/*5.3.4源程序*/#include#include#include#defineLEFTPRESS0xff01#defineLEFTCLICK0xff10#defineLEFTDRAG0xff19#defineMOUSEMOVE0xff08struct{ intnum;/*格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子*/ introundnum;/*统计格子周围有多少雷*/ intflag;
2、/*右键按下显示红旗的标志,0没有红旗标志,1有红旗标志*/}Mine[10][10];intgameAGAIN=0;/*是否重来的变量*/intgamePLAY=0;/*是否是第一次玩游戏的标志*/intmineNUM;/*统计处理过的格子数*/charrandmineNUM[3];/*显示数字的字符串*/intKeystate;intMouseExist;intMouseButton;intMouseX;intMouseY;voidInit(void);/*图形驱动*/voidMouseOn(vo
3、id);/*鼠标光标显示*/voidMouseOff(void);/*鼠标光标隐藏*/voidMouseSetXY(int,int);/*设置当前位置*/int LeftPress(void);/*左键按下*/int RightPress(void);/*鼠标右键按下*/voidMouseGetXY(void);/*得到当前位置*/voidControl(void);/*游戏开始,重新,关闭*/voidGameBegain(void);/*游戏开始画面*/voidDrawSmile(void);/*画
4、笑脸*/voidDrawRedflag(int,int);/*显示红旗*/voidDrawEmpty(int,int,int,int);/*两种空格子的显示*/voidGameOver(void);/*游戏结束*/voidGameWin(void);/*显示胜利*/int MineStatistics(int,int);/*统计每个格子周围的雷数*/int ShowWhite(int,int);/*显示无雷区的空白部分*/voidGamePlay(void);/*游戏过程*/voidClose(voi
5、d);/*图形关闭*/voidmain(void){ Init(); Control(); Close();}voidInit(void)/*图形开始*/{ intgd=DETECT,gm; initgraph(&gd,&gm,"c:\tc");}voidClose(void)/*图形关闭*/{ closegraph();}voidMouseOn(void)/*鼠标光标显示*/{ _AX=0x01; geninterrupt(0x33);}voidMouseOff(void)/*鼠标
6、光标隐藏*/{ _AX=0x02; geninterrupt(0x33);}voidMouseSetXY(intx,inty)/*设置当前位置*/{ _CX=x; _DX=y; _AX=0x04; geninterrupt(0x33);}intLeftPress(void)/*鼠标左键按下*/{ _AX=0x03; geninterrupt(0x33); return(_BX&1);}intRightPress(void)/*鼠标右键按下*/{ _AX=0x03; geninte
7、rrupt(0x33); return(_BX&2);}voidMouseGetXY(void)/*得到当前位置*/{ _AX=0x03; geninterrupt(0x33); MouseX=_CX; MouseY=_DX;}voidControl(void)/*游戏开始,重新,关闭*/{ intgameFLAG=1;/*游戏失败后判断是否重新开始的标志*/ while(1) { if(gameFLAG)/*游戏失败后没判断出重新开始或者退出游戏的话就继续判断*/ {
8、 GameBegain();/*游戏初始画面*/ GamePlay();/*具体游戏*/ if(gameAGAIN==1)/*游戏中重新开始*/ { gameAGAIN=0; continue; } } MouseOn(); gameFLAG=0; if(LeftPress())/*判断是否重新开始*/ { MouseGetXY(); if(MouseX>280&&MouseX<300&&MouseY>65&&