PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Parsen" von Grafkdateien



DanDanger
27-10-2002, 14:04
Hallo,
bei TuxRacer / OpenRacer kann man seine eigenen Strecken mit einem ganz normalen Grafikprogramm (z.B mit GIMP erstellen). Das Proggi weißt dann unterschiedlichen Farben bestimmte Streckenmerkmale zu.
Meine Frage : Hat das schonmal jemand gemacht ???

Währe ja echt klasse, wenn man z.B. die Level für ein kleines 2D Ballerspiel einfach mit einem Grafikprogramm "Malen" könnte (einfacher geht's ja nimmer).

Leider ist der Quellcode von TuxRacer so konfus, das ich da nicht Durblicke :-(

Also : Wie kann ich eine Grafikdatei "Parsen", so dass ich z.B. Informationen wie "An Pos (X, Y) befindet sich ein Pixel mit dem Farbwert (RGB 23, 255, 120)" bekomme ????

Neugierige Grüsse
DanDanger

anda_skoa
27-10-2002, 15:39
Das kann praktisch jede Bibliothek, die Bilder laden und bearbeiten kann

Ciao,
_

Sion
27-10-2002, 18:17
Original geschrieben von DanDanger
Währe ja echt klasse, wenn man z.B. die Level für ein kleines 2D Ballerspiel einfach mit einem Grafikprogramm "Malen" könnte (einfacher geht's ja nimmer).

Ja sowas ist ziemlich cool, solange man keine Tiefeninformationen speichern will, denn dann wirds schwer! Sowas gabs früher mal für Wolfenstein 3D, war echt cool. Kannst ja mal schauen, obs den Editor irgendwo im Netz gibt... den Wolfenstein-Code gibts ja bei idsoftware.com

DanDanger
27-10-2002, 19:16
Hi,

@anda_skoa :
hmm, also ich Programmiere z.Z. mit den SDL-Lib's, kann so eine Funktion aber nirgends finden (Auch nicht in der Referenz von libsdl.org).... :-(

Kannst du mir mal einen kleinen Ansatz geben, wo ich genau suchen muss ??



@Sion :
Den Wolfenstein-Editor kenne ich leider nicht.
Tiefeninformationen brauche ich eigentlich keine.

Das ganze Level für den 2D-Shooter sollte eigentlich in 2 Bild-Dateien gespeichert werden :
Bilddatei 1 enthät nur den Aufbau des Levels (z.B Rote Pixel = Gegner, Grüne Pixel = PowerUp, usw.). Diese Datei würde also nur aus ein paar Pixeln bestehen.

Bilddatei 2 enthält dann die eigentliche "Grafik" des Spiels (also, den Hintergrund, etc.)

Im Spiel sollen dann beide Bilddateien "Übereinandergelegt" werden, wobei dann Natürlich die Farbigen Pixel aus Bilddatei 1 durch Gegner, Hindernisse, PowerUp's, etc. ersetzt werden...........

So hab' ich mir das Ungefähr vorgestellt...... :-)

Neugierige Grüsse
DanDanger

anda_skoa
27-10-2002, 19:46
Original geschrieben von DanDanger

@anda_skoa :
hmm, also ich Programmiere z.Z. mit den SDL-Lib's, kann so eine Funktion aber nirgends finden (Auch nicht in der Referenz von libsdl.org).... :-(

Kannst du mir mal einen kleinen Ansatz geben, wo ich genau suchen muss ??


ich kenn mich mit der SDL lib nicht aus, aber ich habe in der Doku gesehen, dass es Funktionen SDL_GetRGB und SDL_SetRGB gibt und dass in SDL_Surface offensichtlich Pixeldaten enthalten sind.

Vielleicht kannst du damit etwas anfangen.

Ciao,
_

tkortkamp
27-10-2002, 21:46
Die Pixeldaten und deren Dimensionen bekommt man von einer SDL_Surface durch

unsigned char *data = (unsigned char *)surface->pixels;
int width = surface->w;
int height = surface->h;


c ya,
Tobias

DanDanger
27-10-2002, 21:59
Hmmm,
wie ich die Dimesionen eines Bildes bekomme, weiss ich schon.
Es ist so : ich möchte ein Bild (z.B. LevelXYZ.bmp) laden, mit
SDL_LoadBMP, und dann die Farbinformationen der Pixel an einer bestimmen Koordinate bekommen.

z.B :

void Hole_Farbwerte("LevelXYZ.bmp", 12, 123) ;

würde mir dann die RGB-Farbwerte des Pixels an der Koordinate X=12 / Y=123 aus dem Bild "LevelXYZ.bmp" liefern.......


Neugierige Grüsse
DanDanger