home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 September / Chip_2000-09_cd1.bin / ctenari / Krejci / MainUnit.pas < prev    next >
Pascal/Delphi Source File  |  2000-07-23  |  3KB  |  154 lines

  1. unit MainUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, Buttons, StdCtrls;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     BackGnd3: TImage;
  12.     BackGnd2: TImage;
  13.     BackGnd1: TImage;
  14.     SpriteImage: TImage;
  15.     SpriteAndImage: TImage;
  16.     GoTimer: TTimer;
  17.     Memo1: TMemo;
  18.     procedure FormCreate(Sender: TObject);
  19.     procedure GoTimerTimer(Sender: TObject);
  20.  
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.   end;
  26.  
  27. var
  28.   MainForm: TMainForm;
  29.   GoLeft,
  30.   GoRight,
  31.   GoUp,
  32.   GoDown:boolean;
  33.   SpriteLeft,
  34.   SpriteTop:integer;
  35.  
  36. implementation
  37.  
  38. {$R *.DFM}
  39.  
  40. procedure TMainForm.FormCreate(Sender: TObject);
  41. begin
  42.  // p°i°azenφ obrßzk∙ do ostatnφch komponent
  43.  BackGnd2.Picture.Assign(BackGnd1.Picture);
  44.  BackGnd3.Picture.Assign(BackGnd1.picture);
  45.  // BackGnd3 p°es cel² formulß°
  46.  // a vycentrovßnφ formu
  47.  BackGnd3.AutoSize:=true;
  48.  MainForm.AutoSize:=true;
  49.  Mainform.Position:=poDesktopCenter;
  50.  
  51.  // pohyb spritu doprava dol∙
  52.  // z pozice 0,0 a spuÜt∞nφ timeru
  53.  GoLeft:=false;
  54.  GoUp:=false;
  55.  GoRight:=true;
  56.  GoDown:=true;
  57.  SpriteLeft:=0;
  58.  SpriteTop:=0;
  59.  GoTimer.Enabled:=true;
  60.  
  61. end;
  62.  
  63. procedure TMainForm.GoTimerTimer(Sender: TObject);
  64. var VyskaVesmiru,
  65.     SirkaVesmiru,
  66.     VyskaSpritu,
  67.     SirkaSpritu:integer;
  68. begin
  69.  
  70.  // nastavenφ promenn²ch
  71.  VyskaVesmiru:=BackGnd3.Height;
  72.  SirkaVesmiru:=BackGnd3.Width;
  73.  VyskaSpritu:=SpriteImage.Height;
  74.  SirkaSpritu:=SpriteImage.Width;
  75.  
  76.  //V²poΦet novΘ polohy spritu-----------
  77.  
  78.  if GoLeft then
  79.   begin
  80.    if SpriteLeft > 0 then
  81.     SpriteLeft:=SpriteLeft-1
  82.    else
  83.     begin
  84.      GoLeft:=false;
  85.      GoRight:=true;
  86.     end;
  87.   end;
  88.  
  89.  if GoDown then
  90.   begin
  91.    if (VyskaSpritu+SpriteTop)<VyskaVesmiru then
  92.     SpriteTop:=SpriteTop+1
  93.    else
  94.     begin
  95.      GoDown:=false;
  96.      GoUp:=true;
  97.     end;
  98.   end;
  99.  
  100.  if GoUp then
  101.   begin
  102.    if SpriteTop>0 then
  103.     SpriteTop:=SpriteTop-1
  104.    else
  105.     begin
  106.      GoUp:=false;
  107.      GoDown:=true;
  108.     end;
  109.   end;
  110.  
  111.  if GoRight then
  112.   begin
  113.    if (SpriteLeft+SirkaSpritu)<SirkaVesmiru then
  114.     SpriteLeft:=SpriteLeft+1
  115.    else
  116.     begin
  117.      GoRight:=false;
  118.      GoLeft:=true;
  119.     end;
  120.   end;
  121.  
  122.  
  123. // vyma₧eme p∙vodnφ kresbu spritu v BackGnd2
  124. // zkopφrovßnφm obdΘlnφku z BackGnd1
  125.  BitBlt(BackGnd2.canvas.handle,0,0,SirkaVesmiru,
  126.  VyskaVesmiru,BackGnd1.canvas.handle,0,0,SrcCOPY);
  127.  
  128. // nynφ vykreslφme sprite na nezobrazovanou bitmapu
  129. // Φφm₧ zamezφme blikßnφ... :-)
  130.  
  131. // prvnφ vytvo°φme Φernou dφru na mφst∞ spritu tφm
  132. // ₧e do bitmapy zkopφrujeme masku spritu pomocφ
  133. // operace SrcAND
  134.  BitBlt(BackGnd2.canvas.handle,SpriteLeft,SpriteTop,
  135.  SirkaSpritu,VyskaSpritu,SpriteAndImage.canvas.handle,
  136.  0, 0,SrcAnd);
  137.  Backgnd2.Refresh;
  138.  
  139. // a potom u₧ zkopφprujeme sprite pomocφ
  140. // SrcPaint
  141.  BitBlt(BackGnd2.canvas.handle,SpriteLeft, SpriteTop,
  142.  SirkaSpritu, VyskaSpritu, SpriteImage.canvas.handle,
  143.  0,0,SrcPaint);
  144.  
  145. // a nakonec to celΘ zkopφrujeme
  146. // do v²dlednΘ BackGnd3
  147.  BitBlt(BackGnd3.canvas.handle,0,0,SirkaVesmiru, VyskaVesmiru,
  148.  BackGnd2.Canvas.Handle,0,0,SrcCopy);
  149.  BackGnd3.Refresh;
  150. end;
  151.  
  152.  
  153. end.
  154.