All pastes #358506 Raw Edit

Mine

public text v1 · immutable
·published 2007-02-16 08:29 UTC
rendered paste body
->zaciatok unit1.pas:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses Hra;

var h: THra;

procedure TForm1.FormCreate(Sender: TObject);
begin
        h:=Thra.create(Form1.Image1.Canvas);
        DoubleBuffered:=true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
        h.free;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        h.klaves(Key);      
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
        h.tik;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
         h.klik(x,y, Shift)
end;

end.

->zaciatok hra.pas:

unit Hra;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TRybka = class
    bmp: array[0..1, 0..3, 0..9] of TBitmap;
    x, y, dx, dy, faza, zivot, uroven: Integer;
    constructor Create(xx, yy: Integer);
    procedure kresli(c: TCanvas);
    destructor Destroy; override;
  end;

  TMinca = class
    bmp: array [0..2, 0..9] of TBitmap;
    x, y, dy, faza, uroven: Integer;
    constructor Create(xx, yy: Integer);
    procedure kresli(c: TCanvas);
    destructor Destroy; override;
  end;

  TChobotnica = class
    bmp: array [0..9] of TBitmap;
    x, y, dx, dy, faza: Integer;
    constructor Create(xx, yy: Integer);
    procedure kresli(c: TCanvas);
    destructor Destroy; override;
  end;

  THra = class
  private
    c: TCanvas;
    body: Integer;
    rybky: array of TRybka;
    pozadie: TBitmap;
    mince: array of TMinca;
    hrac: TChobotnica;
  public
    constructor Create(cc: TCanvas);
    function tik: Boolean;              // tikanie èasovaèa
    procedure klik(X, Y: Integer; Shift:TShiftState);      // klikanie mysou
    procedure klaves(key: Word);        // stláèanie klávesov
    destructor Destroy; override;
  end;

implementation

//TRybka
constructor TRybka.Create(xx, yy: Integer);
var b : TBitmap; i,j:integer;
begin
        dx:=0; dy:=0; zivot:=1300;
        x:=xx;
        y:=yy;
        b := TBitmap.Create;
        b.LoadFromFile('rybkaVlavo.bmp');
        for i:= 0 to 3 do
                for j:=0 to 9 do begin
                        bmp[0,i,j]:= TBitmap.Create;
                        bmp[0,i,j].Width:=80;
                        bmp[0,i,j].Height:=80;
                        bmp[0,i,j].PixelFormat:=pf24bit;
                        bmp[0,i,j].Canvas.Draw(-80*j,-80*i,b);
                        bmp[0,i,j].Transparent:=true;
                        end;
        b.Free;
        b := TBitmap.Create;
        b.LoadFromFile('rybkaVpravo.bmp');
        for i:= 0 to 3 do
                for j:=0 to 9 do begin
                        bmp[1,i,j]:= TBitmap.Create;
                        bmp[1,i,j].Width:=80;
                        bmp[1,i,j].Height:=80;
                        bmp[1,i,j].PixelFormat:=pf24bit;
                        bmp[1,i,j].Canvas.Draw(-80*j,-80*i,b);
                        bmp[1,i,j].Transparent:=true;
                        end;
        b.Free;

end;

destructor TRybka.Destroy;
var i,j:integer;
begin
end;

procedure TRybka.kresli(c: TCanvas);
begin
        faza := (faza+1) mod 9;
        if dx>0 then c.Draw(x, y, bmp[1,uroven,faza]);
        if dx<0 then c.Draw(x, y, bmp[0,uroven,faza]);
     
end;

//TMinca
constructor TMinca.Create(xx, yy: Integer);
var b: TBitmap; i,j:integer;
begin
        x:=xx;
        y:=yy;
        b := TBitmap.Create;
        b.LoadFromFile('peniazky.bmp');
        for i:= 0 to 2 do
                for j:=0 to 9 do begin
                        bmp[i,j]:= TBitmap.Create;
                        bmp[i,j].Width:=72;
                        bmp[i,j].Height:=72;
                        bmp[i,j].PixelFormat:=pf24bit;
                        bmp[i,j].Canvas.Draw(-72*j,-72*i,b);
                        bmp[i,j].Transparent:=true;
                        end;
        b.Free;
end;

destructor TMinca.Destroy;
var i,j:integer;
begin
 for i:= 0 to 2 do
        for j:=0 to 9 do
        bmp[i,j].free;
end;

