Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit MainForm;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
- System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Menus;
- type
- TAnimeForm = class(TForm)
- Timer1: TTimer;
- ImageCanvas: TImage;
- LabelSpeed: TLabel;
- MainMenu1: TMainMenu;
- N5: TMenuItem;
- LabelToMeasureScreenOfUser: TLabel;
- Label1: TLabel;
- procedure FormCreate(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure N5Click(Sender: TObject);
- private
- MultPix: Single;
- public
- function MultPixels(PixQuant: Integer): Integer;
- end;
- const
- My300 = 300;
- My500 = 500;
- var
- AnimeForm: TAnimeForm;
- BackGround: TBitMap;
- Ship: TBitMap;
- Can: TBitMap;
- Bomb: TBitMap;
- X, Y, X1, Y1: Integer;
- Shx, ShXBmb, ShYBmb, Time: Integer;
- Num: Integer;
- Speed: Integer;
- BallIsFlying: Boolean;
- procedure MyMessageBoxInfo(Form: TForm; CaptionWindow, TextMessage: String; IsWarning: Boolean = False); external 'Dll_MyMessageBox.dll';
- function MyMessageBoxYesNo(Form: TForm; CaptionWindow, TextMessage: String; IsWarning: Boolean = False) : Boolean; external 'Dll_MyMessageBox.dll';
- implementation
- {$R *.dfm}
- procedure TAnimeForm.FormCreate(Sender: TObject);
- begin
- MultPix := LabelToMeasureScreenOfUser.Width / 100;
- BallIsFlying := False;
- Shx := Random(4) + 1;
- Time := 0;
- X := -My300;
- Y1 := My500;
- Y := 80;
- X1 := 1000;
- ShYBmb := 0;
- ShXBmb := 1;
- Speed := 1;
- BackGround := TBitMap.Create;
- Ship := TBitMap.Create;
- Can := TBitMap.Create;
- Bomb := TBitMap.Create;
- BackGround.LoadFromFile('more9.bmp');
- Ship.LoadFromFile('shipp5.bmp');
- Can.LoadFromFile('cn1.bmp');
- Ship.transparent := true;
- Can.transparent := true;
- Bomb.transparent := true;
- ImageCanvas.Canvas.Draw(0, 0, BackGround);
- ImageCanvas.Canvas.Draw(X, 80, Ship);
- ImageCanvas.Canvas.Draw(My300, My300, Can);
- Num := 0;
- end;
- procedure ChangeCannnon(Num: Integer);
- Begin
- case Num of
- 0:
- Can.LoadFromFile('cn1.bmp');
- 1:
- Can.LoadFromFile('cn2.bmp');
- -1:
- Can.LoadFromFile('cn4.bmp');
- end;
- End;
- procedure TAnimeForm.FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if not BallIsFlying then
- begin
- case Key of
- 49, 97:
- begin
- Speed := 1;
- end;
- 50, 98:
- begin
- Speed := 2;
- end;
- 51, 99:
- begin
- Speed := 3;
- end;
- 52, 100:
- begin
- Speed := 4;
- end;
- 53, 101:
- begin
- Speed := 5;
- end;
- 54, 102:
- begin
- Speed := 6;
- end;
- 55, 103:
- begin
- Speed := 7;
- end;
- 56, 104:
- begin
- Speed := 8;
- end;
- 57, 105:
- begin
- Speed := 9;
- end;
- end;
- LabelSpeed.Caption := 'Скорость снаряда: ' + IntToStr(Speed);
- ShXBmb := Speed;
- ShYBmb := Speed;
- if Num <> -1 then
- if Key = 37 then
- Begin
- Dec(Num);
- X1 := 2000;
- End;
- if Num <> 1 then
- if Key = 39 then
- begin
- Inc(Num);
- X1 := 2000;
- end;
- ChangeCannnon(Num);
- if ((Key = 13) or (Key = 32)) then
- Begin
- BallIsFlying := True;
- Y1 := 520;
- case Num of
- 0:
- Begin
- Y1 := My500;
- X1 := 450;
- End;
- 1:
- X1 := 540;
- -1:
- X1 := 390;
- end;
- Bomb.LoadFromFile('bomb12.bmp');
- End;
- end;
- end;
- procedure TAnimeForm.N5Click(Sender: TObject);
- begin
- MyMessageBoxInfo(AnimeForm, 'Справка', 'Данная программа представляет собой игру, целью которой стоит уничтожение плывущего корабля.'
- + #10#10 +
- 'Управление пушкой происходит с помощью стрелок на клавиатуре.'
- + #10 + 'Кнопки от 1 до 9 задают скорость снаряда.' + #10#10 +
- 'Для выстрела нажмите Enter или Пробел' + #10#10 +
- 'Автор: Панев Александр, гр. 051007' + #10 + 'Минск, 2021');
- end;
- procedure TAnimeForm.Timer1Timer(Sender: TObject);
- begin
- X := X + Shx;
- Y1 := Y1 - ShYBmb;
- if X > 950 then
- begin
- X := -600;
- ShYBmb := 0;
- Y1 := 1000;
- end;
- Label1.Caption := IntToStr(X1);
- ImageCanvas.Canvas.Draw(0, 0, BackGround);
- ImageCanvas.Canvas.Draw(X, Y, Ship);
- ImageCanvas.Canvas.Draw(-170, 30, Can);
- Y1 := Y1 - ShYBmb;
- if Num = 1 then
- Begin
- X1 := X1 + ShXBmb;
- End;
- if Num = -1 then
- Begin
- X1 := X1 - ShXBmb;
- End;
- ImageCanvas.Canvas.Draw(X1, Y1, Bomb);
- if ((Y1 < 195) and ((X1 - X) < My300) And ((X1 - X) > 0)) then
- Begin
- Ship.LoadFromFile('boom10.bmp');
- Shx := 0;
- Time := 0;
- BallIsFlying := False;
- End;
- if Y1 < 195 then
- X1 := 2000;
- if Shx = 0 then
- Inc(Time);
- if Time = 50 then
- Y := 1000;
- if Time = 70 then
- begin
- case MessageDlg('Отличный выстрел, хотите попробовать снова?',
- mtConfirmation, [mbYes, mbNo], 0) of
- mrYes:
- Begin
- Ship.LoadFromFile('shipp5.bmp');
- Y := 80;
- ShXBmb := 1;
- Speed := 1;
- X := -My300;
- LabelSpeed.Caption := 'Скорость снаряда: 1';
- Shx := Random(4) + 1;
- End;
- mrNo:
- AnimeForm.Close;
- end;
- end;
- end;
- function TAnimeForm.MultPixels(PixQuant: Integer): Integer;
- begin
- Result := Round(PixQuant * MultPix);
- end;
- end.
Add Comment
Please, Sign In to add comment