📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <mmsystem.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
extern char map[100][100];
extern short disp[100][100];
extern short path[1000];
extern short map_h,map_w;
extern short m1,m2;
extern long OLimited;
extern long CLimited;
extern short startx,starty;
extern short endx,endy;
extern long mOpenCount;
extern long mCloseCount;
void popen();
void pclose();
void setting();
void setdefault();
void fpath(bool wdisp);
void draw(TImage *Image1);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OLimited=StrToInt(Edit1->Text);
CLimited=StrToInt(Edit2->Text);
m1=StrToInt(Edit3->Text);
m2=StrToInt(Edit4->Text);
setting();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int i,j;
Image1->Canvas->Refresh();
popen();
randomize();
for (i=0;i<100;i++) for (j=0;j<100;j++) map[j][i]=' ';
setdefault();
Edit1->Text=IntToStr(OLimited);
Edit2->Text=IntToStr(CLimited);
Edit3->Text=IntToStr(m1);
Edit4->Text=IntToStr(m2);
StatusBar1->Panels->Items[1]->Text="鼠标设置障碍,按住SHIFT/ALT修改起点,终点坐标";
StatusBar1->Panels->Items[2]->Text="这里速度慢是作图而非算法";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
pclose();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
int drawm=0;
int x=X/8,y=Y/8,i,c;
TRect rect;
if (x<0||y<0||x>=map_w||y>=map_h) return;
if (Shift.Contains(ssShift)) startx=x,starty=y,drawm=1;
else if (Shift.Contains(ssAlt)) endx=x,endy=y,drawm=1;
else if (Shift.Contains(ssLeft)) map[y][x]='o',drawm=1;
else if (Shift.Contains(ssRight)) map[y][x]=' ',drawm=1;
if (drawm)
{
fpath(1);
StatusBar1->Panels->Items[2]->Text="Open/Close最高数"+IntToStr(mOpenCount)+","+IntToStr(mCloseCount);
for (i=0;path[i]>=0;i+=2)
disp[path[i+1]][path[i]]=-1;
rect.top=0;
rect.left=0;
rect.right=7;
rect.bottom=7;
for (y=0;y<map_h;rect.top+=8,rect.bottom+=8,y++)
for (x=0,rect.left=0,rect.right=7;x<map_w;rect.left+=8,rect.right+=8,x++)
{
c=0xffffff;
if (map[y][x]!=' ') c=0x1122ee;
else if (disp[y][x]<0) c=0x11ee22;
else if (disp[y][x]>0) c=disp[y][x],c=((c*10)&0xff)<<16;
if (x==startx&&y==starty) c=0xff00ff;
if (x==endx&&y==endy) c=0xff00ff;
Image1->Canvas->Brush->Color=c;
Image1->Canvas->FillRect(rect);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
setdefault();
Edit1->Text=IntToStr(OLimited);
Edit2->Text=IntToStr(CLimited);
Edit3->Text=IntToStr(m1);
Edit4->Text=IntToStr(m2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
int x=X/8,y=Y/8;
StatusBar1->Panels->Items[0]->Text="";
if (x<0||y<0||x>=map_w||y>=map_h) return;
StatusBar1->Panels->Items[0]->Text=IntToStr(x)+","+IntToStr(y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int i,j;
for (i=0;i<map_w;i++) for (j=0;j<map_h;j++) map[j][i]=' ';
draw(Image1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int i;
for (i=0;i<map_h*map_w/2;i++)
map[rand()%map_h][rand()%map_w]='o';
draw(Image1);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -