预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

扫雷源代码,完美运行 /* 模拟扫雷游戏 */ #include<graphics.h> #include<math.h> #include<stdio.h> #include<dos.h> #include<stdlib.h> #include<conio.h> #include<malloc.h> unionREGSregs; intsize=15;/*用于表示每个方块的大小(正方形的边长)*/ intpix,piy=50;/*pix,piy是矩阵的偏移量*/ charb[2]="1";/*用于显示方格周围的雷的个数*/ intpan[30][16];/*用于记录盘面的情况: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,intx,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=VGAHI,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;/*这是菜单操作标志变量,没有弹出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");/*图形模式初始化*/ /*为图片指针分配内存*/ if((Map=farmalloc(imagesize(0,0,20,20)))==NULL)/*图片的大小是20*20*/ { printf("Memoryererr!\n"); printf("Pressanykeytoout!\n"); exit(1); } /*用于检验文件是否完整*/ while((p=fopen("score.dat","r"))==NULL)/*如果不能打开就新建一个*/ { if((p=fopen("score.dat","w"))==NULL)/*如果不能新建就提示错误并推出*/ { printf("Thefilecannotopen!\n"); printf("Presssanykeytoexit!\n"); getch(); exit(1); } /*写入初始内容*/ fprintf(p,"%d%d%d,%s\n%s\n%s\n",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\n",name[i]); fclose(p); Setmouse(1,1,615,460);/*设置鼠标的活动范围*/ pi