/* Note:Your choice is C IDE */#include "stdio.h"#include "graphics.h"#include "dos.h"#include "stdlib.h"union REGS regs;void main(){ char ch[2]; int number(int (*a)[16],int s); int open(int n,int m,int (*a)[16]); int fill(int px,int py,int (*a)[16]); int draw(); int draw2(int n,int m,int k); int Mscursor(int x,int y); int n,m,k,num,n1,m1,pix=0; int gd=VGA,gm=VGAHI,px,py,b,a[21][16]; srand(time(NULL)); initgraph(&gd,&gm,""); cleardevice(); am:for(n=1;n<=20;n++) for(m=1;m<=15;m++) a[n][m]=0; draw(); num=0; for(n=1;n<=20;n++) for(m=1;m<=15;m++) {k=rand()%5; if(k==0) {a[n][m]=9; num++;} if(num==60) break; } if(num!=60) goto am; for(n=1;n<=20;n++) for(m=1;m<=15;m++) {k=0; if(a[n][m]==9) continue; for(n1=n-1;n1<=n+1;n1++) for(m1=m-1;m1<=m+1;m1++) if(a[n1][m1]==9) k++; a[n][m]=k; } for(;;) { setcolor(0); Mscursor(px,py); fill(px,py,a); regs.x.ax=3; int86(0x33,®s,®s); px=regs.x.cx; py=regs.x.dx; b=regs.x.bx; if(b!=0&&px>=120&&px<=520&&py>=90&&py<=390) {n=(px-100)/20; m=(py-70)/20; if(b==1&&a[n][m]<10) {if(a[n][m]==9) {for(n=1;n<=20;n++) for(m=1;m<=15;m++) if(a[n][m]==9) outtextxy(103+n*20,73+m*20,"\5"); exit(1); } if(a[n][m]==0) { open(n,m,a); pix=number(a,pix); setcolor(0); } if(a[n][m]>0&&a[n][m]<9) {ch[0]=a[n][m]+48; pix++; ch[1]='\0'; outtextxy(103+n*20,73+m*20,ch); a[n][m]+=10;} } if(pix==240) {printf("What a smart man you are!"); exit(1); } if(b==2) {if(a[n][m]<10) {a[n][m]+=100; ch[0]=1; ch[1]='\0'; outtextxy(103+n*20,73+m*20,ch); for(n=1;n<=100;n++) delay(1000);} if(a[n][m]>=100) { a[n][m]-=100; bar(100+n*20,70+m*20,116+20*n,86+m*20); for(n=1;n<=100;n++) delay(1000); } }} setcolor(2); Mscursor(px,py); delay(4000); }}/**/int Mscursor(int x,int y){ setlinestyle(0,1,1); line(x,y,x+9,y+3); line(x,y,x+3,y+9); line(x+3,y+9,x+9,y+3); setlinestyle(0,3,3); line(x,y,x+12,y+12);}/**/int draw(){ int n,m; setfillstyle(1,7); for(n=1;n<=20;n++) for(m=1;m<=15;m++) bar(100+n*20,70+m*20,116+20*n,86+m*20); }/**/int fill(int px,int py,int (*a)[16]){ int m1,n1,m2,n2; m1=(px-100)/20; m2=(px-88)/20; n1=(py-70)/20; n2=(py-58)/20; if(m1>=1&&m1<=20&&n1>=1&&n1<=15) draw2(m1,n1,a[m1][n1]); if(m2>=1&&m2<=20&&n2>=1&&n2<=15) draw2(m2,n2,a[m2][n2]); if(m1+1>=1&&m1+1<=20&&n1>=1&&n1<=15) draw2(m1+1,n1,a[m1+1][n1]); if(m1>=1&&m1<=20&&n1+1>=1&&n1+1<=15) draw2(m1,n1+1,a[m1][n1+1]);}/**/ int draw2(int n,int m,int k) { char a[2]; setfillstyle(1,7); bar(100+n*20,70+m*20,116+20*n,86+m*20); if(k>10&&k<20) { a[0]=k+38; a[1]='\0'; outtextxy(103+n*20,73+m*20,a); } if(k>=100) { a[0]=1; a[1]='\0'; outtextxy(103+n*20,73+m*20,a); } if(k==10) {setfillstyle(1,9); bar(100+n*20,70+m*20,116+20*n,86+m*20);} } /**/ int open(int n,int m,int (*a)[16]) { char b[2]; int k,k1; a[n][m]+=10; for(k=1;k<=3;k++) for(k1=1;k1<=3;k1++) if(n-2+k>=1&&n-2+k<=20&&m-2+k1>=1&&m-2+k1<=15) { if(a[n-2+k][m-2+k1]<10&&a[n-2+k][m-2+k1]>0) {a[n-2+k][m-2+k1]+=10; setcolor(0); b[0]=a[n-2+k][m-2+k1]+38; b[1]='\0'; outtextxy(103+(n-2+k)*20,73+(m-2+k1)*20,b);} if(a[n-2+k][m-2+k1]==10) { setfillstyle(1,9); bar(100+(n-2+k)*20,70+(m-2+k1)*20,116+20*(n-2+k),86+(m-2+k1)*20); } if(a[n-2+k][m-2+k1]==0) open(n-2+k,m-2+k1,a); } } /**/ int number(int (*a)[16],int s) { int k,k1; for(k=1;k<=20;k++) for(k1=1;k1<=15;k1++) if(a[k][k1]>=10) s++; return s; } 简单扫雷游戏,为了纪念结束的c语言课程,欢迎c++的到来(300格,60雷,鼠标扫雷,右键插旗)。

评论