Thema: Delphi Reaktionstest

Einzelnen Beitrag anzeigen

KingMax

Registriert seit: 30. Aug 2009
7 Beiträge
 
#1

Reaktionstest

  Alt 30. Aug 2009, 19:02
Hallo,
wir haben als aufgabe in der Schule das Projekt "Reaktionstest" aufbekommen. Dabei geht es darum, die Reaktion zu testen. Hierzu wird eine gezeichnete Ampel nach zufälliger Zeit von rot auf "Grün" springen, und dann muss man eine taste drücken. Die Reaktion wird dann unten im Edit feld angezeigt. Das Programm besteht aus zwei Formularen, das Hauptformular und das Ampel-Formular (Units).

Mein Problem besteht nun hier, dass ich mithilfe der Klasse TAmpel die Ampel erzeuge. Nun wird die Klasse aber nicht akzeptiert! Könnt ihr mir vielleicht sagen wo ich einen Fehler gemacht habe? Ich lade den Quelltext beider Formulare mit hoch:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TMain = class(TForm)


  procedure FormCreate(Sender: TObject);
  procedure BtTestreiheClick (Sender: TObject);
  procedure BtReaktionstestClick (Sender: TObject);
  procedure FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
  procedure TiReaktionTimer (Sender: TObject);


  private
    { Private declarations }
  BtTestreihe: TButton; //Klassen und Objecte (bei Laufzeit erzeugt)
  BtReaktionstest: TButton;
  TiReaktion: TTimer;
  EdZeit: TEdit;
  LbZeit: TLabel;


  Start, Stop: Longint;
  public
    { Public declarations }
  end;

var
  Main: TMain;
  Ampel: TAmpel; //WARUM AKZEPTIERT DER DIE KLASSE NICHT???


implementation

{$R *.dfm}

procedure TMain.FormCreate(Sender: TObject);
begin
BorderStyle := bsSingle; //Hauptformular
Left := 150;
Top := 100;
Width := 240;
Height := 250;
Caption := 'Projekt Reaktion';

BtTestreihe := TButton.Create (Main); //Komponenten
BtTestreihe.Parent := Main;
BtTestreihe.SetBounds (60,20,120,32);
BtTestreihe.Caption := 'Neuer Test';
BtReaktionstest := TButton.Create(Main);
BtReaktionstest.Parent := Main;
BtReaktionstest.SetBounds (60,70, 120, 32);
BtReaktionstest.Caption := 'Start!';
LbZeit := TLabel.Create(Main);
 with LbZeit do begin
        Parent := Main;
        SetBounds (60, 120, 120, 32);
        Caption:= 'Reaktionszeit';
 end;
EdZeit := TEdit.Create(Main);
 with EdZeit do begin
        Parent := Main;
        SetBounds (60, 140, 120, 32);
        Font.Name := 'Arial';
        Font.Size := 20;
        Text := ' 0 ms';
 end;
TiReaktion := TTimer.Create (Main);

end;

procedure TMain.BtTestreiheClick(Sender: TObject); //Button Testreihe
begin
   Ampel := TAmpel.Create(Main);
   Ampel.Show;
   Ampel.Rot;
   BtReaktionstest.Enabled := True;
end;

procedure TMain.BtReaktionstestClick(Sender: TObject); //Button Reaktionstest
begin
  EdZeit.Text := '';
  Ampel.Rot;
  TiReaktion.Interval := 2000 + Random(3000);
  TiReaktion.Enabled := True;
end;

procedure TMain.TiReaktionTimer(Sender: TObject); //Timer
begin
Ampel.Gruen;
Start := GetTickCount;
TiReaktion.Enabled := False;
end;
                                                               //Zeit
procedure TMain.FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Stop := GetTickCount;
if Ampel.IstGruen
   then EdZeit.Text := ''+ IntToStr (Stop-Start)+ ' ms';
end;




end.
Hier Formular mAmpel:

Delphi-Quellcode:
unit mAmpel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type TAmpel = class (TForm)

private
AmpelGruen: Boolean;

public
procedure Rot;
procedure Gruen;
function IstGruen: Boolean;
end;


implementation

procedure TAmpel.Rot; //Rote Ampel
begin
  with Canvas do
  begin
     Pen.Width := 3;
     Brush.Color := clred;
     Ellipse (20,20,140,140);
     Brush.Color := clgray;
     Ellipse(20,160,140,280);
  end;
  AmpelGruen := false;
end;

procedure TAmpel.Gruen; //Gruene Ampel
begin
  with Canvas do
  begin
     Pen.Width := 3;
     Brush.Color := cllime;
     Ellipse(20,160,140,280);
     Brush.Color := clgray;
     Ellipse(20,20,140,140);
  end;
  AmpelGruen := True;
end;

function TAmpel.IstGruen;
begin
  IstGruen := AmpelGruen;
end;








end.
  Mit Zitat antworten Zitat