Einzelnen Beitrag anzeigen

Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#28

Re: [Spiel] 3D Race

  Alt 24. Mär 2007, 20:13
Hi !

Also, ich hab Deine neue Version grad mal runtergeladen, aber ich hab nicht herausgefunden wie ich das Auto zum fahren überreden kann. Und ich konnte KEINEN Track laden!

Ich vermute Du hast da etwas durcheinandergebracht. Es gibt VERSCHIEDENE Wege wie man das Laden eines Levels progrmmieren kann, zum Beispiel entweder über eine ComboBox ODER über einen TOpenDialog! Da musst Du jetzt die Entscheidung treffen weil es ja DEIN Project ist.

Nehmen wir an Du entscheidest Dich für die Combo-Box-Methode, dann mach es so:

Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  // Beim Programmstart alle Level in ComboBox einlesen.
  LoadLevelsToComboBox;
end;

Procedure TForm2.LoadLevelsToComboBox;
Var
  SR:TSearchRec;
Begin
  // Aktuelles Verzeichniss auf das Verzeichniss setzen in dem das Programm liegt
  SetCurrentDir(ExtractFileDir(ParamStr(0)));
  Try
    // Such mal im aktuellen Verzeichnis ne Datei mit der Endung *.trk...
    If FindFirst('*.trk',0,SR)=0 then Begin
      // ...es wurde eine gefunden, also wiederhole...
      Repeat
        // ...Schreib den Namen des Levels in die Combobox...
        LevelComboBox1.Items.Add(SR.Name);
      // ...und mach dat ganze sooft bis kein weiterer Level mehr kommt!
      Until FindNext(SR)<>0;
    End;
  Finally
    // Zum Schluss UNBEDINGT den Speicher vom SearchRecord freigeben
    FindClose(SR);
    // Und den ersten Level auswählen
    LevelComboBox1.ItemIndex:=0;
  End;
End;
Wenn Du dies in Dein Programm einfügst dann werden beim Programmstart alle *.trk AUTOMATISCH in Deine Comobox hineingeschrieben. Lösche also im Obejkinspecktor mal die Items der Combobox, lass die komplett weg! Übrigens, was da oben in dem Beispiel "LevelComboBox1" heisst must Du auf den Namen Deiner ComboBox in Deinem Programm ändern, vermutlich "ComboBox1".
Füge diese zwei Prozeduren mal in Dein Programm ein und ändere NUR den ComboBox Namen.

Dann brauchst Du noch folgendes:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
Begin
  LoadLevel(ComboBox1.Text);
end;
Ja, und ich setze mal voraus das Du ein Unterprogramm hast das den Level lädt und als Eingangs-Parameter gern den Namen des Levels hätte, also in etwa sowas:

[/delphi]
procedure TForm2.LoadLevel(FileName: String);
Begin
// Hier muss dann der Level "FileName" geladen werden!
End;
[/delphi]

Ich hoffe ich habe es diesmal gut genug erklärt, sonst frag einfach nochmal wenn Du was nicht verstanden hast oder es nicht funktioniert.

Grüsse von TOC !
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat