Einzelnen Beitrag anzeigen

WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#9

AW: Spiel programmieren, Hilfe benötigt.

  Alt 21. Jan 2011, 20:31
Was DeddyH meinte (so hab ich das vestanden):
Delphi-Quellcode:
var
  ListeVonDateinamen:TStringlist;
  DatenameIndex:Integer;
  i:Integer;
begin
  Randomize; //EIGENTLICH SOLLTEN WIR DAS IM FORMCREATE ODER SO MACHEN(nur einmal aufrufen)

  ListeVonDateinamen:=TStringList.Create; //wir erzeugen eine Stringlist (, die wir unten wieder freigeben)
  try
    ListeVonDateinamen.add('C:\pfad\dateiname1.bmp'); //Die Stringlist muss jedes mal befüllt werden
    ListeVonDateinamen.add('C:\pfad\dateiname2.bmp'); //Oder aus einer Anderen kopiert
    ListeVonDateinamen.add('C:\pfad\dateiname3.bmp'); //weil Unten Einträge gelöscht werden (damit sie nicht 2 mal vorkommen)
    ListeVonDateinamen.add('C:\pfad\dateiname4.bmp'); //Übrigens: Dateinamen NIEMALS so hinschreiben, sondern am Besten einen Pfad relativ zu der .exe angeben (s.ParamStr(0))
    
    for i:=0 to Form1.ComponentCount-1 do //hier laufen wir alle auf dem Formular platzierten Komponenten durch
    begin
      if Form1.Components[i] is TImage then //und wenn wir ein TImage finden, dann
      begin
        DateinameIndex:=Random(ListeVonDateinamen.count) //machen wir erst mal eine Zufallszahl
        ImageName.Picture.LoadFromFile(ListeVonDateinamen[DatenameIndex]; //und laden das Bild mit dem Dateinamen, der in der Stringlist mit dem Index DatenameIndex liegt
        ListeVonDateinamen.Delete(DateinameIndex); //dann löschen wir den Eintrag, damit wir nicht 2 mal das gleiche Bild laden
      end;
    end;
  finally //selbst wenn oben seit den try etwas schief läuft kommen wir hier rein
    FreeAndNil(ListeVonDateinamen); //und geben unsere stringlist wieder frei
  end;
end;
Wichtig dürfte sein, dass die Anzahl der Elemente in der Stringlist >= der Anzahl der TImages ist (- sonst ist die SL leer)


Ausserdem kopiere nicht einfach den code (den ich übrigens mangels Delphi nicht getestet habe), sondern sieh dir an was er macht und programmiere es dann selbst, sonst lernst du dabei gar nichts (spreche aus Erfahrung)
  Mit Zitat antworten Zitat