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

📄 haulm.pas

📁 这个c程序是一个简单的汉诺塔小游戏。它可以直接运行
💻 PAS
字号:
unit Haulm;

interface

uses
  SysUtils, Types, Classes, Graphics;

type
  TTray = record
    Level: Integer;
    Color: TColor;
    Width: Integer;
  end;

type
  THaulm = class(TObject)
    Flag: string;
    Peeking: Boolean;
    Left: Integer;
    Top: Integer;
    Height: Integer;
    Width: Integer;
    Pen: TPen;
    TrayHeight: Integer;
    TrayVSpace: Integer;
    TrayPenWidth: Integer;
    Tray: array of TTray;
  public
    constructor Create();
    function Count(): Integer;
    function HaulmLeft(): Integer;
    function Rect(): TRect;
    function TrayRect(Item: Integer): TRect;
    function Pop(): TTray;
    function Push(const PushTray: TTray): Boolean;
    function Peek(): TTray;
    destructor Destroy(); override;
  end;

implementation

{ THaulm }

constructor THaulm.Create();
begin
  Pen := TPen.Create;
  Peeking := False;
  Left := 0;
  Top  := 0;
  Height := 80;
  Width  := 80;
  Pen.Color := clBlack;
  Pen.Width := 2;
  TrayHeight := 7;
  TrayVSpace := 2;
  TrayPenWidth := 1;
end;

function THaulm.Count: Integer;
begin
  Result := Length(Tray);
end;

function THaulm.HaulmLeft: Integer;
begin
  Result :=  Left + Width div 2;
end;

function THaulm.Rect: TRect;
var
  tmpRect: TRect;
begin
  tmpRect.Left  := Left;
  tmpRect.Top   := Top;
  tmpRect.Right := Left + Width;
  tmpRect.Bottom := Top + Height;
  Result := tmpRect;
end;

function THaulm.TrayRect(Item: Integer): TRect;
var
  tmpRect: TRect;
begin
  tmpRect.Left  := HaulmLeft - Tray[Item].Width div 2;
  tmpRect.Right := Haulmleft + Tray[Item].Width div 2;
  tmpRect.Top   := (Rect()).Bottom - (TrayHeight + TrayVSpace) * (Item + 1);
  tmpRect.Bottom := tmpRect.Top + TrayHeight;
  Result := tmpRect;
end;

function THaulm.Push(const PushTray: TTray): Boolean;
begin
  Result := False;
  if (Length(Tray) <> 0) and (PushTray.Level > Tray[High(Tray)].Level) then exit;
  SetLength(Tray, Length(Tray) + 1);
  Tray[High(Tray)] := PushTray;
  Result := True;
end;

function THaulm.Pop(): TTray;
var
  PopTray: TTray;
begin
//  Result := nil;
  if Length(Tray) < 1 then exit;
  PopTray := Tray[High(Tray)];
  Tray := Copy(Tray, 0, Length(Tray) - 1);
  Peeking := False;
  Result := PopTray;
end;

function THaulm.Peek: TTray;
var
  PeekTray: TTray;
begin
//  Result := nil;
  if Length(Tray) < 1 then exit;
  PeekTray := Tray[High(Tray)];
  Peeking := True;
  Result := PeekTray;
end;

destructor THaulm.Destroy;
begin

  inherited;
end;


end.

⌨️ 快捷键说明

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