⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 delphi模仿魔兽世界的密码验证机制.
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, WinSkinData;

type
  TForm1 = class(TForm)
    pnl1: TPanel;
    pnl2: TPanel;
    pnl3: TPanel;
    pnl4: TPanel;
    pnl6: TPanel;
    img1: TImage;
    btn1: TSpeedButton;
    btn2: TSpeedButton;
    btn3: TSpeedButton;
    btn4: TSpeedButton;
    btn5: TSpeedButton;
    btn6: TSpeedButton;
    btn7: TSpeedButton;
    btn8: TSpeedButton;
    btn9: TSpeedButton;
    btn10: TSpeedButton;
    btn11: TSpeedButton;
    btn12: TSpeedButton;
    pnl7: TPanel;
    pnl8: TPanel;
    pnl9: TPanel;
    pnl10: TPanel;
    pnl11: TPanel;
    pnl12: TPanel;
    pnl13: TPanel;
    pnl14: TPanel;
    pnl38: TPanel;
    pnl15: TPanel;
    pnl16: TPanel;
    pnl17: TPanel;
    pnl18: TPanel;
    pnl19: TPanel;
    pnl20: TPanel;
    pnl21: TPanel;
    pnl22: TPanel;
    pnl23: TPanel;
    pnl24: TPanel;
    pnl25: TPanel;
    pnl26: TPanel;
    pnl27: TPanel;
    pnl28: TPanel;
    pnl29: TPanel;
    pnl30: TPanel;
    pnl31: TPanel;
    pnl32: TPanel;
    pnl33: TPanel;
    pnl34: TPanel;
    pnl35: TPanel;
    pnl36: TPanel;
    pnl37: TPanel;
    pnl39: TPanel;
    pnl40: TPanel;
    pnl41: TPanel;
    pnl42: TPanel;
    pnl43: TPanel;
    pnl44: TPanel;
    pnl46: TPanel;
    pnl47: TPanel;
    pnl48: TPanel;
    pnl49: TPanel;
    pnl50: TPanel;
    pnl51: TPanel;
    pnl52: TPanel;
    pnl45: TPanel;
    pnl53: TPanel;
    pnl54: TPanel;
    pnl55: TPanel;
    pnl56: TPanel;
    pnl57: TPanel;
    pnl58: TPanel;
    pnl59: TPanel;
    pnl60: TPanel;
    pnl61: TPanel;
    pnl62: TPanel;
    pnl63: TPanel;
    pnl64: TPanel;
    pnl65: TPanel;
    pnl66: TPanel;
    pnl67: TPanel;
    pnl68: TPanel;
    pnl69: TPanel;
    pnl70: TPanel;
    pnl71: TPanel;
    pnl72: TPanel;
    pnl73: TPanel;
    pnl74: TPanel;
    pnl75: TPanel;
    pnl76: TPanel;
    pnl77: TPanel;
    pnl78: TPanel;
    pnl79: TPanel;
    pnl80: TPanel;
    pnl81: TPanel;
    pnl82: TPanel;
    pnl83: TPanel;
    pnl84: TPanel;
    pnl85: TPanel;
    pnl86: TPanel;
    pnl87: TPanel;
    pnl88: TPanel;
    pnl89: TPanel;
    pnl90: TPanel;
    pnl91: TPanel;
    pnl92: TPanel;
    pnl93: TPanel;
    pnl94: TPanel;
    pnl95: TPanel;
    pnl96: TPanel;
    pnl97: TPanel;
    pnl98: TPanel;
    pnl99: TPanel;
    pnl100: TPanel;
    pnl101: TPanel;
    pnl102: TPanel;
    pnl103: TPanel;
    pnl104: TPanel;
    pnl105: TPanel;
    pnl106: TPanel;
    pnl107: TPanel;
    pnl108: TPanel;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lbl4: TLabel;
    lbl5: TLabel;
    lbl6: TLabel;
    lbl7: TLabel;
    lbl8: TLabel;
    lbl9: TLabel;
    lbl10: TLabel;
    lbl11: TLabel;
    lbl12: TLabel;
    lbl13: TLabel;
    lbl14: TLabel;
    lbl15: TLabel;
    lbl16: TLabel;
    lbl17: TLabel;
    lbl18: TLabel;
    img2: TImage;
    tmr1: TTimer;
    img3: TImage;
    img4: TImage;
    procedure FormCreate(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    procedure btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure pnl6MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btn10Click(Sender: TObject);
    procedure btn11Click(Sender: TObject);
    procedure btn12Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    abtn : array[0..9]of TSpeedButton;
    apnl : array[1..80]of TPanel;
    procedure setpos(bu:TSpeedButton;Poi:TPoint );
    function getpo(num:integer):TPoint;
    procedure drawpnl(pnln:TPanel);
    procedure change;
  public
    list : TStrings;
    shitnum: Integer;
    img: Timage;
    { Public declarations }
  end;

var
  Form1: TForm1;
  pp: Integer=0;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  abtn[0] := btn1;
  abtn[1] := btn2;
  abtn[2] := btn3;
  abtn[3] := btn4;
  abtn[4] := btn5;
  abtn[5] := btn6;
  abtn[6] := btn7;
  abtn[7] := btn8;
  abtn[8] := btn9;
  abtn[9] := btn10;

  apnl[1] := pnl29;  apnl[2] := pnl30;  apnl[3] := pnl31;  apnl[4] := pnl32;  apnl[5] := pnl33;
  apnl[6] := pnl34;  apnl[7] := pnl35;  apnl[8] := pnl36;  apnl[9] := pnl37;  apnl[10] := pnl38;
  apnl[11] := pnl39; apnl[12] := pnl40; apnl[13] := pnl41; apnl[14] := pnl42; apnl[15] := pnl43;
  apnl[16] := pnl44; apnl[17] := pnl45; apnl[18] := pnl46; apnl[19] := pnl47; apnl[20] := pnl48;

  apnl[21] := pnl49;  apnl[22] := pnl50;  apnl[23] := pnl51;  apnl[24] := pnl52;  apnl[25] := pnl53;
  apnl[26] := pnl54;  apnl[27] := pnl55;  apnl[28] := pnl56;  apnl[29] := pnl57;  apnl[30] := pnl58;
  apnl[31] := pnl59; apnl[32] := pnl60; apnl[33] := pnl61; apnl[34] := pnl62; apnl[35] := pnl63;
  apnl[36] := pnl64; apnl[37] := pnl65; apnl[38] := pnl66; apnl[39] := pnl67; apnl[40] := pnl68;

  apnl[41] := pnl69;  apnl[42] := pnl70;  apnl[43] := pnl71;  apnl[44] := pnl72;  apnl[45] := pnl73;
  apnl[46] := pnl74;  apnl[47] := pnl75;  apnl[48] := pnl76;  apnl[49] := pnl77;  apnl[50] := pnl78;
  apnl[51] := pnl79; apnl[52] := pnl80; apnl[53] := pnl81; apnl[54] := pnl82; apnl[55] := pnl83;
  apnl[56] := pnl84; apnl[57] := pnl85; apnl[58] := pnl86; apnl[59] := pnl87; apnl[60] := pnl88;

  apnl[61] := pnl89;  apnl[62] := pnl90;  apnl[63] := pnl91;  apnl[64] := pnl92;  apnl[65] := pnl93;
  apnl[66] := pnl94;  apnl[67] := pnl95;  apnl[68] := pnl96;  apnl[69] := pnl97;  apnl[70] := pnl98;
  apnl[71] := pnl99; apnl[72] := pnl100; apnl[73] := pnl101; apnl[74] := pnl102; apnl[75] := pnl103;
  apnl[76] := pnl104; apnl[77] := pnl105; apnl[78] := pnl106; apnl[79] := pnl107; apnl[80] := pnl108;

  list := TStringList.Create;
  img := Timage.Create(nil);
  change;
end;


function TForm1.getpo(num: integer): TPoint;
begin
   Result := Point(75+round(62*sin(num/40.0*2*pi)),
                 90-round(62*cos(num/40.0*2*pi)));
end;

procedure TForm1.setpos(bu: TSpeedButton; Poi: TPoint);
begin
  bu.Left := Poi.X;
  bu.Top := Poi.Y;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var
  I: Integer;
begin
  inc(pp);
  for i := 0 to 9 do
  begin
   setpos(abtn[i],getpo(pp+i*4));
  end;
  if pp=maxint then
    close;
end;
procedure TForm1.btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  tmr1.Enabled := False;
end;

procedure TForm1.pnl6MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  tmr1.Enabled := True;
end;

procedure TForm1.btn10Click(Sender: TObject);
begin
  if not img3.Visible then
  begin
  shitnum := TSpeedButton(Sender).Tag;
  img3.Visible := True;
  //showmessage(ExtractFileDir(ParamStr(0)));
  btn11.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+'bmp\delete2.bmp');
  Exit;
  end;
  if img3.Visible then
  begin
    img3.Visible := False;
    img4.Visible := true;
    btn12.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+'bmp\sure2.bmp');
    shitnum := shitnum*10 + TSpeedButton(Sender).Tag;
  end;
