资源描述:
《c语言课程设计经典例题扫雷》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、扫雷源代码,完美运行/*模拟扫雷游戏*/#include#include#include#include#include#include#includeunionREGSregs;intsize=15;/*用于表示每个方块的大小(正方形的边长)*/intpix,piy=50;/*pix,piy是矩阵的偏移量*/charb[2]="1";/*用于显示方格周围的雷的个数*/intpan[30][16];
2、/*用于记录盘面的情况:0:没有、9:有雷、1~8:周围雷的个数*/intpan1[30][16];/*pan1[][]纪录当前的挖雷情况,0:没有操作、1:打开了、2:标记了*/inttt;/*纪录时间参数*/intEflags;/*用于标记鼠标按钮的有效性,0:有效,1:无效,2:这是鼠标的任意键等于重新开始*/intMsinit();voidDraw(intx,inty,intsizex,intsizey);voidFacedraw(intx,inty,intsizel,intk);voidDead(intsizel,i
3、ntx,inty);voidSetmouse(intxmax,intymax,intx,inty);intMsread(int*xp,int*yp,int*bup,structtimet1,intk);voidDraw1(intx,inty);intOpen(intx,inty);floatRandom();voidHave(intsum,intx,inty,intxx,intyy);voidHelp();voidCoread();voidDdraw2(intx,inty);/*下面是主函数*/main(){intmode=V
4、GAHI,devices=VGA;/*图形模式初始化的变量*/charams;/*鼠标操作中的标志变量*/intxms,yms,bms;/*鼠标的状态变量*/inti,j,k,k1=0;/*i,j,k是循环变量*/intx=9,y=9,flags=0;/*x,y矩阵的大小*/intsum=10;/*sum盘面的雷的总数目,是个x,y的函数*/intx1=0,y1=0;/*用于记录光标当前的位置*/intx11=0,y11=0;/*暂时保存鼠标位置的值*/intsizel=10;/*脸的大小*/intcflags=1;/*这是菜
5、单操作标志变量,没有弹出1,弹出0*/structtimet1={0,0,0,0};/*时间结构体,头文件已定义*/intco[3];/*暂时纪录历史纪录*/voidfar*Map;/*用于保存鼠标图片*/charname[3][20];/*名字字符串,用于记录名字*/FILE*p;/*文件指针用于文件操作*/Msinit();/*鼠标初始化*//*registerbgidriver(EGAVGA_driver);*/initgraph(&devices,&mode,"C:\tc");/*图形模式初始化*//*为图片指针分配
6、内存*/if((Map=farmalloc(imagesize(0,0,20,20)))==NULL)/*图片的大小是20*20*/{printf("Memoryererr!");printf("Pressanykeytoout!");exit(1);}/*用于检验文件是否完整*/while((p=fopen("score.dat","r"))==NULL)/*如果不能打开就新建一个*/{if((p=fopen("score.dat","w"))==NULL)/*如果不能新建就提示错误并推出*/{printf("The
7、filecannotopen!");printf("Presssanykeytoexit!");getch();exit(1);}/*写入初始内容*/fprintf(p,"%d%d%d,%s%s%s",999,999,999,"xiajia","xiajia","xiajia");fclose(p);}/*暂时读出历史纪录。并用co[3]纪录*/fscanf(p,"%d%d%d,",&co[0],&co[1],&co[2]);for(i=0;i<3;i++)fscanf(p,"%s",name[i]);
8、fclose(p);Setmouse(1,1,615,460);/*设置鼠标的活动范围*/pix=250-x*size/2;/*计算地雷按钮矩阵的左边*/bss:b[0]='1';/*游戏开始和重来的切入点*/flags=0;/*测试中这个变量好像没有作用,但是为了逻辑的完整