📄 unit1.~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 + -