?? unit1.cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
bool isKeyDown(LPARAM lParam){
return lParam>>30==0;
}
bool isKeyChar(LPARAM lParam){
return lParam>>30==1 && lParam>>31==0;
}
LRESULT CALLBACK KeyboardPorc(int code,WPARAM wParam,LPARAM lParam)
{
if(isKeyDown(lParam) || isKeyChar(lParam))
{
if(wParam==VK_LEFT || wParam==VK_RIGHT ||
wParam==VK_UP || wParam==VK_DOWN ){
//ShowMessage(wParam);
MainForm->movedByKey(wParam);
return true; //鍵松開
}
}
return false;
}
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
//HHOOK hhk=
SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC) KeyboardPorc,NULL,GetCurrentThreadId());
d.init();
int BTNS_WIDTH=50;
int BTNS_HEIGHT=50;
int OFFSET_X=50;
int OFFSET_Y=50;
BTNS_WIDTH=BtnDingWei->Width/3;
BTNS_HEIGHT=BtnDingWei->Height/3;
OFFSET_X=BtnDingWei->Left;
OFFSET_Y=BtnDingWei->Top;
for(int i=0;i<9;i++)
{
int x=i%3;
int y=i/3;
btns[i]=new TButton(this);
btns[i]->Parent=this;
btns[i]->Width = BTNS_WIDTH;
btns[i]->Height = BTNS_HEIGHT;
btns[i]->Left = OFFSET_X+x*BTNS_WIDTH;
btns[i]->Top = OFFSET_Y+y*BTNS_HEIGHT;
btns[i]->Caption=d.nos[i];
if(d.nos[i]==0)
btns[i]->Visible=false;
btns[i]->OnClick=btnsClick;
btns[i]->Font= BtnDingWei->Font;
//btns[i]-
}
TTimer* timer = new TTimer(NULL);
timer->Interval = 200;
timer->OnTimer = update;
}
void __fastcall TMainForm::btnsClick(TObject *Sender)
{
int no=0;
for(int i=0;i<9;i++){
if(Sender==btns[i])
{
no=i;
break;
}
}
//ShowMessage(no);
d.move(no);
msgShowed=false;
update(0);
}
void __fastcall TMainForm::update(TObject *Sender){
for(int i=0;i<9;i++)
{
btns[i]->Caption=d.nos[i];
Canvas->TextOut(0,i*20,d.nos[i]);
if(d.nos[i]==0)
btns[i]->Visible=false;
else
btns[i]->Visible=true;
}
this->LabStepNum->Caption="步數: "+AnsiString(d.stepNum);
this->LabTimer->Caption="時間: "+AnsiString(d.timePassed);
if(msgShowed==false && d.isWin()){
msgShowed=true;
ShowMessage(AnsiString("你贏了\n")+
"步數: "+AnsiString(d.stepNum)+"\n"+
"時間: "+AnsiString(d.timePassed)
);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ButtonClick(TObject *Sender)
{
static int y=0;
Canvas->Font->Color=clBlue;
Canvas->TextOut(0,y,"out");
y+=1;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::QuitButtonClick(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N2Click(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BtnNewClick(TObject *Sender)
{
d.init();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BtnBackClick(TObject *Sender)
{
d.back();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BtnReClick(TObject *Sender)
{
d.rePlay();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
//ShowMessage(Key);
}
//---------------------------------------------------------------------------
void TMainForm::movedByKey(WPARAM vk)
{
d.move(vk);
msgShowed=false;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -