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

📄 umainfrm.pas

📁 一个很好玩的、很简单的智力游戏 青蛙跳游戏 回溯法实现 Author: Venus Yu June, 2008
💻 PAS
字号:
unit uMainFrm;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  Tfrogdir=(tfdLeft, tfdRight);

  Tfrog = class
  private
    Fpic: String;
    Fdir: Tfrogdir;
    Fposition: integer;
    procedure setdir(Value: Tfrogdir);
    procedure setposition(Value: integer);
    procedure setpic(Value: String);
  public
    procedure jump;
    procedure step;
    property pic: String read Fpic write setpic;
    property dir: Tfrogdir read Fdir write setdir;
    property position: integer read Fposition write setposition;
  end;

  TStone = class
  private
    Fposition: integer;
    procedure SetPosition(Value: integer);
  public
    property postion: integer read Fposition write SetPosition;
  end;

  Tfrogface= class(TImage)
  private
    Ffrog: Tfrog;
    procedure Setfrog(Value: Tfrog);
  public
    property frog:Tfrog read Ffrog write setfrog;
    procedure jump;
    procedure move;
    procedure showpic;
    procedure OnClick1(Sender:TObject);
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

const
  TowardRightFrogPath: String = 'frog_R.bmp';
  TowardLeftFrogPath: String = 'frog_L.bmp';

var
  Form1: TForm1;
  stepsize, baseleft: Integer;
  afrog: Tfrogface;

  procedure  backtrack(t: integer);
implementation

{$R *.dfm}


procedure backtrack(t: integer);
begin
{  if(t>n) then
    output(x)
  else
	  for(int i=f(n,t);i<=g(n,t);i++)
	    begin
	      x[t]=h(i);
   	    if(constrain(t)&&bound(t)) then
          backtrack(t+1);
    	end;
      }
end;



{ Tfrog }

procedure Tfrog.jump;
begin
  If Self.Fdir= tfdLeft then
     Self.position := Self.position - 2
  Else
     Self.position := Self.position + 2;
end;

procedure Tfrog.setdir(Value: Tfrogdir);
begin
  Self.Fdir:=Value;
  Case Value of
    tfdLeft:
      Self.pic:=TowardLeftFrogPath;
    tfdRight:
      Self.pic:=TowardRightFrogPath;
  end;
end;

procedure Tfrog.setpic(Value: String);
begin
  Fpic:=Value;
end;

procedure Tfrog.setposition(Value: integer);
begin
  Self.Fposition:=Value;
end;

procedure Tfrog.step;
begin
  If Self.Fdir= tfdLeft then
     Self.position := Self.position - 1
  Else
     Self.position := Self.position + 1;
end;

{ TStone }

procedure TStone.SetPosition(Value: integer);
begin
  Self.Fposition:=Value;
end;

{ Tfrogface }

constructor Tfrogface.Create(AOwner: TComponent);
begin
  inherited;
  Self.frog:= TFrog.Create;
  Self.OnClick:=Self.OnClick1;
end;

destructor Tfrogface.Destroy;
begin

  inherited;
end;

procedure Tfrogface.jump;
var
  i,oldleft, curleft, oldtop, curtop: integer;
begin
  if Self.Ffrog=Nil then
    Exit;
  Self.Ffrog.jump;
  oldleft:=Self.Left;
  oldtop:=Self.Top;
Case Self.frog.dir of
tfdRight:    //向右的
  begin
  for i:=1 to 5 do
  begin
    Self.left:=Self.left + stepsize div 5;
    Self.top:=Self.Top-12;
    Self.Repaint;
    Sleep(10);
  end;
  for i:=1 to 5 do
  begin
    Self.left:=Self.left + stepsize div 5;
    Self.top:=Self.Top+12;
    Self.Repaint;
    Sleep(10);
  end;
  end;
tfdLeft:  //向左的
  begin
  for i:=1 to 5 do
  begin
    Self.left:=Self.left - stepsize div 5;
    Self.top:=Self.Top-12;
    Self.Repaint;
    Sleep(15);
  end;
  for i:=1 to 5 do
  begin
    Self.left:=Self.left - stepsize div 5;
    Self.top:=Self.Top+12;
    Self.Repaint;
    Sleep(15);
  end;
  end;
end;
end;

procedure Tfrogface.move;
var
  i: integer;
begin
  if Self.Ffrog=Nil then
    Exit;
  Self.Ffrog.jump;
Case Self.frog.dir of
tfdRight:    //向右的
  begin
  for i:=1 to 5 do
  begin
    Self.left:=Self.left + stepsize div 5;
    Self.Repaint;
    Sleep(15);
  end;
  end;
tfdLeft:  //向左的
  begin
    for i:=1 to 5 do
    begin
      Self.left:=Self.left - stepsize div 5;
      Self.Repaint;
      Sleep(15);
    end;
  end;
end;
end;

procedure Tfrogface.OnClick1(Sender: TObject);
begin
  Self.move;
end;

procedure Tfrogface.Setfrog(Value: Tfrog);
begin
  Self.Ffrog:=Value;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  frogn: array[0..6] of TFrogface;
  i: integer;
begin
   afrog:=Tfrogface.Create(Self);
   afrog.frog.dir:=tfdLeft;
   afrog.showpic;
   afrog.Top:=100;
   afrog.Left:=1024;
   afrog.Parent:=Form1;
  // afrog.Transparent:=true;
   stepsize:=100;
   for i:=0 to 6 do
   begin
     frogn[i]:=Tfrogface.Create(Self);
    // frogn[i].Picture.LoadFromFile('frog_R.bmp');
     frogn[i].frog.dir:=tfdLeft;
     frogn[i].Top:=100;
     frogn[i].showpic;
     frogn[i].Parent:=Form1;
     frogn[i].Transparent:=true;
     frogn[i].Left:=stepsize*i;
   end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if afrog=Nil then
    exit;
  afrog.jump;
end;

procedure Tfrogface.showpic;
begin
  Picture.LoadFromFile(Self.frog.pic);
end;

end.

⌨️ 快捷键说明

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