procedure TMinca.kresli(c: TCanvas);
begin
        faza := (faza+1) mod 9;
        inc(y); inc(x,random(5)-2);
        c.Draw(x, y, bmp[uroven,faza]);
end;

//Tchobotnica
constructor Tchobotnica.Create(xx, yy: Integer);
var b: TBitmap; i:integer;
begin
        x:=xx;
        y:=yy;
        dx:=20;
        dy:=20;
        b := TBitmap.Create;
        b.LoadFromFile('chobotnica.bmp');
        for i:= 0 to 9 do  begin
                        bmp[i]:= TBitmap.Create;
                        bmp[i].Width:=60;
                        bmp[i].Height:=60;
                        bmp[i].PixelFormat:=pf24bit;
                        bmp[i].Canvas.Draw(-60*i,0,b);
                        bmp[i].Transparent:=true;
                        end;
        b.Free;
end;

destructor Tchobotnica.Destroy;
var i:integer;
begin
 for i:= 0 to 9 do
        bmp[i].free;
end;

procedure Tchobotnica.kresli(c: TCanvas);
begin
        faza := (faza+1) mod 9;
        c.Draw(x, y, bmp[faza]);
end;

//THra
constructor THra.Create(cc: TCanvas);
begin
        randomize;
        c:=cc;
        body:=200;
        pozadie := TBitmap.Create;
        pozadie.Width:= 640;
        pozadie.Height:= 480;
        pozadie.PixelFormat:=pf24bit;
        pozadie.LoadFromFile('akvarium.bmp');

        
        hrac:=TChobotnica.Create(320-30,240-30);
end;

function THra.tik: Boolean;              // tikanie èasovaèa
var i:integer;
begin
      c.Draw(0,0,pozadie);

      for i := 0 to High(rybky) do
              begin

                      if rybky[i].x<0 then rybky[i].dx:=-rybky[i].dx;;
                      if rybky[i].y<0 then rybky[i].dy:=-rybky[i].dy;;
                      if rybky[i].x>600 then rybky[i].dx:=-rybky[i].dx;
                      if rybky[i].y>440 then rybky[i].dy:=-rybky[i].dy;
                      inc(rybky[i].y,rybky[i].dy);
                      inc(rybky[i].x,rybky[i].dx);
                      dec(rybky[i].zivot);
                      if rybky[i].zivot>1200 then rybky[i].uroven:=0
                        else if (rybky[i].zivot>800) and (rybky[i].zivot<1201) then rybky[i].uroven:=1
                        else if (rybky[i].zivot>400) and (rybky[i].zivot<801) then rybky[i].uroven:=2
                        else if (rybky[i].zivot>0) and (rybky[i].zivot<401) then rybky[i].uroven:=3;

                        

              end;

       
      if rybky<> nil then begin
                for i:= 0 to High(rybky) do
                rybky[i].kresli(c);
                end;

      if mince<> nil then begin
                for i:= 0 to High(mince) do
                mince[i].kresli(c);
                end;

      hrac.kresli(c);

      c.Brush.Style:=bsClear;
      c.Font.Height := 40;
      c.Font.Name := 'Arial';
      c.Font.Color := clYellow;
      c.TextOut(550,10,IntToStr(body));
end;

procedure THra.klik(X, Y: Integer; Shift:TShiftState);      // klikanie mysou
begin
        if (body>99) and (shift=[SSleft]) then begin
              SetLength(rybky, Length(rybky)+1);
              rybky[high(rybky)] := TRybka.Create(x-40,y-40);
              rybky[high(rybky)].uroven:=0;
              rybky[high(rybky)].dx:=random(3)+1;
              rybky[high(rybky)].dy:=random(5);
              dec(body,1);
        end;

        if(shift=[SSright]) then begin
        SetLength(mince, Length(mince)+1);
        mince[high(mince)] := TMinca.Create(x-36,y-36);
        if high(mince)>2 then mince[high(mince)].uroven:=2 else mince[high(mince)].uroven:=high(mince);
        end;
end;

procedure THra.klaves(key: Word);
begin
        case Key of
            vk_left:   if hrac.x>0 then dec(hrac.x,hrac.dx);
            vk_right:  if hrac.x<590 then inc(hrac.x,hrac.dx);
            vk_up:     if hrac.y>0 then dec(hrac.y,hrac.dy);
            vk_down:   if hrac.y<420 then inc(hrac.y,hrac.dy);
           
        end;
end;

destructor THra.Destroy;
begin
end;

end.