正文

简单扫雷2007-09-13 18:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/19880128/29392.html

分享到:

/* 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,&regs,&regs);    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雷,鼠标扫雷,右键插旗)。

阅读(1611) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册