⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~cpp

📁 用c++builder6寫的連連看
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "stdlib.h"
#include "Unit1.h"
#include <string.h>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int Map[22][12];
int RanNumber[34];
int count=300;
int count_down(void);
int dir1,dir2,dir3,dis1,dis2,dis3;
   int dflag;
   int mycount,mycount2;
   int Sx,Sy,Dx,Dy;
   int Sx2,Sy2,Dx2,Dy2;
   int DirX[4]={0,1,0,-1};
   int DirY[4]={-1,0,1,0};
   int Fire;
bool IsPaint=false;
struct Level
{
   int x;
   int y;
   int xrage;
   int yrage;
   int width;
   int height;

};
 //Draw* Le[4];
Level mylevel[4]={{56,52,728,468,54,50},{52,52,676,416,50,52},{46,52,690,468,45,50},{44,46,704,414,42,43}};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
          Shape1->Width=count;
          Shape2->Width=count;


}
//---------------------------------------------------------------------------

int count_down(void)
{
  count=count-1;
 return count;
}


 class Main_Mj
{
    friend class MyLevel;
    public:

        int MainSearch();
        int leftmj;
        void Mjinit();


   private:

           int SubSearch();
           int SubSearch1(int,int);
           int SubSearch2(int,int);


};

void Main_Mj::Mjinit()
{
   for(int i=0;i<=21;i++)
      {
         for(int j=0;j<=11;j++)
            {
               Map[i][j]=0;

            }

      }

   for(int i=0;i<=34;i++)
     {
        RanNumber[i]=0;
     }

    Form1->ComboBox1->Enabled=true;
    count=300;
    Form1->Shape2->Width=300;
    Form1->Shape2->Brush->Color=clSilver;


}


int Main_Mj::MainSearch()
{
    for(int i=0;i<=3;i++)
       {
              dir1=i;

             if (SubSearch()!= 0)
              {
                 return i;
              }

       }

                 return -1;
}


int Main_Mj::SubSearch()
{
   int bx,by,L;
   for(int i=1;i<=20;i++)
     {

          bx=Sx+DirX[dir1]*i;
          by=Sy+DirY[dir1]*i;

        if(bx==Dx && by==Dy)
          {
            dflag=0;
            dis1=i;
            return dis1;

          }

         if(Map[bx][by]!=0)
           {
              return 0;
           }

           dir2=(dir1+1)%4;
           L=SubSearch1(bx,by);
         if (L>0)
           {
             dis1=i;
             dis2=L;
             return dis1;

           }

             dir2=dir1-1;
           if(dir2<0)
             {
               dir2=3;
             }

           L=SubSearch1(bx,by);
           if(L>0)
            {
              dis1=i;
              dis2=L;
              return dis1;
            }

      } //end for

   return 0;

}

int Main_Mj::SubSearch1(int tx,int ty)
{
    int L,bx,by;
    for(int i=1;i<=20;i++)
      {
            bx=tx+DirX[dir2]*i;
            by=ty+DirY[dir2]*i;
         if(bx==Dx && by==Dy)
           {
              dflag=1;
              dis2=i;
              return dis2;

           }
          if(Map[bx][by]!=0)
            {
               return 0;
            }

           dir3=(dir2+1)%4;
           L=SubSearch2(bx,by);

          if(L>0)
           {
             dis2=i;
             dis3=L;
             dflag=2;
             return dis2;
           }

             dir3=dir2-1;
           if(dir3<0)
            {
              dir3=3;
            }

             L=SubSearch2(bx,by);
            if(L>0)
              {
                dis2=i;
                dis3=L;
                dflag=2;
                return dis2;

              }

      }//end for


               return 0;
}


int Main_Mj::SubSearch2(int tx,int ty)
{
    int bx,by;
    for(int i=1;i<=20;i++)
      {
           bx=tx+DirX[dir3]*i;
           by=ty+DirY[dir3]*i;
           if(bx==Dx && by==Dy)
             {
               return i;
             }

           if(Map[bx][by]!= 0)
             {
               return 0;
             }

      }//end for

               return 0;

}



class Choice_Mode
{
  public:
       virtual  void Simple(int){};
       virtual  void difficult(){};

};

class MY_Choice: public Choice_Mode
{
   public:
          virtual  void Simple(int);
          virtual  void difficult(int,int);
                   void Assint_Map(int,int,int);

};

void MY_Choice::difficult(int num,int a)
{
  int c=0,b,x=0,y=0;
  for(int i=1;i<=num;i++)
      {
         for(int j=0;j<=3;j++)
           {
              c=random((num*4));
              b=0;
              while(b<(num*4))
                  {
                      b=(b+1) % (num*4);
                      x=(b%a)+2;
                      y=int(b/a)+2;

                    if (Map[x][y]==0 && c<=0)
                      {
                        Map[x][y]=i;
                        b=(num*4);
                      }
                       c=c-1;
                   }//end while


             }


         }



}

void  MY_Choice::Simple(int Num)
{

    int temp,swap;
    for(int i=1;i<=(Num);i++)
       {
         RanNumber[i-1]=i;
       }

       //randomize();
     for(int i=(Num-1);i>=0;i--)
        {
           // randomize();
            swap=(random(24));
            temp=RanNumber[i];
            RanNumber[i]=RanNumber[swap];
            RanNumber[swap]=temp;
        }


}


void  MY_Choice::Assint_Map(int i,int j,int Num)
{
   int count=0;
       Simple(Num);
       for(int h=2;h<=i;h++)
          {
             for(int k=2;k<=j;k++)
                {
                     Map[h][k]=RanNumber[count];
                     count=count+1;
                     if(count>(Num-1))
                       {
                         count=0;

                         Simple(Num);
                       }

                }

          }




}


class Draw
{
  public:
        virtual void ShowMj(){};
        virtual void ShowMjedge(int,int){};
        virtual void Init_Map(){};
        virtual void DelMj(){};
};

//琍畒肚弧
class MyLevel:public Draw
{
 public:
       void ShowMj();
       void ShowMjedge(int,int);
       void Init_Map();
       void DelMj();
};
//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -