sequelsearch.cpp
来自「关于书籍《Borland c++Builder工程实践》的源代码」· C++ 代码 · 共 204 行
CPP
204 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "SequelSearch.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSeqForm *SeqForm;
//---------------------------------------------------------------------------
__fastcall TSeqForm::TSeqForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::FormCreate(TObject *Sender)
{
Randomize();
Destination = rand()%50+1; //目标值最大为50
value->Text = IntToStr(Destination);
DisplayInterval = 400;
DataGrid->Cells[0][0] = "元素编号";
DataGrid->Cells[1][0] = " 元素值";
for(int i = 1;i < 16;i++)
DataGrid->Cells[0][i] = IntToStr(i);
DataGeneration();
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::ExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::DataGeneration()
{
randomize();
Clean(120,25,280,380);
for(int i = 0;i < 15;i ++)
{
Array[i] = rand()%50+1; //最大值为50
DataGrid->Cells[1][i+1] = IntToStr(Array[i]);
}
DataGrid->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::DataGenerateClick(TObject *Sender)
{
DataGeneration();
Randomize();
Destination = rand()%50+1; //目标值最大为50
value->Text = IntToStr(Destination);
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::DisplayClick(TObject *Sender)
{
int i,j;
bool flag;
Clean(120,25,280,380);
flag = false;
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
pBitmap->Transparent = true;
pBitmap->TransparentMode = tmAuto;
pBitmap->LoadFromFile("hand1.bmp");
for(i = 0;i < 15;i ++)
{
if(Array[i] != Destination)
{
if(i != 14)
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(2*DisplayInterval);
Canvas->TextOutA(170,i*21+32,"与目标值不等");
Sleep(2*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
}
else if(flag)
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(2*DisplayInterval);
Canvas->TextOutA(170,i*21+32,"搜索完毕!");
Sleep(2*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
}
else
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(2*DisplayInterval);
Canvas->TextOutA(170,i*21+32,"没有目标值!");
Sleep(2*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
}
}
else
{
flag = true;
for(j = 0;j < 4;j++) //闪烁效果
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
Sleep(DisplayInterval);
}
Canvas->Draw(130,i*21+28,pBitmap);
Canvas->TextOutA(170,i*21+32,"找到目标值!");
Sleep(5*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
pBitmap->LoadFromFile("ok1.bmp");
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(2*DisplayInterval);
pBitmap->LoadFromFile("hand1.bmp");
}
}
delete pBitmap;
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::Clean(int x1,int y1,int x2,int y2)
{
Canvas->Pen->Mode = pmCopy;
Canvas->Brush->Color = clBtnFace;
Canvas->Pen->Color = clBtnFace;
Canvas->Rectangle(x1,y1,x2,y2); //覆盖画图区域
}
//---------------------------------------------------------------------------
void TSeqForm::Run()
{
int i,j;
bool flag;
flag = false;
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
pBitmap->Transparent = true;
pBitmap->TransparentMode = tmAuto;
pBitmap->LoadFromFile("hand1.bmp");
for(i = 0;i < 15;i ++)
{
if(Array[i] != Destination)
{
if(i != 14)
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(DisplayInterval);
Canvas->TextOutA(170,i*21+32,"与目标值不等");
Sleep(2*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
}
else if(flag)
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(DisplayInterval);
Canvas->TextOutA(170,i*21+32,"搜索完毕!");
Sleep(2*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
}
else
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(DisplayInterval);
Canvas->TextOutA(170,i*21+32,"没有目标值!");
Sleep(2*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
}
}
else
{
flag = true;
for(j = 0;j < 4;j++) //闪烁效果
{
Canvas->Draw(130,i*21+30,pBitmap);
Sleep(DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
Sleep(DisplayInterval);
}
Canvas->Draw(130,i*21+28,pBitmap);
Canvas->TextOutA(170,i*21+32,"找到目标值!");
Sleep(5*DisplayInterval);
Clean(120,24+i*21,280,24+(i+1)*21);
pBitmap->LoadFromFile("ok1.bmp");
Canvas->Draw(130,i*21+30,pBitmap);
pBitmap->LoadFromFile("hand1.bmp");
}
}
delete pBitmap;
}
//---------------------------------------------------------------------------
void __fastcall TSeqForm::TrackBar1Change(TObject *Sender)
{
DisplayInterval = 1100-TrackBar1->Position;
}
//---------------------------------------------------------------------------
void TSeqForm::Transport(int ii)
{
Destination = ii; //目标值最大为50
value->Text = IntToStr(Destination);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?