Ich schreibe zurzeit ein kleines Spiel und möchte bestimmten Feldern in einem Array einen Wert zuweisen.
Beim Kompilieren weist Lazarus keine Fehler auf, aber sobald er das Projekt startet bekomme ich den Error:
"Projekt project1 hat
Exception Klasse >>External:SIGSEGV<< ausgelöst.
In Datei 'unit2.pas' in Zeile 195:
Home.Tiles[9.i]:=1;"
Ich habe schon nach Problemlösungen gesucht, aber bisher konnte mir keine wirklich weiterhelfen.
Ich hänge mal den zugehörigen Code an.
Delphi-Quellcode:
THero = class
private
public
Map:integer;
NewPosX:integer;
NewPosY:integer;
ActPosX:integer;
ActPosY:integer;
Equip:string;
procedure MoveUp;
procedure MoveDown;
procedure MoveLeft;
procedure MoveRight;
// constructor Create;
end;
TMap = class
private
public
Tiles: Array[0..32,0..18] of integer;
SpawnX:integer;
SpawnY:integer;
constructor Create;
end;
{ TForm2 }
TForm2 = class(TForm)
Image1: TImage;
Image2: TImage;
HeroDown: TImage;
HeroUp: TImage;
HeroLeft: TImage;
HeroRight: TImage;
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure HomeInitialisierung;
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
Hero: THero;
Home,Center,East,Hosp1,Hosp2,HospRoof:Tmap;
implementation
{$R *.lfm}
{ TForm2 }
constructor TMap.Create;
var i,j:integer;
begin
for i:=0 to 32 do
begin
for j:= 0 to 18 do
begin
Tiles[i,j]:=0;
end;
end;
self.SpawnX:=0;
self.SpawnY:=0;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Image1.visible:=true;
Home.Create;
Center.Create;
East.Create;
Hosp1.Create;
Hosp2.Create;
HospRoof.Create;
Form2.HomeInitialisierung;
procedure TForm2.HomeInitialisierung;
var
i,j:integer;
begin
for i:=6 to 12 do
begin
Home.Tiles[9,i]:=1;
end;
//Home.Tiles[10,6]:=1;
//Home.Tiles[10,9]:=1;
//Home.Tiles[10,10]:=1;
//Home.Tiles[10,13]:=1;
end;
Wäre toll, wenn mir jemand helfen könnte.
LG Griesi