hola a todos,
Bueno hace tiempo que no escribo por aqui pero me puse a hacer un juego muy primitivo en SDL, y lo que pasa es que no se como hacer para borrar imagenes para poner otra,
He pensado poner las otras encima de esta pero tendria que estar poniendo graficos sin parar. Tambie pense en poner esto:
SDL_FreeSurface(image);
Pero la imagen no se borraba.
Espero que me podais ayudar.
Gracias
Edit-----
Aprovecho mi duda para preguntar como leer archivos externos y que el porgrama los reconozca. Esque cuando pongo me escriba en el fichero una palabra, pues me gustaria que alguien me fijese como hacer para que el programa reconociese la palabra o solo una variable.
Gracias de nuevo.
Borrar imágenes
Para "borrar" una imagen la única manera es sobreescribir, bien poniendo otra imagen encima o haciendo un sdl_fillrect. Ten en cuenta que la pantalla es al fin y al cabo una matriz 2D, así que la única manera de borrar es decirle a SDL con qué color quieres borrar para sustituir los valores por ese color.
Sobre la pregunta de los archivos, no he entendido ni papa xD. Explícamelo mejor, a ver si te puedo ayudar.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Osea
Osea que sustituyo la imagen en la misma surface?
respecto a lo otro es que quiero enviar una variable a un archivo de texto y c me reconozca la variable.
Saludos y gracias.
Mi blog: adriel0000.wordpress.com
un saludo.
Si te entiendo bien
Lo que quieres hacer es pintar un dibujo en pantalla y luego borrarlo no? Pues si lo dibujas sobre un fondo negro, para borrarlo solo tienes que dibujar un rectángulo negro sobre el dibujo. Si el fondo es otra imagen, vuelves a dibujar el fondo*.
Lo de escribir en ficheros, si lo haces en C++ es mucho más fácil.
Si lo organizas todo en clases e implementas el operator << te será muy fácil.
*Nota. Hay una forma más eficiente que dibujar el fondo completo. Cuando avances más mírate "dirty rectangles", pero por ahora te vale con la opción ineficiente.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Mi problema
Mi problema no es escribir en un archivo, es que el programa reconozca que hay pone por ejemplo. int nivel = 1; y ponga la varibale en 1. Osea para guardar partidas y eso.
Mi blog: adriel0000.wordpress.com
un saludo.
Esa no es la forma.
Si fueses a hacer un compilador o un intérprete sí tendrías que analizar ese tipo de código, pero para una partida de un juego no hace falta que pongas el código en el fichero! Analizar código es algo más complicado que leer un simple fichero.
Te voy a poner un ejemplo sencillo: Si quisieses guardar la partida de un 3 en Raya guardarías 9 enteros (un entero por cada casilla) donde pones -1 si es una X, 1 si es un O o 0 si la casilla está vacía. Para un juego más complicado, como un juego de coches, guardarías en un fichero binario:
Y así con cada dato del coche que quieras guardar. Si tieness más de un coche, guardas primero el número de coches, y luego los datos de cada coche...
Es un ejemplo muy abstracto. Si me dices que es exáctamente lo que quieres hacer y los datos que tienes te puedo ayudar un poquito más.
Saludos
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Vale
Vale te ecplico, yo quiero guardar las variables:
int Nivel; // 0=No empezo la partida
int Sala; //""
char Nombredeljugador; // en blanco= no a empezado la partida
int x; // 100
int y; // 100
entonces quiero guardar esas variables en algun sitio para que cuando esa persona vuelva a abrir el juego esas variables las cargue y se pongan como se quedaron la ultima vez que se guardo.
Espero haberme explicado xD.
Gracias
Mi blog: adriel0000.wordpress.com
un saludo.
Vale
Entonces para guardar sería, en un archivo binario:
y para leerlo, lo mismo:
NOTA: Supongo que cuando has puesto
char Nombredeljugador;
Querías decir
char Nombredeljugador [X];
no? Si el nombre del jugador es solo un caracter tendría que cambiarlo un poquito.
Saludos
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Claro
Claro, muchas gracias unicamente queria leer el codigo y comprenderlo. Ahora me toca toquetearlo y investigarlo.
EDIT---
Jose, Gracias por todo simpre estas para ayudarme.
Y gracias a ti dioni por darme ese consejo.
Un saludo y gracias
Mi blog: adriel0000.wordpress.com
un saludo.
Para que gastar
tanta memoria, en las x,y, Nivel y Sala
Yo lo haria asi:
Un saludo
Tampoco hace falta apurar tanto
Por ahorrarse unos bytes, a no ser que tengas muy poca memoria (si estás programando un microcontrolador por ejemplo)
Además, si pones x=s16, te puedes quedar corto si luego el mapa tiene más de 2^16 posiciones. Bueno, igual 2^16 parece muchísimo, pero en un mapa real luego tampoco es tanto 65536 positiones... Ya depende de lo que quiera hacer.
Yo seguiría el consejo de Dioni, pero solo para vectores y matrices grandes. Por ejemplo si tienes una matriz de enteros de tamaño 1024x1024, para qué usar un int si a lo mejor un "unsigned char" (byte) te sirve. Pasaría de ocupar 4 u 8MB (dependiendo del compilador) a 1MB. Pero para variables aisladas no merece la pena...
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Cierto
que se puede quedar corto, pero no creo que esas variables pasen del numero 32000 (Aprox)
Tenia pensado poner u8, pero por si acaso puse s16
Vale
Vale esque como solo uso int, float y chars pues nunca los pongo pero seguire tu consejo, gracias