hola,
lo que pasa es que tengo un problema al poner un mapa en mi juego y mostrarlo. Uso Mappy como editor de mapa. Uso SDL y C para ponerlos. Para los Sprites uso la libreria que venia con el libro de Alberto García Serrano, que se llama Csprite.
Codigo:
#include <stdio.h> #include <stdlib.h> #include <SDL.h> #include "csprite.h" #define MAXMAP 400 SDL_Surface *screen, *image; CFrame fnave; CFrame tile1; CFrame tile2; CFrame tile3; CSprite nave(1); CSprite suelo[3]; SDL_Joystick *joystick; SDL_Rect dest; SDL_Event event; int done = 0; char mapa[401]; int joyx, joyy; int indice, indice_in; FILE *f; int c; void inicializa() { if((f=fopen("map.map","r")) != NULL) { c=fread(mapa,MAXMAP,1,f); fclose(f); } } int InitSprites() { fnave.load("nave.bmp"); nave.addframe(fnave); tile1.load("tile0.bmp"); suelo[0].addframe(tile1); tile2.load("tile1.bmp"); suelo[1].addframe(tile2); tile3.load("tile2.bmp"); suelo[2].addframe(tile3); return 0; } int main(int argc, char *argv[]) { atexit(SDL_Quit); if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("No se pudo iniciar SDL: %s\n",SDL_GetError()); exit(1); } screen = SDL_SetVideoMode(640,480,24,SDL_SWSURFACE| SDL_DOUBLEBUF); if ( screen == NULL ){ fprintf(stderr, "No se puede establecer el modo de video 640x480: %s\n", SDL_GetError()); exit(1); } image = SDL_LoadBMP("nave.bmp"); if ( image == NULL ) { printf("No pude cargar gráfico: %s\n", SDL_GetError()); exit(1); } Uint8 *keys; keys=SDL_GetKeyState(NULL); while(done == 0) { while ( SDL_PollEvent(&event) ) { if ( keys[SDLK_a]){ dest.x = 100; dest.y = 100; dest.w = image->w; dest.h = image->h; SDL_BlitSurface(image, NULL, screen, &dest); SDL_Flip(screen); SDL_FreeSurface(image); } } } return 0; }
Error:
ld.exe cannot find -lcsprite.h
=== Build finished: 1 errors, 0 warnings ===
Uso CodeBlocks.
Gracias y un saludo
P.D Si usan algun otro editor de mapas que sea compatible con SDL porfavor diganmelo.
Otro error que no consigo entender T.T
Codigo:
Error:
Gracias por todo lo que me alludais en especial a ti jose.
Mi blog: adriel0000.wordpress.com
un saludo.
Eso es el main.cpp?
Porque me parece a mi que ahí faltan cosas.
Lo que te está diciendo el compilador es que, en las lineas 96 a 99 de main.cpp estás llamando a la función finalize de la clase CSprite, pero que no existe (de los warnings puedes olvidarte por ahora). Si no lo consigues arreglar, pon el código completo.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Que yo sepa no hay otro
Que yo sepa no hay otro xD voy a mirar.
P.D te puse el error antiguo lo siento T.T
P.D ERROR:
I:\Programacion\RolGame\RolGame\main.cpp|19|error: expected unqualified-id before "if"|
I:\Programacion\RolGame\RolGame\main.cpp|19|error: expected `,' or `;' before "if"|
||=== Build finished: 2 errors, 0 warnings ===|
Mi blog: adriel0000.wordpress.com
un saludo.
Claro
Si eso es todo el código es comprensible que te de error. Que hace esto fuera del main?:
Si te fijas, en el código anterior tenias las funciones inicializa e InitSprites, pero ahora la segunda la has elimiado y la primera solo parte. Vuelve a pegar las funciones o eliminalas del todo.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
T.T
Codigo:
Error:
Mi blog: adriel0000.wordpress.com
un saludo.
Vale
Ahora lo que te está diciendo con "undefined reference" es que las funciones addframe y load no están implementadas. La razón de que el compilador no encuentre la implementación de las funciones es que, casi con toda probabilidad, no has añadido el archivo csprite.cpp (o csprite.cc o como sea) al proyecto. ;)
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
CON..
CON #include "csprite.cpp" ????
P.D Ya me compila bien.
P.D al iniciar me pone esto O.O:
No.
No es recomendable hacer un include de un .cpp. Me refería a añadir el archivo a tu proyecto de code blocks (o del IDE que uses) dándole a proyecto->añadir archivo existente o algo parecido.
Respecto al error, prueba lo siguiente, en el orden en que te lo pongo:
A ver si te funciona...
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Bien
Bien muchas gracias ya me funciona todo aora solo me falta mostrarlo... GRacias!!!!!
No te confundas.
Una clase no es una biblioteca. Una biblioteca es un archivo aparte precompilado que añades a tu programa. Por el contrario tu tienes los archivos fuente (.c y .h).
Te digo esto por que casi seguro que has puesto, en opciones de compilación del proyecto, en la pestaña de bibliotecas, "csprite.h". En tu caso no tienes que poner nada más que SDL SDLmain, etc. Si le pones csprite.h buscará un archivocsprite.h.lib que no encontrará.
PD: Esto no viene al caso, pero en castellano se dice biblioteca de funciones (la traducción de library es biblioteca, no librería). Es un error muy muy común, que como digo, no viene al caso xD.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
ok lo pruebo
Ok lo pruebo y ya comentare. Muchas gracias de nuevo joserc87 !! :)
Edit:
Y sabes algun editor de mapas mejor?? esk me resulta incomodo pegar todos los tiles en el mismo archivo....
Mi blog: adriel0000.wordpress.com
un saludo.
No.
No conozco ningún editor de mapas en realidad. Lo normal es que te hagas tú uno propio. No es nada difícil. Además, lo bueno que tiene crearte el tuyo propio es que puedes añadirlo al juego y que el jugador cree nuevos niveles.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Buah
Buah pues a mi se me hace imposible tilear sin un editor... Asi que hacer uno yo lo veo complicado xD. Ahora mismo en clase de mates (Mientras me aburria) Estuve pensando un sistema de gravedad y de colisiones pero no me gusto xD ya mirare ejemplos. Por cierto quite todo todo de incluir Csprite y aora me da error todos los codigos de cargar los tiles... Ya no se que hacer, me da muchos problemas mappy, mappy es el que nos recomendo el tutorial de alberto garcia serrano por eso lo coji... haber si me aclaro mapeando desde codigo y me ago uno... Pero de logica para hacer puede pero a la ora de hacerlo :( xDDD
Mi blog: adriel0000.wordpress.com
un saludo.
Como digo..
No es nada difícil crearte un editor de mapas, sobre todo porque si lo haces para tu juego, no tiene que ser genérico.
Sin embargo, siempre puedes probar otros editores de mapas como Tiled. Sin embargo sigues teniendo la "dificultad" de leer el fichero del mapa y mostrarlo con SDL.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Supongo
Supongo que antes abra que saber tilear para hacer ese programa... Si tan "facil" es lo estaria haciendo xD haber si consigo mapear sin mappy y despues ago el mio si l consigo que lo dudo xd.
Detesto los errores... Haber si consigo cargar un maldito mapa y que no me de tantos errores todo.... :@
Mi blog: adriel0000.wordpress.com
un saludo.
Por supuesto.
Hay que saber "tilear", como tu dices.