Registriert seit: 31. Mär 2012
160 Beiträge
|
Zugriffsfverletzung - Aber warum
18. Okt 2012, 23:48
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
l,k,m,n,o,AL1,AL2: Integer;
begin
//Kollision Spieler und Ziel
if IsCollision(Spieler.BoundsRect, Ziel.BoundsRect) then
begin
Punktzahl:=Punktzahl+1;
If Sounds='Enabled' Then
begin
SoundPlayer.FileName:=Pfad+'\Datein\Ziel.wav';
SoundPlayer.Open;
SoundPlayer.play;
end;
ItemCount:=ItemCount+1;
Ziel.Top:=random(Spielflaeche.Height-Ziel.Height);
Ziel.Left:=random(Spielflaeche.Width-Ziel.width);
Memo2.lines.add(IntToStr(Ziel.Left)+';'+IntToStr(Ziel.top));
// Gegner hinzufügen
begin
setLength(gegner,length(Gegner)+1);
AL1 := length(Gegner)-1;
Gegner[AL1]:= TGegner.Create(Self);
With Gegner[AL1] do
begin
speed:=3;
Parent := self;
Cooldown := 1000;
If RandomAusgabe(1)=1 Then
begin
Width:=7;
Height:=40;
top:= 250;
Left := random( Spielflaeche.ClientWidth - Width );
end;
If RandomAusgabe(1)=0 Then
begin
Width:=40;
Height:=7;
top:= random( Spielflaeche.clientheight - height );
Left := 450;
end;
end;
end;
//Item hinzufügen
begin
setLength(Item,length(Item)+1);
AL2 := length(Item)-1;
Item[AL2]:= TItem.Create(Self);
With Item[AL2] do
begin
Parent:=Self;
Height:=10;
Width:=10;
Top:=Random(Form1.ClientHeight-Height);
Left:=Random(Form1.ClientWidth-Width);
Brush.Color:=clblack;
If RandomAusgabe(1)=1 then
begin
Pen.Color:=clgreen;
Typ:=True;
end;
If RandomAusgabe(1)=0 then
begin
Pen.Color:=clred;
Typ:=False;
end;
end;
end;
...
//Kollision Spieler und Item
For n := low(item) to high(item) do
begin
If IsCollision(Spieler.BoundsRect,Item[n].BoundsRect) Then
begin
Spieler.Upgrade(n,Item[n].Typ);
end;
end;
end;
...
//Kollision Spieler und Gegner
For k:= low(gegner) to high(gegner) do
begin
if ((IsCollision(Gegner[k].BoundsRect, Spieler.BoundsRect))
and (Gegner[k].Cooldown<=0)) then Verloren;
end;
...
end;
Bei //Kollision Spieler und Item bekomme ich eine Zugriffsverletzung. Ich verstehe allerdings nicht warum. Genauso werden bei mir die Gegner behandelt und bei denen funktioniert es. Zudem die Gegner ja genauso erstellt werden.
Weiß jemand warum ?
|
|
Zitat
|