Advertisement
venik2405

lab6_1

Apr 15th, 2021
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.01 KB | None | 0 0
  1. unit MainForm;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Menus;
  8.  
  9. const
  10. scr_width = 767;
  11. scr_height = 526;
  12.  
  13. type
  14.   TAnimeForm = class(TForm)
  15.     Timer1: TTimer;
  16.     Image1: TImage;
  17.     Label1: TLabel;
  18.     MainMenu1: TMainMenu;
  19.     N5: TMenuItem;
  20.     procedure FormCreate(Sender: TObject);
  21.     procedure Timer1Timer(Sender: TObject);
  22.     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  23.     procedure N5Click(Sender: TObject);
  24.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  25.   private
  26.     { Private declarations }
  27.   public
  28.     { Public declarations }
  29.   end;
  30.  
  31. var
  32.   AnimeForm: TAnimeForm;
  33.   Fon: TBitMap;
  34.   Korb: TBitMap;
  35.   Can: TBitMap;
  36.   Bomb: TBitMap;
  37.   X, Y, X1, Y1: Integer;
  38.   Shx, ShxBmb, ShYBmb, Time: Integer;
  39.   Num: Integer;
  40.   Speed: Integer;
  41.  
  42. implementation
  43.  
  44. {$R *.dfm}
  45.  
  46. procedure TAnimeForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  47. begin
  48.     CanClose := MessageDlg('Вы уверены, что хотите покинуть игру?' ,
  49.         mtConfirmation, [mbYes, mbNo], 0) = mrYes;
  50. end;
  51.  
  52. procedure TAnimeForm.FormCreate(Sender: TObject);
  53. begin
  54.     shx:= Random(4) + 1;
  55.     //
  56.     Time := 0;
  57.     x := -300;
  58.     Y1 := 500;
  59.     Y := 80;
  60.     X1 := 1000;
  61.     ShYBmb := 0;
  62.     ShXBmb := 1;
  63.     Speed := 1;
  64.     fon:=tbitmap.Create;
  65.     korb:=tbitmap.Create;
  66.     Can := TBitMap.Create;
  67.     Bomb := TBitmap.Create;
  68.     //
  69.     fon.LoadFromFile('more9.bmp');
  70.     //
  71.     korb.LoadFromFile('shipp5.bmp');
  72.     can.LoadFromFile('cn1.bmp');
  73.     korb.transparent := true;
  74.     can.transparent := true;
  75.     Bomb.Transparent := True;
  76.     //
  77.     image1.Canvas.Draw(0,0,fon);//
  78.     image1.Canvas.Draw(x,80,korb);//
  79.     image1.Canvas.Draw(300, 300, can);
  80.     Num := 0;
  81. end;
  82.  
  83. procedure ChangeCannnon(Num: Integer);
  84. Begin
  85.     case Num of
  86.         0: can.LoadFromFile('cn1.bmp');
  87.         1: can.LoadFromFile('cn2.bmp');
  88.         -1: can.LoadFromFile('cn4.bmp');
  89.     end;
  90. End;
  91.  
  92. procedure TAnimeForm.FormKeyDown(Sender: TObject; var Key: Word;
  93.   Shift: TShiftState);
  94. begin
  95.         case Key of
  96.         49, 97:
  97.         begin
  98.             Speed := 1;
  99.         end;
  100.         50, 98:
  101.         begin
  102.             Speed := 2;
  103.         end;
  104.         51, 99:
  105.         begin
  106.             Speed := 3;
  107.         end;
  108.         52, 100:
  109.         begin
  110.             Speed := 4;
  111.         end;
  112.         53, 101:
  113.         begin
  114.             Speed := 5;
  115.         end;
  116.         54, 102:
  117.         begin
  118.             Speed := 6;
  119.         end;
  120.         55, 103:
  121.         begin
  122.             Speed := 7;
  123.         end;
  124.         56, 104:
  125.         begin
  126.             Speed := 8;
  127.         end;
  128.         57, 105:
  129.         begin
  130.             Speed := 9;
  131.         end;
  132.     end;
  133.     Label1.Caption := 'Скорость снаряда: '+ IntToStr(Speed);
  134.     ShxBmb := Speed;
  135.     ShYBmb := Speed;
  136.     if Num <> -1 then
  137.         if key=37 then
  138.         Begin
  139.             Dec(Num);
  140.             Y1 := -200;
  141.         End;
  142.     if Num <> 1 then
  143.         if key=39 then
  144.         begin
  145.             Inc(Num);
  146.             Y1 := -200;
  147.         end;
  148.     ChangeCannnon(Num);
  149.     if Key = 13 then
  150.     Begin
  151.         Y1 := 520;
  152.         case Num of
  153.             0:
  154.             Begin
  155.                 Y1 := 500;
  156.                 X1 := 450;
  157.             End;
  158.             1: X1 := 540;
  159.             -1: X1 := 390;
  160.         end;
  161.         Bomb.LoadFromFile('bomb12.bmp');
  162.     End;
  163.  
  164. end;
  165.  
  166. procedure TAnimeForm.N5Click(Sender: TObject);
  167. begin
  168.     ShowMessage
  169.       ('Данная программа представляет собой игру, целью которой стоит уничтожение плывущего корабля.'
  170.       + #10 + #10 + 'Корабль двигается с постоянной случайной скоростью.'
  171.       + #10 + 'Управление пушкой происходит с помощью кнопок управления курсором.'
  172.       + #10 + 'Кнопки от 1 до 9 задают скорость снаряда'
  173.       + #10 + #10 + 'Для выстрела нажмите Enter');
  174. end;
  175.  
  176. procedure TAnimeForm.Timer1Timer(Sender: TObject);
  177. begin
  178.     x:=x+shx;
  179.     Y1 := Y1 - ShYBmb;
  180.     if x > 950 then
  181.     begin
  182.         x := -600;
  183.         ShYBmb := 0;
  184.         Y1 := 1000;
  185.     end;
  186.     image1.Canvas.Draw(0,0,fon);
  187.     image1.Canvas.Draw(x, Y,korb);
  188.     image1.Canvas.Draw(-170, 30, can);
  189.     Y1 := Y1 - ShYBmb;
  190.     if Num = 1 then
  191.     Begin
  192.         X1 := X1 + ShxBmb;
  193.     End;
  194.     if Num = -1 then
  195.     Begin
  196.         X1 := X1 - ShxBmb;
  197.     End;
  198.     image1.Canvas.Draw(X1, Y1, Bomb);
  199.     if  ((Y1 < 195) and ((X1 - X) < 300) And ((X1 - X) > 0)) then
  200.     Begin
  201.         korb.LoadFromFile('boom10.bmp');
  202.         Shx := 0;
  203.     End;
  204.     if Y1 < 195 then
  205.         X1 := 2000;
  206.     if Shx = 0 then
  207.         Inc(Time);
  208.     if Time = 50 then
  209.         Y := 1000;
  210. end;
  211.  
  212. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement