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

📄 game.pas

📁 wptools5 pro 完整源代码 Msword界面的文本编辑器源代码
💻 PAS
字号:
unit Game;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, WPRTEDefs, WPRTEPaint, WPCTRMemo,
  WPCTRRich, WPObj_Image, GIFImage;

type
  TWPImageGame = class(TForm)
    WPRichText1: TWPRichText;
    Panel1: TPanel;
    Button1: TButton;
    MoveObject: TCheckBox;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    bImageDeleted,bRunning : Boolean;
    procedure DoDestroyImage(Sender : TObject);
  public

  end;

var
  WPImageGame: TWPImageGame;

implementation

{$R *.dfm}

procedure TWPImageGame.Button1Click(Sender: TObject);
var i: Integer;
begin
  WPRichText1.BeginUpdate;
  WPRichText1.Clear;
  WPRichText1.WordWrap := TRUE;
  WPRichText1.LayoutMode := wplayNormal;
  WPRichText1.CurrAttr.Alignment := paralBlock;
  for i := 1 to 400 do
  begin
    WPRichText1.CurrAttr.Color := Random(15) + 1;
    WPRichText1.CurrAttr.AddStyle([afsItalic]);
    WPRichText1.InputString('WP');
    WPRichText1.CurrAttr.DeleteStyle([afsItalic]);
    WPRichText1.InputString(' Tools 5 ');
  end;
  WPRichText1.EndUpdate;
  if MoveObject.Checked then
     Button2Click(nil);

end;

procedure TWPImageGame.DoDestroyImage(Sender : TObject);
begin
   bImageDeleted := TRUE;
end;

procedure TWPImageGame.Button2Click(Sender: TObject);
var i, w, h, x, y, run: Integer;
  TxtObj: TWPTextObj;
begin
  if bRunning then exit;
  WPRichText1.CPPosition := 0;
  TxtObj := WPRichText1.TextObjects.Insert(Image1.Picture.Graphic, 1440, 1440);
  if TxtObj <> nil then
  try
    bRunning := TRUE;
    TxtObj.Mode := [wpobjRelativeToParagraph];
    TxtObj.Wrap := wpwrBoth;
    TxtObj.OnDestroy := DoDestroyImage;
    bImageDeleted := FALSE;
    Randomize;
    x := Random(50) + 20;
    y := Random(50) + 20;
    run := 0;
    while MoveObject.Checked and not bImageDeleted do
    begin
      w := MulDiv(WPRichText1.Width, 1440, Screen.PixelsPerInch);
      h := MulDiv(WPRichText1.Height, 1440, Screen.PixelsPerInch);
      TxtObj.Width := 1440 - 300 + (run mod 600);
      TxtObj.Height := 1440 - 300 + (run mod 600);
      if (TxtObj.RelX + x + TxtObj.Width > w) or
        (TxtObj.RelX + x < 0) then
        x := Round((10 + Random(50)) * (-(Abs(x) / x)));
      if (TxtObj.RelY + y + TxtObj.Height > h) or
        (TxtObj.RelY + y < 0) then
        y := Round((10 + Random(50)) * (-(Abs(y) / y)));
      TxtObj.RelX := TxtObj.RelX + x;
      TxtObj.RelY := TxtObj.RelY + y;
      WPRichText1.ReformatAll;
      WPRichText1.Repaint;
      inc(run, 50);
      Application.ProcessMessages;
      // Maybe the object was deleted ? --> DoDestroyImage
    end;
  finally
    if not bImageDeleted then
    begin
      TxtObj.Free;
      WPRichText1.ReformatAll;
      WPRichText1.Repaint;
    end;
    bRunning := FALSE;
  end;
end;

procedure TWPImageGame.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  MoveObject.Checked := FALSE;
end;

end.

⌨️ 快捷键说明

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