Autor
|
Tema: SDL error!! (Leído 1,969 veces)
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
Hola, feliz año nuevo He estado aprendiendo SDL, y quería comenzar ya mi primer juego, para eso he comenzado a practicar sin clases ni nada. Y lo primero que hago y mal... No se cual es el error, ya que creo que todo esta ya bien. El compilador tampoco me dice nada... Cuando lo abro, se cierra sin dar respuesta. #include <iostream> #include <SDL/SDL.h> using namespace std; int main() { //Iniciamos if (SDL_Init(SDL_INIT_VIDEO) < 0) { cout << "Error inesperado"; cin.sync(); cin.get(); return 0; } //Variables SDL_Surface *nave; SDL_Surface *fondo; SDL_Surface *screen; SDL_Rect *destino; //Definir variables nave = SDL_LoadBMP("nave.bmp"); fondo = SDL_LoadBMP("fondo.bmp"); //Creamos ventana screen = SDL_SetVideoMode(320, 240, 16 , SDL_HWSURFACE); if (screen == NULL) { cout << "Error inesperado"; cin.sync(); cin.get(); SDL_Quit(); return 0; } //Nombre de ventana SDL_WM_SetCaption( "Nave", "Nave" ); //Dibujamos fondo destino->y = 0; destino->x = 0; SDL_BlitSurface(fondo, NULL, screen, destino); //Dibujamos nave destino->y = 320 / 2; destino->x = 240 / 2; SDL_BlitSurface(nave, NULL, fondo, destino); for (int i; i < 60; i++) { SDL_Flip(screen); SDL_Delay(1000); } SDL_Quit(); cin.sync(); cin.get(); return 0; }
¿Qué le pasa? Tal vez tengo que indicar medidas de los objetos a la hora de hacer BlitSurface, o qué? Saludos
|
|
|
En línea
|
|
|
|
Anastacio
Desconectado
Mensajes: 111
|
Hola!! Ya encontre uno de los errores. Cuando haces un blit, para poner el Rect debe ir con un &. Cambia esto: SDL_BlitSurface(nave, NULL, fondo, destino);
Por: SDL_BlitSurface(nave, NULL, fondo, %destino);
En SetCaption el segundo valor es el icono de 32 x 32 que debe ir como un Surface . El "Nave" en el segundo parametro tambien ha de causar problemas. Otra cosa. Me parece que te faltan dos valores de las ubicaciones. En SDL, un rect tiene cuatro valores. x y y es la esquina izquierda superior de el rect. w y h es la esquina inferior derecha. flechitar.x = 400; flechitar.y = 450; flechitar.w = flechita->w; flechitar.h = flechita->h;
Y ahora algo que yo no entiendo de tu code. Porque divides los valores de X y Y en la nave? Y lo mejor seria que lo blitees todo en el screen, en vez de hacerlo en el fondo y luego en el screen, es lio al..., ademas en todo caso si lo haces asi deberia ser alreves, primero bliteas la nave, luego el fondo. Pero yo te lo recomiendo que hagas el blit directo al screen. Te evitaras problemas mas adelante. Yo he hecho juegos simples en SDL, pero nada complicado. Nota, puedo estar errado en alguna de esas cosas, pero simplemente prueba y luego nos avisas. Saludos!
|
|
|
En línea
|
You, stop to close my post, you were novice too!!!!!!!!!!!!
|
|
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
Hola!! Que emoción alguien me ha respondido!! Era hora He cambiado lo de los punteros y demás y ahora ya no sale "Core dumped", ahora lo que pasa es que no sale el fondo ni la nave. Los valores de X y Y de nave estan divididos para que el objeto sea dibujado exactamente en la mitad de la ventana. Otra cosa; Otra cosa. Me parece que te faltan dos valores de las ubicaciones. En SDL, un rect tiene cuatro valores. x y y es la esquina izquierda superior de el rect. w y h es la esquina inferior derecha.
Código:
flechitar.x = 400; flechitar.y = 450; flechitar.w = flechita->w; flechitar.h = flechita->h; Esto según lo que he leído, no hace falta declarar , pero puedo estar totalmente equivocado. Mira, si quieres te dejo un comprimido con sus objetos reales para que veas si en lo que estoy equivocado, es en la manera que declaro los objetos para escribirlos en pantalla. Descarga nave.tar.gzGracias por responder!!
|
|
|
En línea
|
|
|
|
Anastacio
Desconectado
Mensajes: 111
|
Hola
Ahora tengo mucho sueño y me estoy por ir a dormir, en argentina son 12>30. A ver, vamos a ir retocando todo. Primero, lo que te recomiendo es que a la ventana la abras con un doble buffer, en los parametros de setvideomode, va al lado de HWSurface y se separan con una barra vertical. Eso podria estar generandote problemas con el flip.
Eh..., otra cosa, creeria que deberias poner cada sprite *imagen* en un rect diferente.
Para usar la funcion Delay debes colocar en los parametros no solo el modo video sino tambien el de TIMER.
Mañana te ayudo todo lo posible, a esta hora solo lei el codigo de nuevo. Saludos!
|
|
|
En línea
|
You, stop to close my post, you were novice too!!!!!!!!!!!!
|
|
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
Espero las ayudas de hoy Gracias!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
error initializing audio stream compression ayuda con este error porfavor
Multimedia
|
®}{h²ø}{æ
|
3
|
5,539
|
27 Abril 2006, 14:44 pm
por Songoku
|
|
|
extraño error en vista de una funcion sencilla: Runtime error '75': Path/File
Programación Visual Basic
|
drakolive
|
9
|
15,169
|
9 Marzo 2012, 17:08 pm
por Sancho.Mazorka
|
|
|
(Solucionado)Error, messenger no conecta, error puertos clave, 80072efd
« 1 2 »
Mensajería
|
leogtz
|
14
|
36,188
|
9 Marzo 2011, 03:54 am
por chipironn
|
|
|
Solución al error 0×80070646, error 646 y error 1606 al instalar actualizaciones
Noticias
|
wolfbcn
|
0
|
3,452
|
11 Julio 2011, 20:39 pm
por wolfbcn
|
|
|
[MOD] Mensaje de error: Dma controller error - fatal error system halted
« 1 2 »
Hardware
|
evgeni1970
|
14
|
21,211
|
6 Noviembre 2011, 22:27 pm
por evgeni1970
|
|