end;

procedure TForm1.btn11Click(Sender: TObject);
begin
  if (not img3.Visible) or (not img4.Visible) then
     ;
  if img3.Visible then
  begin
     img3.Visible := False;
     Exit;
  end;
  if img4.Visible then
  begin
     img4.Visible := False;
     Exit;
  end;
end;

procedure TForm1.btn12Click(Sender: TObject);
var
  i: Integer;
begin
  if img4.Visible then
  begin
    list.Add(inttostr(shitnum));
    img4.Visible := False;
    btn11.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+'bmp\delete.bmp');
    btn12.Glyph.LoadFromFile(ExtractFilePath(ParamStr(0))+'bmp\sure.bmp');
    for i := 1 to 80 do
    begin
      apnl[i].Color := cl3DDkShadow;
    end;

    change;
    if list.Count =3 then
    begin
      list.SaveToFile(ExtractFilePath(ParamStr(0))+'data.txt');
      list.Clear;
    end;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  list.Free;
  img.Free;
end;

procedure TForm1.drawpnl(pnln: TPanel);
begin
  img.Parent := pnln;
  img.Align := alClient;
  img.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'bmp\key.bmp');
end;

procedure TForm1.change;
var
  i, ichange, iran: Integer;
  ide,n: Integer;
begin
  Randomize;
  iran := Random(79)+1;
  drawpnl(apnl[iran]);
  ichange := iran mod 8;
  //列=====================
  for i := 1 to 80 do
  begin
    if i mod 8 = ichange then
      apnl[i].Color := $00C08000;
  end;
  //========================

  //行 =============================
  //在第一个位置
  if ichange=1 then
    begin
    for n := 1 to 7 do
    begin
      apnl[iran+n].Color := $00C08000;
    end;
    Exit;
    end;
  //在最后一个位置
  if ichange=0 then
   begin
    for n := 1 to 7 do
    begin
      apnl[iran-n].Color := $00C08000;
    end;
    Exit;
    end;
  //在中间位置

  ide := 8-ichange;
  for n := 1 to ide do
  begin
    apnl[iran+n].Color := $00C08000;
  end;

  for n := 1 to (7-ide) do
  begin
    apnl[iran-n].Color := $00C08000;
  end;
 //=================================
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -