Advertisement
gguuppyy

61target

Apr 20th, 2024
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.55 KB | None | 0 0
  1. Unit Unit6Laba61;
  2.  
  3. Interface
  4.  
  5. Uses
  6.     Winapi.Windows,
  7.     Winapi.Messages,
  8.     System.SysUtils,
  9.     System.Variants,
  10.     System.Classes,
  11.     Vcl.Graphics,
  12.     Vcl.Controls,
  13.     Vcl.Forms,
  14.     Vcl.Dialogs,
  15.     Vcl.ExtCtrls,
  16.     Vcl.Imaging.Jpeg,
  17.     Vcl.Imaging.Pngimage,
  18.     Math,mmsystem,
  19.     Vcl.StdCtrls, Vcl.Menus, Vcl.Imaging.GIFImg, Vcl.MPlayer;
  20.  
  21. Type
  22.     TMainFireForm = Class(TForm)
  23.         FireTimer: TTimer;
  24.         MainTimer: TTimer;
  25.         GayTimer: TTimer;
  26.         Gun: TImage;
  27.         Bullet: TImage;
  28.         Target: TImage;
  29.         Wall: TImage;
  30.         Svofard: TImage;
  31.         LabelSpeedBullet: TLabel;
  32.         LabelFactsSpeedBullet: TLabel;
  33.         Explosion: TImage;
  34.         TimerGif: TTimer;
  35.         TargetVisibilityTimer: TTimer;
  36.     MainMenuGame: TMainMenu;
  37.     Instruction: TMenuItem;
  38.     Developer: TMenuItem;
  39.     MediaPlayer: TMediaPlayer;
  40.         Procedure FormCreate(Sender: TObject);
  41.         Procedure FormKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
  42.         Procedure GunFire(Sender: TObject);
  43.         Procedure GayTimerTimer(Sender: TObject);
  44.         Procedure FireTimerTimer(Sender: TObject);
  45.         Procedure ExplodeWall(Sender: TObject);
  46.         Procedure MainTimerTimer(Sender: TObject);
  47.         Procedure ExplodeTarget(Sender: TObject);
  48.         Procedure TimerGifTimer(Sender: TObject);
  49.         Procedure TargetVisibilityTimerTimer(Sender: TObject);
  50.     procedure InstructionClick(Sender: TObject);
  51.     procedure DeveloperClick(Sender: TObject);
  52.     Private
  53.         { Private declarations }
  54.     Public
  55.         { Public declarations }
  56.     End;
  57.  
  58. Var
  59.     MainFireForm: TMainFireForm;
  60.     WallSpeed: Integer;
  61.     BulletSpeed: Integer;
  62.     IsBulletFire: Boolean;
  63.  
  64. Implementation
  65.  
  66. {$R *.dfm}
  67.  
  68. Procedure TMainFireForm.FormKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
  69. Begin
  70.     If (Key = VK_UP) or (Key = Ord('W')) Then
  71.         Gun.Top := Math.Max(Gun.Top - 10, 0)
  72.     Else If (Key = VK_DOWN) or (Key = Ord('S')) Then
  73.             Gun.Top := Math.Min(Gun.Top + 10, ClientHeight - Gun.Height)
  74.     Else If Key = VK_RETURN Then
  75.     Begin
  76.          If Not IsBulletFire Then
  77.              GunFire(Sender);
  78.     End
  79.     Else If Key In [Ord('1') .. Ord('9')] Then
  80.     Begin
  81.         If Not IsBulletFire Then
  82.         Begin
  83.             BulletSpeed := (Key - Ord('0')) * 10;
  84.             LabelFactsSpeedBullet.Caption := IntToStr(BulletSpeed Div 10);
  85.         End;
  86.     End;
  87. End;
  88.  
  89. Procedure TMainFireForm.GayTimerTimer(Sender: TObject);
  90. Begin
  91.     Wall.Top := Wall.Top - WallSpeed;
  92.  
  93.     If Wall.Top + Wall.Height < 0 Then
  94.     Begin
  95.         WallSpeed := RandomRange(4, 15);
  96.         Wall.Top := ClientHeight;
  97.     End;
  98. End;
  99.  
  100. Procedure TMainFireForm.GunFire(Sender: TObject);
  101. Begin
  102.     IsBulletFire := True;
  103.     Bullet.Left := Gun.Left + Gun.Width;
  104.     Bullet.Top := Gun.Top + (Gun.Height - Bullet.Height) Div 2;
  105.     Bullet.Visible := True;
  106.     FireTimer.Enabled := True;
  107. End;
  108.  
  109. procedure TMainFireForm.InstructionClick(Sender: TObject);
  110. Var
  111.     MessageBoxCaption: String;
  112.     MessageBoxText: String;
  113.     IsMessageShow: Boolean;
  114. Begin
  115.     IsMessageShow := False;
  116.     if not IsMessageShow then
  117.     Begin
  118.         IsMessageShow := True;
  119.         MessageBoxCaption := 'Инструкция';
  120.         MessageBoxText :=
  121.           '1) Скорость выстрела можно изменять при нажатии на клавиши цифр.'#10'2)  
  122.              Чтобы произвести выстрел, нажмите Enter.'#10'3) Чтобы передвигать
  123.              оружие вверх и вниз, используйте клавиши ↑ и ↓, а так же W и S';
  124.         MessageBox(Handle, PChar(MessageBoxText),
  125.           PChar(MessageBoxCaption), MB_OK);
  126.     End;
  127.     IsMessageShow := False;
  128. end;
  129.  
  130. Procedure TMainFireForm.FireTimerTimer(Sender: TObject);
  131. Begin
  132.     If IsBulletFire Then
  133.     Begin
  134.         Bullet.Left := Bullet.Left + BulletSpeed;
  135.         If Bullet.Left > ClientWidth Then
  136.         Begin
  137.             IsBulletFire := False;
  138.             Bullet.Visible := False;
  139.         End
  140.         Else
  141.             If Bullet.BoundsRect.IntersectsWith(Wall.BoundsRect) Then
  142.                 ExplodeWall(Sender);
  143.         If Bullet.BoundsRect.IntersectsWith(Target.BoundsRect) Then
  144.             ExplodeTarget(Sender);
  145.     End;
  146. End;
  147.  
  148. Procedure TMainFireForm.MainTimerTimer(Sender: TObject);
  149. Begin
  150.     Explosion.Visible := False;
  151.     MainTimer.Enabled := False;
  152.     (Explosion.Picture.Graphic As TGIFImage).Animate := False;
  153.     IsBulletFire := False;
  154.     Bullet.Visible := False;
  155.     FireTimer.Enabled := True;
  156. End;
  157.  
  158. Procedure TMainFireForm.TimerGifTimer(Sender: TObject);
  159. Begin
  160.     Svofard.SendToBack;
  161.     (Svofard.Picture.Graphic As TGIFImage).Animate := True;
  162. End;
  163.  
  164. Procedure TMainFireForm.TargetVisibilityTimerTimer(Sender: TObject);
  165. Begin
  166.     If Target.Visible Then
  167.     Begin
  168.         Target.Visible := False;
  169.         Target.Left := ClientWidth - Target.Width - RandomRange(10, 100);
  170.         Target.Top := RandomRange(10, ClientHeight - Target.Height - 10);
  171.     End
  172.     Else
  173.         Target.Visible := True;
  174. End;
  175.  
  176. Procedure TMainFireForm.ExplodeWall(Sender: TObject);
  177. Begin
  178.     Explosion.Left := Wall.Left + (Wall.Width - Explosion.Width) Div 2;
  179.     Explosion.Top := Wall.Top + (Wall.Height - Explosion.Height) Div 2;
  180.     Explosion.Visible := True;
  181.     (Explosion.Picture.Graphic As TGIFImage).Animate := True;
  182.     MainTimer.Enabled := True;
  183.     GayTimer.Enabled := True;
  184.     FireTimer.Enabled := False;
  185.     MediaPlayer.FileName := 'C:\Users\Даниил\Downloads\pukane-4.wav';
  186.     MediaPlayer.Open;
  187.     MediaPlayer.Play;
  188. End;
  189.  
  190. procedure TMainFireForm.DeveloperClick(Sender: TObject);
  191. Var
  192.     MessageBoxCaption: String;
  193.     MessageBoxText: String;
  194.     IsMessageShow: Boolean;
  195. Begin
  196.     IsMessageShow := False;
  197.     if not IsMessageShow then
  198.     Begin
  199.         IsMessageShow := True;
  200.         MessageBoxCaption := 'О разработчике';
  201.         MessageBoxText :=
  202.           'Машевский Даниил Витальевич, группа 351003, Лабораторная
  203.           №6.1.'#10''#10'Задача:'#10'Произвести анимацию выстрела из оружия в мишень
  204.           с движущимся препятствием, в виде стены';
  205.         MessageBox(Handle, PChar(MessageBoxText),
  206.           PChar(MessageBoxCaption), MB_OK);
  207.     End;
  208.     IsMessageShow := False;
  209. end;
  210.  
  211. Procedure TMainFireForm.ExplodeTarget(Sender: TObject);
  212. Begin
  213.     Explosion.Left := Target.Left + (Target.Width - Explosion.Width) Div 2;
  214.     Explosion.Top := Target.Top + (Target.Height - Explosion.Height) Div 2;
  215.     Explosion.Visible := True;
  216.     (Explosion.Picture.Graphic As TGIFImage).Animate := True;
  217.     MainTimer.Enabled := True;
  218.     GayTimer.Enabled := True;
  219.     FireTimer.Enabled := False;
  220.     MediaPlayer.FileName := 'C:\Users\Даниил\Desktop\8\Мое-видео.wav';
  221.     MediaPlayer.Open;
  222.     MediaPlayer.Play;    
  223.     Wall.Height := RandomRange(50, 200);
  224. End;
  225.  
  226. Procedure TMainFireForm.FormCreate(Sender: TObject);
  227. Begin
  228.     Randomize;
  229.     TimerGif.Enabled := True;
  230.     TargetVisibilityTimer.Interval := 3000;
  231.     TargetVisibilityTimer.Enabled := True;
  232.     WallSpeed := RandomRange(4, 15);
  233.     BulletSpeed := 10;
  234.     IsBulletFire := False;
  235.     Gun.Left := 0;
  236.     Gun.Top := (ClientHeight - Gun.Height) Div 2;
  237.     Svofard.SendToBack;
  238.     (Svofard.Picture.Graphic As TGIFImage).Animate := True;
  239.     Wall.Left := 430;
  240.     Wall.Top := ClientHeight;
  241. End;
  242.  
  243. End.
  244.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement