unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, OpenGLContext, Forms, Controls, Graphics,
  Dialogs, StdCtrls,GL,GLU,LCLType, ExtCtrls{,enemies};

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    OnApp: TApplicationProperties;
    OpenGLControl1: TOpenGLControl;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure OnAppIdle(Sender: TObject; var Done: Boolean);
    procedure OpenGLControl1Paint(Sender: TObject);
    procedure OpenGLControl1Resize(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key:Word; Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  Name: String;
  links,rechts, gegnerrechts, gegnerunten: Real;
  test:Boolean;
{$R *.lfm}
implementation
{ TForm1 }

procedure TForm1.FormKeyDown(Sender: TObject; Var Key:Word; Shift: TShiftState);
begin
  if key =
       VK_left then
       begin
         links:= links-0.1;
         rechts:= rechts-0.1;
       end;
  if key=
       VK_right then
            begin
              rechts:= rechts+0.1;
              links:= links+0.1;
            end;

  If Key = VK_space Then
     begin
       test:=true;
     end;
  end;

procedure TForm1.Timer1Timer(Sender: TObject);
VAR
  Mitte: Real;
begin
  Mitte:= ((links + rechts) /2) + 0.2;

  If gegnerrechts>1.7 Then
                            begin
                                 gegnerunten:=gegnerunten+0.15;
                                 gegnerrechts:=0;
                            end

                        Else    gegnerrechts:=gegnerrechts+0.1;

  if test = true then
                            begin
                                        glpointsize(15);
                                        glbegin(gl_Points);
                                        glcolor3f(0.3,0.9,0.5);
                                        glvertex3f(Mitte,0,-0.85);
                                        glend;
                                        test:=false;
                            end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.AddOnIdleHandler(@OnAppIdle);
  links:= 0;
  rechts:= 0;
  gegnerrechts:=0;
  gegnerunten:=0;
  test:= false
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  links:= links-0.1;
  rechts:=rechts+0.1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  rechts:= rechts+0.1;
  links:= links+0.1;
end;

procedure TForm1.OnAppIdle(Sender: TObject; var Done: Boolean);
begin
  done:= false;
  OpenGLControl1.Invalidate;
end;

procedure TForm1.OpenGLControl1Paint(Sender: TObject);
begin

glbegin(gl_QUADS);
  glcolor3f(0,0,0);
  glvertex3f(-1,1,-0.2);
  glvertex3f(1,1,-0.2);
  glvertex3f(1,-1,-0.2);
  glvertex3f(-1,-1,0.2);
glend;

glbegin(gl_QUADS);  //Raumschiff
  glcolor3f(0,1,0);
  glvertex3f(-0.1+links,-0.9,0);
  glvertex3f(0.1+links,-0.9,0);
  glvertex3f(0.1+links,-0.95,0);
  glvertex3f(-0.1+links,-0.95,0);
glend;

glbegin(gl_QUADS);  //Gegner
  glcolor3f(1,0,0);
  glvertex3f(-0.8+gegnerrechts,0.9-gegnerunten,0);
  glvertex3f(-0.9+gegnerrechts,0.9-gegnerunten,0);
  glvertex3f(-0.9+gegnerrechts,0.85-gegnerunten,0);
  glvertex3f(-0.8+gegnerrechts,0.85-gegnerunten,0);
glend;

glpointsize(15);
glbegin(gl_Points);
glcolor3f(0.1,0.5,0.8);
glvertex3f(0.5,0,-0.85);
glend;

  glFlush();
  OpenGLControl1.SwapBuffers;

end;

procedure TForm1.OpenGLControl1Resize(Sender: TObject);
begin
  if OpenGLControl1.height<=0 then exit;
end;

end.

