Unterschied zwischen Funktionen und normalem Code
Übersicht

Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nagut, schade.
Dann kommen hier noch meine vorerst letzten Fragen: Wenn ich extern Daten auslagere, bespielsweiße um die festgelegte Auflösung zu speichern, oder für die Map Dateien usw, was für eine Datei muss dies sein? *.cfg sieht man hierfür ab und an, jedoch ist das keine speziales Dateiformat. Eben so gut könnte ich ja *.txt nehmen. Andere wiederum verwenden etwas "höheres" wie z.B. *.pak, was sich auch nicht einfach mit dem Editor lesen lässt. 2. Frage: Wie ungefähr funktioniert das Laden? Momentan stelle ich mir das so vor, dass irgendein Bild, oder auch mehrere angezeigt werden, während im Hintergrund das Programm das Level generiert und gleichzeitig wird durch ein Ladebalken gezeigt wie man ist. |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Dateinamenserweiterung stellt unter Windows einen Mechanismus dar, mit dem das Betriebssystem erkennt, womit es die Datei öffnen soll. Nichts weiteres. Du kannst jeden freien Dateinamen wählen, auch ohne Dateiendung. Auch die Wahl einer eigenen, neuen Dateiendung ist möglich.
Das Laden musst du genau so machen, wie du es beschrieben hast: Ein bisschen laden, neuen Frame mit gefüllterem Ladebalken zeichnen, laden, zeichnen... Der Ladealgorhythmus muss entsprechend angepasst werden, dass er seinen eigenen Fortschritt einschätzt und an entsprechender Stelle immer neu zeichnet. ZEVS |
||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber öffnet der Editor nicht alles, unabhängig vom Dateiformat?
Und wenn beim öffnen dann die Kryptischen Zeichen auftauchen, dann heißt dies doch, dass es ein wenig besonders ist, oder nicht? Und wie genau kommt man von Blitzbasic auf diese "besonderen Dateien"? Muss ich mir überhaupt besondere Gedanken um die Dateiendung machen, wenn man sie am ende sowieso mit dem Editor einsehen kann und Blitzbasic ebenso interagieren kann, wie der Editor? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist nichts besonderes. Textdaten beschränken sich einfach nur auf bestimmte Bytes, Binärdateien können jedes Byte enthalten. Entsprechend nimmst du einfach ReadFile![]() ![]() ![]() ![]() ![]() ![]() Du brauchst dir keine Gedanken um die Dateiendung machen. ZEVS |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine kleine Einschränkung: Ich würde keine groß bekannte nehmen, wie zB PDF - einfach um Verwirrungen vorzubeugen, nicht weil es technisch nichtr möglich wäre.
Und: nahezu jedes Dateiformat enthält am Anfang (im "Header") ein Erkennungszeichen, anhand dessen auch dein Programm weiss dass es sich um ein gülötiges File für dein Format handelt. Du könntest zB am Beginn jedes Files die Zeichenkette "SevenData" haben. Wenn das nicht da ist, ist das geöffnete File schon mal nicht von deinem Editor ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit *.pak werden auch Archive benannt, in denen mehrere Dateien stehen: Wenn du z.B. ein paar Bilder hast, kannst du die Daten alle einzeln lesen und dann Hintereinander in eine Datei schreiben - mit einem passenden Header zum entpacken, damit du weißt, was, wie viele Dateien und wo sie anfangen und enden. Weder Bildbetrachter noch Textprozessoren können mit der Datei etwas sinnvolles anfangen, womit du dem 08/15 User den Zugriff verweigerst.
Dazu brauchst du aber schon etwas Know-how und 100%ig sicher ist es prinzipiell auch nicht - ich würd mir um so was erst später mal Gedanken machen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da du noch nie mit Dateien gearbeitet hast würde ich Dir dringend raten, alles als reines ASCII abzuspeichern. Das bedeutet dass Du nur mit Texten arbeitest. Die offizielle Endung wäre dann .TXT
Lies dazu mein Dateien-Tutorial: https://www.blitzforum.de/foru...hp?t=33651 Der Vorteil ist, Du kannst so erzeugte Dateien jederzeit mit einem normalen Text-Editor öffnen und sehen, ob alles korrekt angekommen ist. Zweiter Vorteil: Du kannst Dich zuerst mal nur um das LESEN von Dateien kümmern, weil Du die Dateien zunächst einfach mit dem Text-Editor erstellen kannst. Dritter Vorteil: Du kannst falls etwas schief gegangen ist, die Datei im Text-Editor korrigieren. Bei den heutigen Computern sind auch bei TXT-Dateien keine Performance-Einbrüche zu erwarten, solange Du unter 10.000 Zeilen bleibst. Der Verschlüsselungsgedanke ist zwar nett, hat aber in einem Anfänger-Projekt nichts zu suchen. Mein Rat: Lern erst mal mit TXT-Dateien zurechtzukommen! In einer Textdatei wird nur mit Texten gearbeitet. Auch Zahlen werden zu Texten. Die Zahl 32 wird also nicht als ein Byte mit dem Wert 32, sondern als 2 Zeichen "3" gefolgt von "2" abgespeichert. Würdest Du die Methode 1 nehmen, dann würdest du im Texteditor nur ein Leerzeichen sehen. Aber bei der zweiten Methode siehst Du ganz normal die 32. Der Zugriff auf die Datei (Lesen und schreiben) erfolgt dabei immer mit den String-Befehlen: ReadLine() bzw WriteLine(). Die haben gleich noch den Vorteil, dass für jeden abgespeicherten Parameter eine eigene Zeile verwendet wird. BlitzBasic: [AUSKLAPPEN] Zahl%=123 |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Tutorial hab ich letztens gesehen^^
Da wäre noch was; Ich hab ein wenig gestöbert, was halbtransparenz in Blitzbasic angeht und als beste Lösung wird für gewöhnlich Draw3D genannt. Braucht man lange zur einarbeitung und hat man weitere Vorteile davon? Kennt jmd. die Animationen bei Pflanzen gegen Zombies? Zum einen bewegen sich die Pflanzen, hin und her und zum anderen greifen sie an. So werden mehrere Animationen benutzt, aber wie geht das? (Ich brauche keine genaue Erklärung, sondern Anhaltspunkte, wo ich zu suchen habe, oder was ich brauche) |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Draw3D ist eigentlich nicht schwer. Aber überstürze nicht gleich alles.
Es lassen sich auch ohne Draw3D gute Spiele erstellen ![]() Um deine zweite Frage zu beantworten: Die Herangehensweise bei 3D-Modellen und 2D-Bildern ist da sehr ähnlich. Du hast bei einem Bild alle benötigten Bilder in einer sinnvollen Reihenfolge hintereinander, bei 3D-Modellen sind das die benötigten Zwischenframes. Du ordnest dann die Animationen z.B. so an: 15-Bilder Hin-und-Herbewegen 15-Bilder Angreifen (Kugeln spuckten die glaub ich ^^) Und dann berechnest du dir die Indizes in der Gesamtliste der Einzelbilder raus, z.B. so Hin-und-Herbewegen: Start = Index 0, Ende = Index 14 Anfreifen: Start = Index 15, Ende = Index 30 Dann muss man bei DrawImage immer den Index dazwischen übergeben... [spoiler] Bei meinem momentanen Spiel habe ich so etwas ähnliches mit 2D-Bildern gemacht. Und habe mir letztendlich einen Animation-Type geschrieben um mir die Arbeit zu erleichtern. Um mir immer wieder die gleiche Rechnerei für Animationen zu sparen überlasse ich das einfach einer UpdateAnimation()-Funktion. Du machst dann einfach CreateAnimation(ZuvorGeladenesAnimImage, ErsterFrame, LetzterFrame, [Animationstyp = Vorwärts], [Wiederholen = True], [Geschwindigkeit = 1.0]) und lässt in der Hauptschleife die Funktion UpdateAnimations() alle Frames der Animationen richtig (und FPS-unabhängig) neu berechnen. Wenn du dann ein Bild brauchst, rufst du einfach DrawAnimation(AnimationXyz) auf und es wird der passende Frame gezeichnet. Den Animationstype mit Funktionen poste ich demnächst im Codearchiv, kann sie dir aber auch schon im Vornherein schicken, schreib mir einfach ne PM. [/spoiler] |
||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Verstehe, danke.
Ich hab deinen Threat vorhin gesehen. Ich denke ich warte und kümmere mich erst einmal um was anderes. Die Engine läuft ja noch nicht^^ und zu der hab ich auch gleich mal eine Frage; Ich habe mich umgeguckt und viele schwören auf Tiles und die habe ich mir kurz angesehen. Die Auflösung beträgt 32x32. Kann man das verstellen? bzw. ich habe das ausprobiert und dann lief es nicht mehr. Vor allem geht es mir darum, dass es nicht mehr ein 1 : 1 Verhältnis in der Auflösung ist. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie groß du deine Tiles wählst, ist deine Entscheidung. Die Auflösung hat damit auch nicht wirklich zu tun - du brauchst halt genug Tiles um den Kartenbereich voll zu zeichnen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Allerdings, meine Tiles sind z.B. 30x15 Pixel groß. | ||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab vergessen die geänderten Zahlen in die For Next schleifen einzusetzen, deshalb ging es nicht ![]() Gerade habe ich mir Draw3D angesehen. Es sieht unglaublich aus xD Von dem neuem Spielzeug bin ich geradezu begeistert. Beim Tut Bereich habe ich kein Tutorial dazu gefunden. Gibs etwa keins? Heißt das per Hilfe Funktion lernen? Naja, ich hab noch etwas Zeit und ich kann es mir nicht verkneifen, also stöbere ich gleich die Befehle nach. Falls Midimaster antwortet; Bei der Gelegenheit mal eine andere Frage; Schon mal darüber nachgedacht ein Buch zu schreiben? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group