problema al querer mostrar un sprite

Iniciado por ranser, 8 Julio 2010, 02:11 AM

0 Miembros y 1 Visitante están viendo este tema.

ranser

Hola,estoy empesando en la creacion de juegos con SDL y me pone un codigo para que muestre una nave en la pantalla pero cuando lo pongo a compilar me tira los siguientes Errores:


--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2065: 'SDL_surface' : undeclared identifier
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2065: 'image' : undeclared identifier
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2065: 'screen' : undeclared identifier
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2100: illegal indirection
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(25) : error C2440: '=' : cannot convert from 'struct SDL_Surface *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(32) : error C2440: '=' : cannot convert from 'struct SDL_Surface *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(43) : error C2227: left of '->w' must point to class/struct/union
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(44) : error C2227: left of '->h' must point to class/struct/union
Error executing cl.exe.

Cpp1.obj - 8 error(s), 0 warning(s)




Y el codigo que coloco es el siguiente:


#include <SDL.h>
#include <stdio.h>
#include <stdlib.h>


int main(int argc,char *argv[])

{

SDL_surface *image, *screen;
SDL_Rect dest;
SDL_Event event;
int done=0;

atexit(SDL_Quit);


//Iniciar SDL
if (SDL_Init(SDL_INIT_VIDEO) <0 )
{
printf("No se pudo iniciar SDL:%s\n",SDL_GetError());
exit(1);
}
//Activamos modo grafico
screen=SDL_SetVideoMode(640,480,24,SDL_HWSURFACE);
if (screen==NULL)
{
printf("No se puede inicializar el modo grafico: \n",SDL_GetError());
exit(1);
}
//Cargamos graficos
image=SDL_LoadBMP("nave.bmp");
if (image==NULL)
{
printf("No pude cargar grafico: %s\n",SDL_GetError());
exit(1);
}

//Definimos donde dibujamos el grafico
//y lo copiamos a la pantalla.
dest.x=100;
dest.y=100;
dest.w=image->w;
dest.h=image->h;
SDL_BlitSurface(image, NULL, screen, &dest);

//Mostramos la pantalla
SDL_Flip(screen);

//Liberar superficie
SDL_FreeSurface(image);

//Esperamos la pulsacion de una tecla para salir

while(done==0)
{
while (SDL_PollEvent(&event))
{
if (event.type==SDL_KEYDOWN)
done=1;
}
}
return 0;
}

Estoy usando el Visual C++ 6.0 (es el que utilizo el que hizo el libro) pero no se como hacer para que me funcione alguien me podria decir a que viene esos errores???

PD:yo estudie C++ de C no lo toque ,seria lo mismo poner en la parte de printf (que es de C) poner cerr<<(que es de C++)??

Espero que me puedan ayudar.

nicolas_cof

ranser, pregunta tonta pero necesaria, tenes instalado SDL no?

http://www.libsdl.org/download-1.2.php

Cita de: ranser en  8 Julio 2010, 02:11 AMPD:yo estudie C++ de C no lo toque ,seria lo mismo poner en la parte de printf (que es de C) poner cerr<<(que es de C++)??

http://www.cplusplus.com/reference/iostream/cerr/

fprintf( stderr, "ERROR" );

cerr << "ERROR" << endl;

Salu10.

ranser

segui un manual de como meter la libreria SDL en el VC++ 6.0 (meti tambien las librerias auxiliares SDL_mixer,SDL_net,etc) y probe un codigo que saque de internet para ver si funciona y me lo compila y me abre una ventana en negro ,osea que la libreria esta bien instalada,pero no tengo idea de xq me tira esos errores.

Saludos.

nicolas_cof

Viendo un poco mas el codigo, te equivocaste en lo siguiente...

SDL_surface *image, *screen;

y seria...

SDL_Surface *image, *screen;

Salu10.

ranser

es verdad pero cuando lo modifico en vez de salirme 8 errores me salen 18,no se xq puede suceder esto.

Saludos.

Ariath

Postea los nuevos errores que te salen (¿tiene la etiqueta GeSHi capacidad para mostrar números de línea o algo?, Es que, así a pelo, hay que ir contando las líneas una a una hasta llegar a la que menciona el error :P ).

Salu2

ranser

me puse el Dev-C++ y puse ese codigo modificado el Surface y la libreria SDL/SDL.h y me anda bien , me puse aver el VC++ xq no puede ser que uno me lo tome y el otro no y ya lo pude solucionar le puse la carpeta include y lib dentro del proyecto mas la imagen y modifique lo que me dijeron y tuve que colocar de nuevo la libreria SDL (el VC++ 6.0 tira error al llamar a la libreria de esta manera SDL/SDL.h la manera correcta es SDL.h  hablo del VC++ 6.0 en otros compiladores como Dev-C++ va el otro),lo malo es que siempre que abro un nuevo proyecto  o una hoja de codigo y quiero poner la libreria SDL la tengo que volver a configurar todo,es medio tedioso pero es lo que hay, Igual muchas gracias x ayudarme les agradezco mucho.

Saludos.