📄 vc62.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "VC62.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
unsigned char Road[15]={0x00,0x00,0,0,0,0,0,0,0,0,0,0,0,0,0}; //迷宫信息
unsigned char Mouse_X=0;
unsigned char Mouse_Y=0; //小车在哪个坐标
unsigned char Mouse_Step=0; //走了多少步
unsigned char Mouse_Turn=0; //转为多少个弯
unsigned char Mouse_EndA[5]={0,0,0,0,0};
unsigned char Mouse_End[5]={0,0,0,0,0}; //终点判断
unsigned char Mouse_End_X=0;
unsigned char Mouse_End_Y=0; //终点坐标
unsigned char Step=0; //当前在哪一步
unsigned char Path[64][10]={0}; //路径连接信息
//可行路线信息
unsigned char Path_en[10][64][4]={0};
unsigned int Path_long[10]; //路长
unsigned char Path_enp=0; //可行路径指针
unsigned char Pathp=0; //指针
unsigned char Chose=0; //选择哪一条路
unsigned char Link[64][5][4]; //路径连接信息
int Mouse_dir0=0x07; //上一次前进方向
//0=top 1=down 2=ledt 3=right
int Check(int dir)
{
if(dir==0)
{
if((Mouse_Y)&&!(Road[Mouse_Y*2-1]&(1<<Mouse_X)))
return 1;
else
return 0;
}
else if(dir==1)
{
if((Mouse_X)&&!(Road[Mouse_Y*2]&(1<<(Mouse_X-1))))
return 1;
else
return 0;
}
else if(dir==2)
{
if((Mouse_Y<7)&&!(Road[Mouse_Y*2+1]&(1<<Mouse_X)))
return 1;
else
return 0;
}
else if(dir==3)
{
if((Mouse_X<7)&&!(Road[Mouse_Y*2]&(1<<(Mouse_X))))
return 1;
else
return 0;
}
}
unsigned int N4T(unsigned char *pt) //
{
int i;
int min,max, sum;
min=*pt;
max=*pt;
sum=0;
for(i=0;i<4;i++)
{
max= (max>*(pt+i))? max : *(pt+i);
min= (min<*(pt+i))? min : *(pt+i);
sum+= *(pt+i);
}
if((sum%4)&&(!(sum%2))&&((max-min)==1))
return 1 ;
else
return 0;
}
unsigned int N4R (unsigned char *pt) // 检查最近走的4个点有多少个方向
{
int cou=0;
if(*(pt+1)!=*(pt))
cou++;
if((*(pt+2)!=*(pt))&&(*(pt+2)!=*(pt+1)))
cou++;
if((*(pt+3)!=*(pt))&&(*(pt+3)!=*(pt+1))&&(*(pt+3)!=*(pt+2)))
cou++;
if(cou==3)
return 1 ;
else
return 0;
}
unsigned int Rand (unsigned long t)
{
return(rand()%t);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
int i;
for(i=0;i<15;i++)
{
Road[i]=0;
}
Timer1->Enabled=false;
Timer2->Enabled=false;
Mouse_X=0;
Mouse_Y=0;
draw(Sender); //画迷宫
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
int i,j;
int x0, y0;
for(i=0;i<7;i++)
{
if(((50*i+60)<=X)&&((50*i+70)>X))
break;
}
for(j=0;j<8;j++)
{
if(((50*j+20)<=Y)&&((50*j+60)>Y))
break;
}
if(i<7&&j<8)
{
x0=i;
y0=2*j;
Road[y0]^=(1<<x0);
draw_dot(Sender, x0, y0);
}
for(i=0;i<8;i++)
{
if(((50*i+20)<=X)&&((50*i+60)>X))
break;
}
for(j=0;j<7;j++)
{
if(((50*j+60)<=Y)&&((50*j+70)>Y))
break;
}
if(i<8&&j<7)
{
x0=i;
y0=2*j+1;
Road[y0]^=(1<<x0);
draw_dot(Sender, x0, y0);
}
}
void __fastcall TForm1::draw_dot(TObject *Sender, int x, int y)
{
if(Road[y]&(1<<x)) //
{
Canvas->Pen->Color=RGB(0x00,0x00,0xff);
Canvas->Brush->Color=RGB(0x00,0x00,0xff);
}
else
{
Canvas->Pen->Color=RGB(0xC0,0xC0,0xC0);
Canvas->Brush->Color=RGB(0xC0,0xC0,0xC0);
}
if(y%2) //画横线
{
Canvas->Rectangle(10+x*50+10,10+(y/2+1)*50,10+x*50+50,10+(y/2+1)*50+10);
}
else // 画竖线
{
Canvas->Rectangle(10+(x+1)*50,10+(y/2)*50+10,10+(x+1)*50+10,10+(y/2)*50+50);
}
}
void __fastcall TForm1::draw(TObject *Sender)
{
int i,j;
Canvas->Brush->Color=RGB(0x00,0x00,0xff);
Canvas->Pen->Color=RGB(0x00,0x00,0x00);
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
Canvas->Rectangle(10+i*50,10+j*50,10+i*50+10,10+j*50+10);
}
}
Canvas->Brush->Color=RGB(0x80,0x80,0x80);
Canvas->Pen->Color=RGB(0x00,0x00,0x00);
for(i=0;i<8;i++)
{
Canvas->Brush->Color=RGB(0xff,0x00,0x00);
Canvas->Rectangle(10+i*50+10,10+0*50,10+i*50+50,10+0*50+10);
Canvas->Rectangle(10+i*50+10,10+8*50,10+i*50+50,10+8*50+10);
Canvas->Brush->Color=RGB(0x80,0x80,0x80);
for(j=0;j<7;j++)
{
//Canvas->Rectangle(10+i*50+10,10+j*50,10+i*50+50,10+j*50+10);
draw_dot(Sender,i,2*j+1);
}
}
for(j=0;j<8;j++)
{
Canvas->Brush->Color=RGB(0xff,0x00,0x00);
Canvas->Rectangle(10+0*50,10+j*50+10,10+0*50+10,10+j*50+50);
Canvas->Rectangle(10+8*50,10+j*50+10,10+8*50+10,10+j*50+50);
Canvas->Brush->Color=RGB(0x80,0x80,0x80);
for(i=0;i<7;i++)
{
draw_dot(Sender,i,2*j);
}
}
Canvas->Brush->Color=clBtnFace;
Canvas->Pen->Color=clBtnFace;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
Canvas->Ellipse(50*i+40-15,50*j+40-15,
50*i+40+15,50*j+40+15);
}
}
Canvas->Pen->Color=0;
Canvas->Brush->Color=RGB(0x00,0xff,0xff);
Canvas->Ellipse(50*Mouse_X+40-15,50*Mouse_Y+40-15,
50*Mouse_X+40+15,50*Mouse_Y+40+15);
Label1->Caption="X坐标: "+IntToStr(Mouse_X)+" ";
Label2->Caption="Y坐标: "+IntToStr(Mouse_Y)+" ";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N7Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
int fp, j;
Mouse_X=0;
Mouse_Y=0;
if(OpenDialog1->Execute()) //BMP格式
{
fp=FileOpen(OpenDialog1->FileName,fmOpenReadWrite);
j=FileSeek(fp,0,2); //计算文件长度
Timer1->Enabled=false;
Timer2->Enabled=false;
if(j==15) //长度匹配
{
FileSeek(fp,0,0); //将文件指针移回文件开始位置
FileRead(fp,Road,j); //读取文件
draw(Sender);
}
else
{
ShowMessage("文件格式错误!");
}
FileClose(fp);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender) //保存文件
{
int fp, j;
AnsiString Name;
AnsiString EX_name;
if(SaveDialog1->Execute())
{
Name=SaveDialog1->FileName;
EX_name = ExtractFileExt(SaveDialog1->FileName);
if(EX_name!="ROD") //加入扩展名
{
Name+=".ROD";
}
fp=FileCreate(Name);
FileWrite(fp,Road,15);
FileClose(fp);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1KeyPress(TObject *Sender, char &Key)
{
if(Key=='W'||Key=='w') //top
{
if(Check(0))
{
Go(Sender,0);
}
}
else if(Key=='S'||Key=='s') //down
{
if(Check(1))
{
Go(Sender,1);
}
}
else if(Key=='A'||Key=='a')
{
if(Check(2))
{
Go(Sender,2);
}
}
else if(Key=='D'||Key=='d')
{
if(Check(3))
{
Go(Sender,3);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Auto(Sender);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -