![]() |
Re: [Spiel] 3D Race
haha vielen dank aber das system das ich benutze steht schon fest ^^ ich muss eben nur nen editor machen damit man aus nem benutzerfreundlichen Programm ne strecke machen kann.
EDIT: ich meine das Laden und Speichern funktioniert schon ich bruach nur noch n programm ^^ |
Re: [Spiel] 3D Race
Hi!
Zitat:
Hey, Dein Auto braucht unbedingt RÄDER! Oder mach das Design doch einfach etwas moderner und mach ein Schwebefahrzeug draus, einen Gleiter also, dann kannst Du dir die Räder sparen. Aber dann solltest Du einen Schatten unter den Gleiter machen das man sieht das er schwebt! Und Du soltest die Entfernung so einstellen das man beim Programmstart gleich einen Teil der Strecke sieht, und ich finde das Auto sollte nit grad so klein werden! Bin mal gespannt wie sich Dein Programm weiterentwickelt! Grüsse von TOC! |
Re: [Spiel] 3D Race
Ok der Editor ist Fertig und Up :wink: Testen + Kommentieren wär nett :)
|
Re: [Spiel] 3D Race
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Zitat:
Grüss von TOC! |
Re: [Spiel] 3D Race
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Ok, also gut, ich habs noch mehr getestet! Einige Sachen finde ich nit grad so gut. Zum Beispiel ist das Fenster "Level laden" in Deinem Programm ein extra Fenster, und das hat Nachteile. Normalerweise haben Fenster ein Menü, zum Beispiel "Datei/Level Laden" und so weiter. Normalerweise macht man sowas mit TMainMenü und einem OpenDialog. Der OpenDialog zeigt Dir dann alle Level an und man kann dann einen aussuchen und laden- praktische Methode. Aber bei Dir stehen leider nur zwei Level in der ComboBox von Deinem Programm zum auswählen :cry: ! Wenn man sich mit Deinem Editor neue Level gemacht hat und sie im richtigen Verzeichniss stehen dann stehen sie trotzdem nit in der ComboBox und man muss ihre Namen von Hand eingeben- nicht so gut. Probier doch mal das hier:
Delphi-Quellcode:
und dann in FormShow:
Procedure TForm1.LoadLevelsToComboBox;
Var SR:TSearchRec; Begin 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;
Delphi-Quellcode:
Dies hat den Vorteil das Dein Programm dann beim Start alle Level sucht und in die ComboBox schreibt, das macht für den Spieler alles viel einfacher!
procedure TForm1.FormShow(Sender: TObject);
begin LoadLevelsToComboBox; end; Ja, und wenn man aus versehen das Level-lade-Fenster zugeklickt hat und will sich nochmal nen anderen Level ansehen dann muss man das ganze Programm beenden und nochmal neu starten... Und ausserdem kann man total unsinnige Level eingeben mit dem Editor, weil er nicht prüft ob die einzelnen Teilstrecken auch mit den Strecken der benachbarten Feldern anbschliessen :gruebel: . Beweis: Im Zip im Anhang ist ein Level "NonsensLevelByToc", denn kannst Du Dir ja mal ansehen, dann weist Du was ich meine. Dein Editor sollte also schon besser mal prüfen ob die Eingabe des Anwenders sinnvoll ist, finde ich. Im Anhang ein Programm das Dir zeigt wie das mit dem TOpenDialog und TMainMenu geht oder mit allen Tracks in ner ComboBox! Aber bis auf die paar Punkte find ich Dein Programm gar nit so schlecht, bastel Du ruhig schön weiter daran herum :thumb: ! Ok, bei dem Programm im Anhang hab ich es beim Zeichnen des geladenen Levels ganz schön übertrieben :roll: , aber mir war eh grad langweilig und da hab ich es halt mal so gebastelt. Grüsse von TOC :stupid: ! |
Re: [Spiel] 3D Race
Man hast du viel geschireben ^^
Also das mit dem open dialog hab ich versucht hat ned geklappt ich mach halt mal das was du da hingeschireben hast... Das das nich so.... benutzerfreundlich is kann ich nicht abstreiten aber is ist ja auch nur dazu da das Prinzip zu Testen. ^^ btw: hab ne neue version mann kann jetz fahren aber es gibt noch n bug mit der höhe vom auto ich arbeite dran ^^ Ok, Toc ,ich hab einen teil übernommen aber an einer stelle gibtsn problem_
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
Begin With OpenDialog1 do If Execute Then ComboBox1.Text := FileName; end; nämlich wenn ich über den Open Dialog was Lade Steht da nicht einfach der Name der Strecke.trk sondern der ganze pfad... (C\Programme\Borland\Delphi7.......) undd as gibt nen fehler beim laden. |
Re: [Spiel] 3D Race
Delphi-Quellcode:
gibt nur den Filename zurück...
ExtractFileName(...)
PS: Laden müsstest du natürlich mit Pfad ^^ |
Re: [Spiel] 3D Race
Hi :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:
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".
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; Füge diese zwei Prozeduren mal in Dein Programm ein und ändere NUR den ComboBox Namen. Dann brauchst Du noch folgendes:
Delphi-Quellcode:
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:
procedure TForm2.Button1Click(Sender: TObject);
Begin LoadLevel(ComboBox1.Text); end; [/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 :roteyes: ! |
Re: [Spiel] 3D Race
Strecke laden geht doch! Aber man muss erst mal rauszoomen, um etwas zu sehen...
Er hat es übrigens selber gesagt, dass man das Auto noch nicht fahren kann :wink: Ich will hier ja nicht der Pessimist sein, aber ich glaube, das das Projekt bald dem Tod geweiht sein wird... Vor allem wegen der Einschränkungen von Canvas und mangelnden Wissens für 3D-Programmierung... Ich will damit nicht sagen, dass es nicht geht, aber es... ist zumindest zu schwierig... |
Re: [Spiel] 3D Race
Zitat:
bis jetzt funktioniert ja alles und schwierig find ichs garnicht man muss eben nur viele rechnungen machen aber das ist ja kein problem und auch wenn canvas dafür nicht so geeignet ist mir macht das richtig spaß also werd ich damit nicht aufhören ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz