Hallo liebe WWW-Community,
ich bin mittlerweile etwas eingerostet mit meinen Delphikenntnissen, vor allem was Bilder und Mehrdimensionale Arrays angeht. Ich hatte Langeweile und wollte mich einmal an einem Schachbrett versuchen. Ok, ich hab mir meine Arbeit langsam eingeteilt, es hat nämlich alles Zeit. Ziel der ersten Übung war es jetzt ersteinmal zwei mal 64 Felder (Es sollen zwei Bretter nebeneinander werden) mit einem Bild zu Platzieren. Hierbei dachte ich an ein Mehrdimensionales Array vom Typ eines Records, der ein paar für mich später relevante Informationen und das entsprechende Bild des Feldes enthält (Hier ist vorerst nur ein Testbild eingetragen). Mein Problem ist nun, dass beim unten angegebenen Quelltext zwar ein Bild erscheint (was zugegebenermaßen schonmal ein Quantensprung ist und mich eine Stunde gekostet hat, ich stand ziemlich auf dem Schlauch), aber eben auch nur ein Bild und zwar das entsprechend letzte, lasse ich die j-Laufvariable nur bis j=6 Laufen, so wird es weiter oben positioniert, für 5 noch weiter oben, etc. Aber es wird lediglich das letzte Bild angezeigt. Ich vermute das Problem bei der Zuweisung des Bildes oder einiger Eigenschaften oder in der Deklarierung und Verwendung des dreidimensionalen Arrays. Wenn mir jemand dabei helfen könnte wäre ich euch sehr verbunden
Mit freundlichen Grüßen
Kevin Woost
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Menus,
ExtCtrls;
type
{ TForm1 }
Feld = record
pic: Tjpegimage;
bild: TImage;
x: byte;
y: byte;
highlighted: Boolean;
typ: byte;
end;
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
procedure FormCreate(Sender: TObject);
procedure startgame;
procedure draw;
private
{ private declarations }
public
end;
var
Form1: TForm1;
Brett: Array[0..1] of Array[0..7] of array[0..7] of Feld;
implementation
{ TForm1 }
procedure Tform1.draw;
var
h,i,j:integer;
begin
for h:=0 to 1 do
for i:=0 to 7 do
for j:=0 to 7 do
begin
//hier feld mit entsprechendem typ an entsprechende position "zeichnen"
//brett[1,1,1].picture.widht.x:=50;
end;
end;
procedure TForm1.startgame;
var
h,i,j:integer;
begin
for h:=0 to 1 do
for i:=0 to 7 do
for j:=0 to 7 do
begin
Brett[h][i][j].x:=i;
Brett[h][i][j].y:=j;
Brett[h][i][j].highlighted:=false;
Brett[h][i][j].typ:=0;
Brett[h][i][j].bild:=Timage.create(brett[h,i,j].bild);
Brett[h][i][j].bild:=image1;
Brett[h][i][j].bild.Picture.loadfromfile('/Users/derder/Desktop/schwarz.jpg');
Brett[h][i][j].bild.height:=50;
Brett[h][i][j].bild.width:=50;
Brett[h][i][j].bild.left:=10+h\*450+i\*50;
Brett[h][i][j].bild.Top:=10+j\*50;
Brett[h][i][j].bild.visible:=true;
//brett[h,i,j].bild.canvas.FillRect(0,51,0,51);
end;
draw;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
startgame;
end;
initialization
{$I unit1.lrs}
end.