ich hoffe einfach mal, dass ich hier richtig bin (Dies ist mein erster Beitrag

Ich bin gerade dabei mich an einem kleinen 2D-Spiel mit Lazarus zu probieren. Zur besseren Übersicht wollte ich verschiedene Mechaniken (Steuerung, Gegner-KI, ...) in verschiedene Units schreiben.
Allerdings kann ich von einer zweiten Unit nicht auf die Elemente auf der Form1 (Timer, Buttons, ...) zugreifen. Außerdem würde ich die Prozeduren für Ereignisse von der Form1 auch gerne in der zweiten Unit deklarieren.
Also möchte ich zum Beispiel in der Unit2 festlegen, was passieren soll, wenn auf der Form1 eine Taste gedrückt wird (FormKeyDown).
Unit Main:
Code: Alles auswählen
unit Main;
{$mode objfpc}{$H+}
interface
uses
SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, mmsystem, Classes, LCLType, Steuerung;
type
{ TForm1 }
TForm1 = class(TForm)
walk_up: TTimer;
walk_down: TTimer;
walk_left: TTimer;
walk_right: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: char);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure walk_downTimer(Sender: TObject);
procedure walk_leftTimer(Sender: TObject);
procedure walk_rightTimer(Sender: TObject);
procedure walk_upTimer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
procedure CreateLevel();
procedure CreateChar();
procedure DisableTimers();
end;
var
Form1: TForm1;
Ground: array [1..64,1..36] of TImage;
Player: TImage;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=true;
CreateLevel();
CreateChar();
end;
//Das soll in die Zweite Unit!
//-----------------------------
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
case Key of
vk_w:
walk_up.enabled:=true;
vk_s:
walk_down.Enabled:=true;
vk_d:
walk_right.Enabled:=true;
vk_a:
walk_left.Enabled:=true;
end;
end;
Unit Steuerung:
Code: Alles auswählen
unit Steuerung;
{$mode objfpc}{$H+}
interface
uses
SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, mmsystem, Classes, LCLType;
var
x:integer;
implementation
uses
Main;
//Hier soll das hin!
end.
MfG
DasKeyboard
PS: Wie gesagt mein erster Beitrag. Sollte irgendetwas falsch/unklar sein einfach Bescheid sagen.