Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.11.2006, 15:30

Bild, Sound und Koordinaten in ein Mapfile

Hallo!
Ich hätte mal eine Frage!
Ich möchte einen 2D Mapeditor programmieren.
Jetzt wäre es "hammer geil" wenn ich in eine Datei Sound (Hintergrund)
und eine Bilddatei verstecken könnte!
Ist sowas möglich?
Wenn ja wie geht das?
Wie lese ich die dann ein?
Gruß Flo

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

30.11.2006, 16:15

Verstecken vor wem und in welcher Art?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

3

30.11.2006, 19:36

Wieso sollte das nicht gehen? Eine Bilddatei sind auch nur Nullen und Einsen. Du musst nur wissen WAS du gerade einliest und aus WIEVIELEN Bytes die Daten bestehen, dann kannst du dir ein beliebiges eigenes Dateiformat machen. Dazu machst du dir am besten ein struct

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
// jenachdem was du alles fuer Daten in dein Dateiformat packen willst IDs vergeben

#define ID_JPG_BILD 1
#define ID_WAV_SOUND 2
// und dann ein simples struc

struct DataChunk
{
 BYTE type;
 DWORD nBytes;
};

Diesen sogenannten "Chunk" schreibst du einfach vor die Bilddaten, dann kannst du je nach Bedarf die Daten einlesen oder sie ueberspringen.[/cpp]
"Have you tried turning it off and on again?"

4

01.12.2006, 14:31

das klingt so einfach bin da aber leider überfortert.
Wie kann ich denn aus den Bilddateien Nullen und einsen rausbekommen?
Wie kann ich die dann wieder zusammenpacken und anzeigen lassen?
(mach das mit SDL).
Gibt es da nicht irgendwie ein Beispiel oder so?
Gruß Flo

5

02.12.2006, 23:11

gibt es also dafür kein Beispiel??
Schade!
:(

Anonymous

unregistriert

6

03.12.2006, 00:10

Du kannst alles in alles verstecken, umwandeln, komprimieren, verschlüsseln etc. du musst schon sagen was der Zweck davon sein soll, dann können wir auch sagen was die beste Methode ist um das zu tun. Zb eine Data.dat erzeugen wo alles verschlüsselt drin ist etc.

cu

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

7

03.12.2006, 00:21

Zitat von »"F-Wölkchen"«

Wie kann ich denn aus den Bilddateien Nullen und einsen rausbekommen?

Nun, was ist denn eine Bilddatei? Eine Bilddatei ist "Nullen und einsen". Die frage ist eher wie du aus "Nullen und einsen" das Bild bekommst aber das ist ein anderes Problem...
Zu deinem Problem also: Wenn ich dich richtig verstanden habe willst du eine Sounddatei und eine Bilddatei in eine einzige Datei packen.
Nichts leicher als das! Ich gehe im folgenden davon aus das du mit Dateien umgehen kannst. Falls nicht gibt es dafür sicher Tutorials oder sonst einfach nachfragen.
Dazu entwerfen wir zuerst mal eine Struktur für unsere Sound+Bild-Datei, die die Informationen zum auslesen enthalten. Diese Struktur enthält nicht mehr als die Länge der Bild- und der Sound-Daten:

C-/C++-Quelltext

1
2
3
4
5
struct FileHeader
{
    unsigned int ImageSize; //Länge der Bilddaten in Bytes

    unsigned int SoundSize; //Länge der Sounddaten in Bytes

};


Schreiben der Datei
Finde zuerst die Grösse deiner Bilddatei heraus und speichere diese in der FileHeader-Struktur. Reservier dir nun für eine Variable so viele Bytes wie die Datei hat und lies die gesamte Datei binär in diese Variable. Mach nun das selbe mit der Sounddatei. Nun erstellst du eine neue Datei, schreibst zuerst die FileHeader-Struktur, dann die Bilddaten und dann die Soundaten in diese Datei und fertig (Speicher freigeben nicht vergessen, das gibt sonst grooooosse Speicherlecks).

Lesen der Datei
Öffne die Datei, dann lies die FileHeader-Struktur aus. Reservier dir nun für eine Variable so viele Bytes wie die Bilddatei benötigt und für eine andere Variable so viele Bytes wie die Sounddatei benötigt. Lies dann die Bilddaten und die Sounddaten in den dafür vorgesehenen Speicher.
Jetzt kannst du eventuell eine Textur aus den Daten erzeugen aber leider habe ich von der SDL keine Ahnung und deshalb muss dir hier ein SDL-Spezialist weiterhelfen (also dirket mit DirectX geht das prima!). Geht das aber nicht, dann hast du noch die Möglichkeit je die Sound- und die Bilddaten in eine neue Datei zu schreiben und diese der SDL anzugeben und dann die Dateien wieder zu löschen. So wären die Bild- und die Sounddatei nur kurz da und wären im Allgemeinen in deinem eigenen Dateiformat gut versteckt (zumindest vor allen die keine Programmierer sind... ;))
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

8

03.12.2006, 10:55

Zitat

Ich gehe im folgenden davon aus das du mit Dateien umgehen kannst.

Nun ja... eigentlich nicht. Ich kann wohl dateien einlesen und speichern aber alles nur im klartext! Mit diesen binären sachen habe ich leider noch keine Erfahrung :( .
Ich such mal nach einem Tutorial dann komme ich nochmal darauf zurück ;).
Gruß Flo[/code]

Anonymous

unregistriert

9

03.12.2006, 11:26

Schau dir einfach mal diese Tabelle an.
http://de.wikipedia.org/wiki/ASCII-Tabelle
Wenn zb das erste Byte einer Datei "0065" ist, dann ist das nichts anderes als ein grosses "A". Wenn du also "Hallo" schreiben willst kannst du auch 5 bytes schreiben (0072,0097,0108,0108,0157). Wenn du das dann als meins.txt speicherst wirst du im normalen Editor "Hallo" sehen. Im Hex Editor 0x48, etc.

Wenn du nun in bit (0/1) schreiben würdest wäre es das gleiche, nur statt A,dec,hex halt bin. Also den Wert 0072 als Binäre Folge.

Da auf der Festplatte aber nur 0 und 1 rumliegt kannst du mit allen Daten machen was du willst, das "Endmaterial" ist immer das gleiche. Im Regelfall brauchst du also nur Bytes und nicht unbedingt Binarys. Das macht der Rechner schon selbst.

cu

10

03.12.2006, 20:12

Also mal angenommen ich möchte nur ein Passwort in ein neues Format schreiben (mit nullen und einsen). Wie geht das?

Gruß Flo

Werbeanzeige