原创扫雷(愿意看的就看一下吧)
c语言吧
全部回复
仅看楼主
level 6
hack绝望 楼主
#include<bios.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<graphics.h>
#define ESC 0x11b
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define SPACE 0x3920
/*键值*/
#define STARTX 130
#define STARTY 130
#define ENDY 330
#define ENDX 330
/*游戏图画位置*/
#define KEYZ 20
/*键的大小*/
#define TEXTC 10
#define GAMEC 14
#define KEYC 4
#define BJC 0
/*颜色*/
#define DLNUM 10
/*地雷数*/
void setgraph(void);
void setstart(void);
void key(int,int,int);
void setdata(void);
void game(void);
void gameover(void);
void wingame(void);
/*函数声明*/
void setgraph(void)    /*设置图形*/
{
int gd=DETECT,gm;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,"");
}
void setstart(void)       /*开始函数*/
{int i;
   setbkcolor(BJC);
setcolor(RED);
for(i=0;i<100;i+=10)
    { rectangle(i,i,640-i,480-i);
    }
   setcolor(TEXTC);
   outtextxy(115,350,"UP=UPKEY   DOWN=KEYDOWN   LEFT=LEFTKEY   RIGHT=RIGHTKEY");
   outtextxy(115,365,"QQ:769560056 by:fengzi   OK=SPACE    QUIT=ESCKEY");
setcolor(GAMEC);
for(i=0;i<=10;i++)
line(STARTX,i*KEYZ+STARTY,ENDX,i*KEYZ+STARTY);
for(i=0;i<=10;i++)
line(i*KEYZ+STARTX,STARTY,i*KEYZ+STARTX,ENDY);
}
void key(int x,int y,int color)
{
setcolor(color);
rectangle(x*KEYZ+STARTX,y*KEYZ+STARTY,x*KEYZ+STARTX+KEYZ,
y*KEYZ+STARTY+KEYZ);
rectangle(x*KEYZ+STARTX+1,y*KEYZ+STARTY+1,x*KEYZ+STARTX+KEYZ-1,
y*KEYZ+STARTY+KEYZ-1);
   /*画按键*/
}
int a[12][12];/*地雷数组*/
void setdata(void)
{ int i,j,x,y,k;
   int xy[8][2]={{-1,-1},{-1,0},{-1,1},{1,-1},{1,0},{1,1},{0,-1},{0,1}};
   /*八个位置*/
   srand(time(NULL));
   for(i=1;i<=10;i++)
      for(j=1;j<=10;j++)
         a[i][j]=0;
   for(i=0;i<DLNUM;)
      {
      x=rand()%10+1;
      y=rand()%10+1;
      if(a[x][y]!=-1)
        {a[x][y]=-1;i++;}
      }
   for(i=1;i<=10;i++)
     for(j=1;j<=10;j++)
        {
        if(a[i][j]!=-1)
           {
           for(k=0;k<8;k++)    /*四周地雷的数目*/
              {

2009年12月05日 03点12分 1
level 6
hack绝望 楼主
              if(a[i+xy[k][0]][j+xy[k][1]]==-1)
                  a[i][j]++;
              }
           }
        }
}
void game(void)         /*游戏开始*/
{
   void key(int ,int ,int);
int k,x=5,y=5,gamelife=1,winnum=0;
    char num[20];
while(gamelife)
{
if(bioskey(1))
    {
    k=bioskey(0);
    switch(k)
     {
     case UP:
         {
         key(x-1,y-1,GAMEC);
         if(y==1)
            y=10;
         else
            y--;
         key(x-1,y-1,KEYC);
         break;
         }
     case DOWN:
        {
        key(x-1,y-1,GAMEC);
         if(y==10)
            y=1;
         else
            y++;
         key(x-1,y-1,KEYC);
         break;
        }
     case LEFT:
       {
       key(x-1,y-1,GAMEC);
         if(x==1)
            x=10;
         else
            x--;
         key(x-1,y-1,KEYC);
         break;
       }
      case RIGHT:
        {
        key(x-1,y-1,GAMEC);
         if(x==10)
            y=1;
         else
            x++;
         key(x-1,y-1,KEYC);
         break;
        }
     case SPACE:
       {
       if(a[x][y]==-1)
         { gamelife=0;
           break;
          }
       else
         {
         sprintf(num,"%d",a[x][y]);
         outtextxy(x*KEYZ+STARTX-KEYZ/2,y*KEYZ+STARTY-KEYZ/2,num);
         winnum++;     /*当前打开的格子数*/
         break;
         }
       }
     case ESC:
     {
     gamelife=0;
     break;
     }
}
}
if(winnum==10*10-DLNUM)
   {
   wingame();
   winnum=0;
   }
}
circle(x*KEYZ+STARTX-KEYZ/2,y*KEYZ+STARTY-KEYZ/2,7);
gameover();
}
void wingame(void)
{
cleardevice();
outtextxy(200,200,"YOU WIN !enter every key again");
getch();
cleardevice();
setstart();
key(4,4,KEYC);
setdata();
game();
}
void gameover(void)
{
int i;
char k;
   setcolor(BLUE);
for(i=0;i<20;i++)
   rectangle(i*10,i*10,640-i*10,480-i*10);
   getch();
}
main()
{setgraph();
setstart();
key(4,4,KEYC);
setdata();
game();
closegraph();
}
2009年12月05日 03点12分 2
level 6
hack绝望 楼主
case RIGHT:
         {
         key(x-1,y-1,GAMEC);
          if(x==10)
             y=1;// 呃,有点失误,这是x=1;不是y=1;
          else
             x++;
          key(x-1,y-1,KEYC);
          break;
         }
[拍砖]

2009年12月05日 03点12分 3
level 5
老兄又见面了
2009年12月05日 04点12分 4
level 0
是啊是啊
2009年12月05日 04点12分 5
level 5
你那车子晃啊晃的 满好玩的
2009年12月05日 07点12分 6
level 0
那车子是我真实拍下的短片,做成GIF的,不错吧…嘎嘎
2009年12月05日 12点12分 7
level 1
回复:7楼
怎么做GIF呢
2009年12月06日 09点12分 8
1