签到

06月21日
尚未签到

共有回帖数 0

    做月子

    等级:
    #includestdio.h
    #includedos.h
    #includestring.h
    #includestdlib.h
    #includebios.h
    #includegraphics.h
    #includeconio.h
    #include alloc.h
    #includetime.h
    #include math.h
    #define  MAX   3        /*游戏的总关数*/
    #define  STEPMAX   3    /*悔棋的最大步数*/
    #define Key_R 0x1372
    #define Key_Up  0x4800
    #define Key_Enter 0x1c0d
    #define Key_Down  0x5000
    #define Key_P     0x1970
    #define Key_Esc   0x11b
    #define Key_Right  0x4d00
    #define Key_Left  0x4b00
    #define  BKCOLOR   GREEN /*设置背景颜色*/
    #define  STARTX   40     /*画游戏界面时,二维数组中ghose[0][0]左上角顶点在VGA模式下的横坐标*/
    #define  STARTY   80     /*画游戏界面时,二维数组中ghose[0][0]左上角顶点在VGA模式下的纵坐标*/  
    int ghose[10][10];       /*用来表示游戏中各种状态的二维数组*/
    int BOXNUM;              /*每关中箱子的个数*/
    int MISSIONNUM;          /*玩家正在玩的关数*/
    int Key;                 /*从键盘读取按键值*/
    int STEPNUM;             /*人走的步数*/
    int DIRECTIONKEY;        /*用来记录玩家所按的方向键*/
    int BOXMOVE[STEPMAX];    /*记录人行走时箱子移动了没有.如有,BOXMOVE=1,否则BOXMOVE=0*/
    int STEP[STEPMAX];           /*记录人行走的方向*/
    typedef  struct  CURRENT    
    { int x;
     int y;
     }PLAYER;          
    PLAYER  p;               /*p.x和p.y分别表示人当前所在的横纵坐标*/
    typedef  struct ADD
    { int x;
     int y;
    }ADD;                    /*人行走或悔棋时,用来表示人下一步移动需要增加的横纵坐标值*/
    typedef struct STAR
    { int x;
     int  y;
     int  c;
    } STAR;                  
    STAR  s[300];            /*画星星闪动的画面,x,y分别表示每颗星星所在的位置,c表示星星的颜色*/
    DRAWSTAR1()              /*画星星*/
    {int  i,j,m,n,dotx,doty,color,maxcolor;
    m=getmaxx();
    n=getmaxy();
    maxcolor=getmaxcolor();
    for(i=0;i300;i++)
    { s.x=random(m+1);
     s.y=random(n+1);
     s.c=random(maxcolor);
     putpixel(s.x,s.y,s.c);}}
     DRAWSTAR()            /*让星星的坐标不变,颜色变换*/
    {int  i,j,m,n,dotx,doty,color,maxcolor;
    m=getmaxx();
    n=getmaxy();
    maxcolor=getmaxcolor();
    for(i=0;i300;i++)
    { s.x=random(m+1);
     s.y=random(n+1);
     s.c=random(maxcolor);
     putpixel(s.x,s.y,s.c);
    }
    do{ for(i=0;i20000;i++)
    delay(2);
    for(j=0;j300;j++)
    {
     s[j].c=random(maxcolor);
     putpixel(s[j].x,s[j].y,s[j].c);}
    }while(!bioskey(1));
    }
    GOOD()                /*画火球滚动的画面*/
    {void * ptr;
    float i;
    setactivepage(1);
    setcolor(RED);
    setfillstyle(1,14);
    fillellipse(10,10,10,10);
    ptr=malloc(imagesize(0,0,20,20));
    getimage(0,0,20,20,ptr);
    randomize();
    setactivepage(0);
    DRAWSTAR1();
    for(i=0;i6.28*4;i=i+0.005)
    {putimage(300+8*(cos(i)+i*sin(i)),240+6*(sin(i)-i*cos(i)),ptr,COPY_PUT);
    putimage(300+8*(cos(i)+(i)*sin(i)),240+6*(sin(i)-(i)*cos(i)),ptr,COPY_PUT);
    if(kbhit()) break;
    delay(10);
    }
    }
    void GAME()     /*游戏过程的控制*/
    { int i,j,flag;
     ADD  a;
     MISSIONNUM=0;
     NEXTMISSION();
     do { flag=0;
       Key=bioskey(0);
       switch(Key)
    { case  Key_Enter:{NEXTMISSION();break;}
     case  Key_Up:{a.x=-1;a.y=0;flag=1;DIRECTIONKEY=Key;break;}
     case  Key_Down:{a.x=1;a.y=0;flag=1;DIRECTIONKEY=Key;break;}


    case  Key_Left:{a.x=0;a.y=-1;flag=1;DIRECTIONKEY=Key;break;}
     case  Key_Right:{a.x=0;a.y=1;flag=1;DIRECTIONKEY=Key;break;}
     case  Key_R:{MISSIONNUM--;NEXTMISSION();break;}
     case  Key_P:{REVERSELYMOVE();break;}
     case  Key_Esc:{DRAWEND();break;}}
     if(flag==1)
     { if(MOVE(a))
     {  REGISTERSTEP();
        if(JUDGEWIN())
        {settextstyle(1,0,2);
        setcolor(RED);
        outtextxy(40,10,"YOU HAVE PASSED THIS MISSION!");
        outtextxy(40,30,"PLEASE PRESS ANYKEY TO CONTINUE!");
        bioskey(0);
        NEXTMISSION();}}}}while(1);
       }
     NEXTMISSION()          /*画下一关的游戏界面*/
     {int i,j;
      if(MISSIONNUM+1MAX)
      MISSIONNUM=1;
      else  MISSIONNUM++;
      cleardevice();
      CHOOSEMISSION(MISSIONNUM);
      for(i=0;i10;i++)
      for(j=0;j10;j++)
      DRAWMISSION(ghose[j],j,i);
      DRAWINTRODUCTION();
      settextstyle(1,0,2);
      switch(MISSIONNUM)
      { case 1:outtextxy(60,50,"MISSION 1");break;
        case 2:outtextxy(60,50,"MISSION 2");break;
        case 3:outtextxy(60,50,"MISSION 3");break;
      }
      for(i=0;iSTEPMAX;i++)
      STEP=BOXMOVE=0;
      STEPNUM=0;}
    REGISTERSTEP()            /*登记步子*/
    { int i;
     STEPNUM++;
     i=(STEPNUM-1)%STEPMAX;
     STEP=DIRECTIONKEY;}
     int JUDGEWIN()         /*人每走一步,就判断赢了没有*/
     {int n=0,i,j;
      for(i=0;i10;i++)
      for(j=0;j10;j++)
      if(ghose[j]==6)  n++;
      if(n==BOXNUM)    return 1;
      else return  0;}
    REVERSELYMOVE()            /*对悔棋的处理*/
    { int i;
     ADD  a;
     i=(STEPNUM-1)%STEPMAX;
     if(STEP==0)   return;
     else{ switch(STEP)
      {case  Key_Up:{a.x=1;a.y=0;MOVEBACK(a);break;}
       case  Key_Down:{a.x=-1;a.y=0;MOVEBACK(a);break;}
       case  Key_Left:{a.x=0;a.y=1;MOVEBACK(a);break;}
       case  Key_Right:{a.x=0;a.y=-1;MOVEBACK(a);break;} }
    STEPNUM--;STEP=0;BOXMOVE=0;}}
    MOVE(ADD a)     /*依据人的下一位置的状态来控制人的行走*/
    { int flag;
      int i=STEPNUM%STEPMAX;
      switch(ghose[p.x+a.x][p.y+a.y])
    { case  0:{if(ghose[p.x][p.y]==5)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=4;}
              if(ghose[p.x][p.y]==2)
              {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=0;}
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              p.x=p.x+a.x;p.y=p.y+a.y;
              ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=2;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              flag=1;break;}
      case  3:{if(ghose[p.x+2*a.x][p.y+2*a.y]==0||ghose[p.x+2*a.x][p.y+2*a.y]==4)
             {if(ghose[p.x+2*a.x][p.y+2*a.y]==0)
             {if(ghose[p.x][p.y]==5)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=4;}
              if(ghose[p.x][p.y]==2)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=0;}
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x+a.x][p.y+a.y]=ghose[p.x+2*a.x][p.y+2*a.y]=0;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);


    DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x);
              ghose[p.x+a.x][p.y+a.y]=2;
              ghose[p.x+2*a.x][p.y+2*a.y]=3;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
              DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x); }
              if(ghose[p.x+2*a.x][p.y+2*a.y]==4)
                {if(ghose[p.x][p.y]==5)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=4;}
              if(ghose[p.x][p.y]==2)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=0;}
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x+a.x][p.y+a.y]=ghose[p.x+2*a.x][p.y+2*a.y]=0;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x);
              ghose[p.x+a.x][p.y+a.y]=2;
              ghose[p.x+2*a.x][p.y+2*a.y]=6;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
              DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x); }
              p.x=p.x+a.x; p.y=p.y+a.y;flag=1;BOXMOVE=1;}
              else  flag=0;break;}
              case 1:flag=0;break;
              case 4:{if(ghose[p.x][p.y]==5)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=4;}
              if(ghose[p.x][p.y]==2)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=0;}
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              p.x=p.x+a.x;p.y=p.y+a.y;
              ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=5;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              flag=1;break;}
          case  6:{if(ghose[p.x+2*a.x][p.y+2*a.y]==0||ghose[p.x+2*a.x][p.y+2*a.y]==4)
             {if(ghose[p.x+2*a.x][p.y+2*a.y]==0)
             {if(ghose[p.x][p.y]==5)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=4;}
               if(ghose[p.x][p.y]==2)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=0;}
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x+a.x][p.y+a.y]=ghose[p.x+2*a.x][p.y+2*a.y]=0;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x);
              ghose[p.x+a.x][p.y+a.y]=5;
              ghose[p.x+2*a.x][p.y+2*a.y]=3;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
              DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x); }
              if(ghose[p.x+2*a.x][p.y+2*a.y]==4)
                {if(ghose[p.x][p.y]==5)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=4;}
               if(ghose[p.x][p.y]==2)
             {ghose[p.x][p.y]=0;
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
              ghose[p.x][p.y]=0;}
              DRAWMISSION(ghose[p.x][p.y],p.y,p.x);



          ghose[p.x+a.x][p.y+a.y]=ghose[p.x+2*a.x][p.y+2*a.y]=0;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x);
              ghose[p.x+a.x][p.y+a.y]=5;
              ghose[p.x+2*a.x][p.y+2*a.y]=6;
              DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
              DRAWMISSION(ghose[p.x+2*a.x][p.y+2*a.y],p.y+2*a.y,p.x+2*a.x); }
              p.x=p.x+a.x; p.y=p.y+a.y;flag=1;BOXMOVE=1;}
              else  flag=0;break;}}
              return  flag;
             }
     MOVEBACK(ADD a)    /*分箱子没有移动和箱子移动了两种情况分别进行悔棋*/
     { int i=(STEPNUM-1)%STEPMAX;
       if(BOXMOVE==0)
     { if(ghose[p.x+a.x][p.y+a.y]==0&&ghose[p.x][p.y]==2)
      {ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
       ghose[p.x][p.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       ghose[p.x+a.x][p.y+a.y]=2;
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);}
       if(ghose[p.x+a.x][p.y+a.y]==4&&ghose[p.x][p.y]==5)
      {ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
       ghose[p.x][p.y]=4;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       ghose[p.x+a.x][p.y+a.y]=5;
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);}
       if(ghose[p.x+a.x][p.y+a.y]==5&&ghose[p.x][p.y]==0)
      { ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
       ghose[p.x][p.y]=4;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       ghose[p.x+a.x][p.y+a.y]=2;
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);}
       if(ghose[p.x+a.x][p.y+a.y]==2&&ghose[p.x][p.y]==4)
     { ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
       ghose[p.x][p.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       ghose[p.x+a.x][p.y+a.y]=5;
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);}
       p.x=p.x+a.x;p.y=p.y+a.y;}
       else if(BOXMOVE==1)
     {
      if(ghose[p.x-a.x][p.y-a.y]==3&&ghose[p.x][p.y]==2&&ghose[p.x+a.x][a.y+p.y]==0)
      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
       ghose[p.x-a.x][p.y-a.y]=0;
       DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
       ghose[p.x][p.y]=3;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
       ghose[p.x+a.x][p.y+a.y]=2;
       DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
       if(ghose[p.x-a.x][p.y-a.y]==3&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][a.y+p.y]==0)
      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);



    ghose[p.x-a.x][p.y-a.y]=0;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=6;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=2;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
      if(ghose[p.x-a.x][p.y-a.y]==3&&ghose[p.x][p.y]==2&&ghose[p.x+a.x][a.y+p.y]==4)
     {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      ghose[p.x-a.x][p.y-a.y]=0;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=3;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=5;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
       if(ghose[p.x-a.x][p.y-a.y]==3&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][a.y+p.y]==4)
      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      ghose[p.x-a.x][p.y-a.y]=0;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=6;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=5;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
       if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==2&&ghose[p.x+a.x][a.y+p.y]==0)
      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
       ghose[p.x-a.x][p.y-a.y]=4;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=3;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=2;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
      if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][a.y+p.y]==0)
      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      ghose[p.x-a.x][p.y-a.y]=4;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=6;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=2;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
      if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==2&&ghose[p.x+a.x][a.y+p.y]==4)
      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
       DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      ghose[p.x-a.x][p.y-a.y]=4;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=3;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=5;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
      if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][p.y+a.y]==4)


      {ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      ghose[p.x-a.x][p.y-a.y]=4;
      DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
      ghose[p.x][p.y]=6;
      DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
      ghose[p.x+a.x][p.y+a.y]=5;
      DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
      }
       p.x=p.x+a.x; p.y=p.y+a.y;}}

    DRAWEND()          /*画结束时的界面*/
    { setbkcolor(BLACK);
     cleardevice();
     setcolor(YELLOW);
     setfillstyle(1,YELLOW);
     circle(440,100,80);
     floodfill(401,101,YELLOW);
     setcolor(YELLOW);
     settextstyle(1,0,8);
     outtextxy(120,240,"GOODBYE !");
     DRAWSTAR();
     bioskey(0);
     exit(0);}
    ABOVEALL()        /*画开始时的欢迎界面*/
    { setcolor(YELLOW);
     setfillstyle(1,YELLOW);
     circle(440,100,80);
     floodfill(401,101,YELLOW);
     setcolor(RED);
     settextstyle(1,0,5);
     outtextxy(5,240,"WELCOME TO THE BOX WORLD!");
     DRAWSTAR();
     bioskey(0);
     }
    void DrawRectangle(int i,int j,int k,int l)    /*用于画登陆界面中的矩形边框*/
    { setcolor(RED);
     setfillstyle(1,GREEN);
     rectangle(i,j,k,l);
     floodfill(i+1,j+1,BLACK);
     }
    void DrawStar()       /*用户登陆时在界面指定地方输出文字*/
    { int  n;
     char *s[4]={"USERS LANDING","ACCOUNTS","PASSWORD","VALIDATE"};
     settextstyle(0,0,2);
     setcolor(RED);
     outtextxy(140,100,s[0]);
     settextstyle(0,0,1);
     for(n=1;n4;n++)
     outtextxy(120,100+n*30,s[n]);
     settextstyle(0,0,2);
     outtextxy(270,188,"(ACDF)");
     }
    DRAWLANDING()         /*画登陆界面*/
    {
    DrawRectangle(185,121,360,141);
    DrawRectangle(185,152,360,172);
    DrawRectangle(185,184,270,204);
    DrawStar();
    settextstyle(0,0,1);
    bioskey(0);
    if(!bioskey(1))
    {setcolor(GREEN);
    outtextxy(187,129,"200531500194");
    outtextxy(187,160,"**********");
    settextstyle(0,0,2);
    outtextxy(187,188,"ACDF");
    }
    bioskey(0);
    }
    void Init()         /*驱动显卡*/
    {
    int gd=VGA,gm=VGAHI;
    initgraph(&gd,&gm,"c:\tc");
    }
    DRAWBACK(int i,int j)    /*画空地*/
    { setcolor(GREEN);
     setfillstyle(1,GREEN);
     rectangle(STARTX+i*36,STARTY+j*36,STARTX+(i+1)*36,STARTY+(j+1)*36);
     floodfill(STARTX+i*36+18,STARTY+j*36+18,GREEN);}
    DRAWMAN(int i,int j)        /*画空地上的人*/
    {  setcolor(RED);
      setfillstyle(1,WHITE);
      circle(STARTX+18+i*36,STARTY+18+j*36,18);
      floodfill(STARTX+18+i*36,STARTY+18+j*36,RED);
      arc(STARTX+18+i*36-6,STARTY+18+j*36-4,20,160,4);
      arc(STARTX+18+i*36+6,STARTY+18+j*36-4,20,160,4);
      arc(STARTX+18+i*36,STARTY+18+j*36-4,220,320,14);
      }
    DRAWBOX(int i,int j)          /*画空地上的箱子*/
    {  setcolor(YELLOW);
      setfillstyle(1,BLUE);
      rectangle(STARTX+i*36,STARTY+j*36,STARTX+i*36+35,STARTY+j*36+35);
      floodfill(STARTX+i*36+18,STARTY+j*36+18,YELLOW);
    }
    DRAWFLAG(int i,int j)         /*画目的地--旗子*/
    {setcolor(YELLOW);
    arc(STARTX+i*36+12,STARTY+j*36-18,240,300,24);
    arc(STARTX+i*36+12,STARTY+j*36-18+18,240,300,24);
    arc(STARTX+i*36+12+18,STARTY+j*36-18+30,60,120,12);


    arc(STARTX+i*36+12+18,STARTY+j*36-18+48,60,120,12);
    line(STARTX+i*36+12-12,STARTY+j*36-18+22,STARTX+i*36+12-12,STARTY+j*36-18+53);
    line(STARTX+i*36+12+23,STARTY+j*36-18+20,STARTX+i*36+12+23,STARTY+j*36-18+38);
    }
    DRAWMAN1(int i,int j)        /*画到达目的地后的人*/
    {  setcolor(RED);
      setfillstyle(1,YELLOW);
      circle(STARTX+18+i*36,STARTY+18+j*36,18);
      floodfill(STARTX+18+i*36,STARTY+18+j*36,RED);
      arc(STARTX+18+i*36-6,STARTY+18+j*36-4,20,160,4);
      arc(STARTX+18+i*36+6,STARTY+18+j*36-4,20,160,4);
      arc(STARTX+18+i*36,STARTY+18+j*36-4,220,320,14); }
    DRAWBOX1(int i,int j)      /*画到达目的地后的箱子*/
    { setcolor(YELLOW);
     setfillstyle(1,YELLOW);
     bar(STARTX+i*36,STARTY+j*36,STARTX+i*36+36,STARTY+j*36+36);
     }
    DRAWWALL(int i,int j)         /*画障碍物--墙壁*/
    {setcolor(RED);
    setfillstyle(1,RED);
    bar(STARTX+i*36,STARTY+j*36,STARTX+i*36+36,STARTY+j*36+36);}
    DRAWMAN2(int i,int j)         /* 画游戏界面时旁边介绍时用的人(在空地)*/
    {  setcolor(RED);
      setfillstyle(1,WHITE);
      circle(i,j,18);
      floodfill(i+1,j+1,RED);
      arc(i-6,j-4,20,160,4);
      arc(i+6,j-4,20,160,4);
      arc(i,j-4,220,320,14);
      }
    DRAWBOX2(int i,int j)       /* 画游戏界面时旁边介绍时用的箱子(在空地)*/      
    {  setcolor(YELLOW);
      setfillstyle(1,BLUE);
      rectangle(i,j,i+36,j+36);
      floodfill(i+1,j+1,YELLOW);
    }
    DRAWBOX3(int i,int j)       /* 画游戏界面时旁边介绍时用的箱子(在目的地)*/
    {setcolor(YELLOW);
    setfillstyle(1,YELLOW);
    rectangle(i,j,i+36,j+36);
    floodfill(i+1,j+1,YELLOW);
    }
    DRAWFLAG1(int i,int j)       /* 画游戏界面时旁边介绍时用的目的地--旗子*/
    {setcolor(YELLOW);
    arc(i,j,240,300,24);
    arc(i,j+18,240,300,24);
    arc(i+18,j+30,60,120,12);
    arc(i+18,j+48,60,120,12);
    line(i-12,j+22,i-12,j+53);
    line(i+24,j+20,i+24,j+38);
    }
    DRAWMAN3(int i,int j)          /* 画游戏界面时旁边介绍时用的人(在目的地)*/
    { setcolor(RED);
     setfillstyle(1,YELLOW);
     circle(i,j,18);
     floodfill(i+1,j+1,RED);
     arc(i-6,j-4,20,160,4);
     arc(i+6,j-4,20,160,4);
     arc(i,j-4,220,320,14);}
    DRAWWALL1(int i,int j)         /* 画游戏界面时旁边介绍时用的障碍物--墙壁*/
    {setcolor(RED);
    setfillstyle(1,RED);
    bar(i,j,i+36,j+36);}
    MISSION1()                     /*画第一关的游戏界面*/
    {int m,n;
    for(m=0;m10;m++)
    for(n=0;n10;n++)
    ghose[m][n]=0;
    for(m=0;m10;m++)
    ghose[0][m]=ghose[9][m]=ghose[m][0]=ghose[m][9]=1;
    for(m=1;m3;m++)
    ghose[m][5]=1;
    for(m=4;m7;m++)
    ghose[m][1]=1;
    for(m=4,n=7;m7&&n4;m++,n--)
    ghose[m][n]=1;
    ghose[6][8]=ghose[8][5]=ghose[5][3]=1;
    ghose[8][1]=2;
    for(m=2;m4;m++)
    ghose[m][2]=ghose[3][m]=3;
    ghose[1][8]=ghose[6][6]=ghose[8][8]=4;
    p.x=8; p.y=1;BOXNUM=3;
    }
    MISSION2()                /*画第二关的游戏界面*/
    {int m,n;
    for(m=0;m10;m++)
    for(n=0;n10;n++)
    ghose[m][n]=0;
    for(m=0;m10;m++)
    ghose[0][m]=ghose[9][m]=ghose[m][0]=ghose[m][9]=1;
    for(m=2;m4;m++)
    ghose[m][1]=ghose[3][m-1]=1;
    for(m=3,n=6;m1&&n8;m--,n++)
    ghose[m][n]=1;
    for(m=4;m7;m++)
    ghose[6][m]=ghose[m+1][5]=1;
    ghose[1][4]=ghose[2][8]=1;
    ghose[6][8]=2;
    for(m=3;m5;m++)
    ghose[m][4]=ghose[4][m]=3;
    ghose[4][2]=3;
    ghose[2][6]=ghose[3][7]=ghose[5][6]=ghose[7][6]=4;
    p.x=6;  p.y=8;BOXNUM=4;
    }
    MISSION3()           /*画第三关的游戏界面*/
    {int m,n;
    for(m=0;m10;m++)
    for(n=0;n10;n++)
    ghose[m][n]=0;
    for(m=0;m10;m++)
    ghose[0][m]=ghose[9][m]=ghose[m][0]=ghose[m][9]=1;
    for(m=2,n=5;m4&&n7;m++,n++)
    ghose[m][n]=1;
    ghose[1][3]=ghose[3][3]=ghose[4][1]=ghose[5][4]=ghose[6][7]=ghose[7][5]=ghose[8][3]=1;
    ghose[4][4]=2;
    for(m=6;m8;m++)
    ghose[m][2]=ghose[m][4]=3;
    ghose[7][3]=3;
    for(m=6;m9;m++)
    ghose[1][m]=4;
    ghose[3][1]=ghose[8][7]=4;
    p.x=4;  p.y=4;  BOXNUM=5;  }
    DRAWMISSION(int n,int i,int j)   /*依据ghose[j]所对应的值,在相应位置画出图像*/  
    {
    switch(n)
      {
      case 0:DRAWBACK(i,j);break;
      case 1:DRAWWALL(i,j);break;
      case 2:DRAWMAN(i,j);break;
      case 3:DRAWBOX(i,j);break;
      case 4:DRAWFLAG(i,j);break;
      case 5:DRAWMAN1(i,j);break;
      case 6:DRAWBOX1(i,j);break;
      }
    }
    CHOOSEMISSION(int n)   /*根据关数去画相应的游戏界面*/      
    {
     int i,j;
     for(i=0;i10;i++)
     for(j=0;j10;j++)
     ghose[j]=0;
    switch(n)
      {
       case 1:MISSION1();break;
       case 2:MISSION2();break;
       case 3:MISSION3();break;
      }
    }
    DRAWINTRODUCTION( )   /*画游戏界面旁边的介绍*/
    { int n;
     char *s[6]={"WALL","MAN","BOX","DESTINATION","MAN&&DESTINATION","BOX&&DESTINATION"};
     settextstyle(1,0,2);
     outtextxy(430,40,"INTRODUCTION");
     settextstyle(0,0,1);
     for(n=0;n6;n++)
     outtextxy(500,100+n*50,s[n]);
    DRAWWALL1(455,82);
    DRAWMAN2(473,151);
    DRAWBOX2(455,182);
    DRAWFLAG1(467,220);
    DRAWMAN3(473,301);
    DRAWBOX3(455,335);}
    void main()            /*主函数*/
    {
    Init();
    GOOD();
    setbkcolor(BLACK);
    cleardevice();
    ABOVEALL();
    setbkcolor(BLUE);
    cleardevice();
    DRAWLANDING();
    setbkcolor(BKCOLOR);
    cleardevice();
    GAME();
    getch();
    closegraph();
    }








    回复7楼
    2006-07-02 11:52
    举报 |个人企业举报垃圾信息举报
     

    218.26.102.*

    对于我这样的C语言初学者 ~~~~~~真是雾里看花~~~只能看出个大概来~~~~


    楼主 2016-02-25 11:08 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知