void Select(int i)
{
  switch(i)
   {
     case 0:Stage("1",0,"{ipgsqi","22-4-11-2-14-12-4",NULL,0);break;        /* 四个参数 stageID(关数),helpID(帮助代号),code(密码),condition(条件或暗示)*/
     case 1:Stage("2",-1,"57=85;78954","RJFI:QRRTSMKGNDCG",NULL,0);break;   /*  -1 数字 0 字母 1 数字+字母 */
     case 2:Stage("3",0,"he$zmrgm","WZ ERMXR",NULL,0);break;
     case 3:Stage("4",0,"]yrQmrk","3111556","http://shada.w11.51web.cn/bbs/dispbbs.asp?boardID=18&ID=5646",0);break;
     case 4:Stage("5",0,"HMJSLXYTSJ","112,110,100,99 100 116,120 22 115,111,118",NULL,1);break;
     case 5:Stage("6",0,"glirkwxsri","DIFOHTUPOF",NULL,0);break;
     case 6:Stage("7",-1,"87778;4<","69-68-68-68-69-72-65-73",NULL,0);break;
     case 7:Stage("8",0,"gsrkvexypexmsrw","ann,a tutor's logic",NULL,0);break;
     case 8:Congratulation();break;  /*这里用樱花大战的音乐 开头是麻利医生的音乐 */
   }
}
void Escape()
{
  int key,n=0;
  KillTimer();
  settextstyle(0,0,3);
  if(codeshow)CodeCut();
  setfillstyle(1,BLUE);
  bar(150,280,500,380);
  setcolor(RED);
  rectangle(150,280,500,380);
  setcolor(YELLOW);
  outtextxy(170,300,"GO> Save Game");
  outtextxy(170,350,"    Exit Game");
  while((key=bioskey(0))!=ENTER)
   {
     switch(key)
      {
        case UP:if(n)
                 {
                   n=0; bar(170,350,240,370);
                   outtextxy(170,300,"GO>");
                   SoundKey();
                 }
                else SoundErr();
                break;
        case DOWN:if(!n)
                 {
                   n=1; bar(170,300,240,320);
                   outtextxy(170,350,"GO>");
                   SoundKey();
                 }
                else SoundErr();
                break;
        case ESC:CodeCut(); settextstyle(0,0,1);
                 setfillstyle(0,0);goto jump;break;
        default:SoundErr();break;
      }
   }
  settextstyle(0,0,1);
  setfillstyle(0,0);
  if(n)sign=0;
  else {
         n=Save(); bar(150,280,500,380); setcolor(RED);
         rectangle(240,280,320,330);
         setcolor(YELLOW);
         if(n)outtextxy(250,300,"SAVE OK");
         else outtextxy(250,300,"SAVE FAIL");
         delay(60000);
         bar(150,280,500,380);
       }
jump:  SetTimer(NewTimer);
}
void Display()
{
  float str[47][2]={{0,0},{HA,60000},{HA,60000},{HA,60000},
                    {HB,60000},{C,30000},{D,30000},{D,30000},{D,30000},
                    {D,30000},{D,30000},{C,15000},{C,15000},{C,60000},
                    {D,15000},{E,15000},{D,60000},{E,30000},{HA,30000},
                    {HG,30000},{HE,30000},{HD,30000},{HE,30000},{HE,15000},
                    {HE,30000},{HE,60000},{HE,60000},{HG,30000},{HF,30000},
                    {HG,60000},{C,30000},{HA,30000},{HA,15000},{HA,30000},
                    {HA,60000},{HA,60000},{HE,30000},{HG,30000},{HA,15000},
                    {HB,15000},{C,30000},{C,60000},{C,60000},{HB,30000},
                    {C,30000},{HE,15000},{HE,30000}};
  int i,m=46;
  cleardevice();
  setcolor(RED);
  settextstyle(0,0,8);
  outtextxy(80,60,"CRACK");
  outtextxy(350,180,"GAME");
  setcolor(WHITE);
  settextstyle(0,0,1);
  outtextxy(70,340,"Tel:13941734510");
  outtextxy(220,340,"E-mail:chengstone@21cn.com");
  outtextxy(460,340,"QQ:43334708");
  randomize();
  while(!bioskey(1))
   {
     setcolor(rand()%15+1);
     outtextxy(280,280,"Enter");
     sound(str[m][0]);delay(str[m--][1]);nosound();
     if(!m)m=46;
     setcolor(0);
     for(i=0;i<10;i++)line(300,240+i,340,240+i);
     sound(str[m][0]);delay(str[m--][1]);nosound();
     if(!m)m=46;
   }
  getch();
}
void Start()
{
  int key=-1,n;
  cleardevice();
  setcolor(6);
  settextstyle(0,0,2);
  outtextxy(170,130,"GO>  New Game");
  outtextxy(170,175,"     Load Game");
  outtextxy(170,225,"     Exit Game");
  setfillstyle(0,0);
  while((n=bioskey(0))!=ENTER)
   {
     switch(n)
      {
        case UP:if(key>-1)
                 {
                   if(key)
                    {
                      bar(170,225,170+50,250+20);
                      outtextxy(170,175,"GO>");
                    }
                   else {
                          bar(170,175,170+50,175+20);
                          outtextxy(170,130,"GO>");
                        }
                   key--; SoundKey();
                 }
                else SoundErr();
                break;
        case DOWN:if(key<1)
                 {
                   if(key)
                    {
                      bar(170,130,170+50,130+20);
                      outtextxy(170,175,"GO>");
                    }
                   else {
                          bar(170,175,170+50,175+20);
                          outtextxy(170,225,"GO>");
                        }
                   key++; SoundKey();
                 }
                else SoundErr();
                break;
        case ESC:if(key<1)
                 {
                   if(key)bar(170,130,170+50,130+20);
                   else bar(170,175,170+50,175+20);
                   outtextxy(170,225,"GO>");
                   key=1; SoundKey();
                 }
                else SoundErr();
                break;
        default:SoundErr();break;
      }
   }
  settextstyle(0,0,1);
  if(key==1)sign=-1;
  else if(key==0)Load();
}
Stage(char *stageID,int helpID,char *code,char *condition,char *other,int end)
{
  int time=60,x=110,y=220,i=0,ON=0;
  char buff[16]={0},word[2];
  word[1]='\0';
  TimerCounter=0;
  cleardevice();
  PutStage(stageID);
  setcolor(YELLOW);
  settextstyle(0,0,1);
  if(!end)outtextxy(230,150,condition);
  else outtextxy(150,150,condition);
  setcolor(RED);
  outtextxy(250,210,"Password:");
  rectangle(195,200,390,250);
  translate(code);
  TimeGraph();
  SetTimer(NewTimer);
  while(time&&!ON&&sign)
   {
     if(TimerCounter>18)
      {
        time-=1; TimerCounter=0;
        CutTime(x); x+=7; _SoundTime();
      }
     if(kbhit())
      {
        accept.x=bioskey(0);
        if(!tab)Enqueue(accept.x);
        if(accept.x==F1||accept.x==UP||accept.x==DOWN||accept.x==TAB||accept.x==ESC||accept.x==ENTER||accept.x==LEFT||accept.x==RIGHT)
         {
           switch(accept.x)
            {
              case F1:Help(helpID);break;
              case DOWN:if(!tab)Compare();break;
              case TAB:if(tab&&!codeshow)CodeGraph();
                       else if(codeshow)CodeCut();
                       break;
              case ESC:Escape();break;
              case ENTER:buff[i]='\0';
                         if(strcmp(code,buff)==0)ON=1;
                         else { i=0; buff[i]='\0';
                                y=220; DelCode();
                              }
                         break;
            }
         }
        else {
               if(accept.h==BS)
                {
                  if(i>0)     /*if(y>130)*/
                   {
                     y-=10;
                     Eraser(y);
                     buff[--i]='\0';
                   }
                }
               else if(i<15)
                     {
                       setcolor(RED);
                       word[0]=accept.h;
                       buff[i++]=accept.h;
                       outtextxy(y,230,word);
                       y+=10;
                     }
             }
      }
     if(time<11)
      if(TimerCounter%18==0)SoundTime();
   }
  KillTimer();
  if(ON)NextStage(other);
  else sign=0;
}
int randto(int m,int n)
{ return rand()%n+m; }
void GameOver()
{
  register i,j;
  int osize,size,x,y;
  void *buffer,*buff;
  setcolor(15);
  randomize();
  for(x=1;x<6-2;x++)
   {
     line(0,240,x,240);
     delay(2000);
     if(x==5-2)for(y=1;y<6-2;y++)
          {
                line(0,239,y,239);
                line(0,241,y,241);
                line(0,240,x+y,240);
                delay(2000);
                if(y==5-2)for(i=1;i<=640;i++)
            {
                           line(0,238,i,238);
                           line(0,242,i,242);
                           line(0,239,y+i,239);
                           line(0,241,y+i,241);
                           line(0,240,x+y+i,240);
                           delay(2000);
                         }
              }
   }
  setcolor(BLACK);
  line(0,240,640,240);
  delay(2000);
  x=240;
  for(y=0;y<50-30;y++)
   { putpixel(rand()%640,240,randto(1,15)); }
  for(i=1,j=3;i<=110;i++,j++)
   {
     setcolor(7);
     line(0,x-i,640,x-i);
     line(0,x+i,640,x+i);
     delay(2000);
     setcolor(WHITE);
     line(0,x-j,640,x-j);
     line(0,x+j,640,x+j);
     delay(2000);
     setcolor(BLACK);
     line(0,x-i,640,x-i);
     line(0,x+i,640,x+i);
     for(y=0;y<50-30;y++)
      {
        putpixel(rand()%640,x-i,randto(1,15));
        putpixel(rand()%640,x+i,randto(1,15));
      }
     delay(2000);
   }
  setcolor(11);
  settextstyle(0,0,8);
  size=imagesize(32,150,383,205);
  buffer=malloc(size);
  osize=imagesize(250,270,598,325);
  buff=malloc(osize);
  getimage(32,150,383,205,buffer);
  getimage(250,270,598,325,buff);
  outtextxy(35,150,"GAME");
  outtextxy(350,270,"OVER");
  putimage(32,150,buffer,COPY_PUT);
  putimage(250,270,buff,COPY_PUT);
  for(i=1;i<=140;i+=5)
   {
    putimage(32,150,buffer,COPY_PUT);
    if(i<=120)putimage(250,270,buff,COPY_PUT);
    outtextxy(35+i,150,"GAME");
    if(i<=120)outtextxy(350-i,270,"OVER");
   }
  getch();
}
void ExitGame()
{
  cleardevice();
  setbkcolor(BLACK);
  setcolor(WHITE);
  outtextxy(180,200,"Thank you for your playing");
  sleep(1);
  outtextxy(240,250,"Good luck!");
  sleep(1);
  closegraph();
}
void main()
{
  Init();
begin:
  InitType();
  Display();
  Start();
  while(sign==1)Select(j);
  if(sign)ExitGame();
  else { GameOver(); goto begin; }
}										
					
	
	
	
			
qq:69558139



 
											





 
	    

 
	

