› Foros › Multiplataforma › Desarrollo
cygwin escribió:
Jorge@jorge-5dnlzb7ah ~/projects/ejemplo
$ make
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o main.o main.
cpp
csprite.h:46: error: ISO C++ forbids declaration of 'finalize' with no type
main.cpp: In function 'int SDL_main(int, char**)':
main.cpp:122: warning: too many arguments for format
make: *** [main.o] Error 1
cygwin escribió:Jorge@jorge-5dnlzb7ah ~/projects/ejemplo
$ make
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o main.o main.
cpp
main.cpp: In function 'int SDL_main(int, char**)':
main.cpp:122: warning: too many arguments for format
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o csprite.o cs
prite.cpp
csprite.cpp:53: error: ISO C++ forbids declaration of 'finalize' with no type
csprite.cpp:53: error: prototype for 'int CSprite::finalize()' does not match an
y in class 'CSprite'
csprite.h:46: error: candidate is: void CSprite::finalize()
csprite.cpp:53: error: 'int CSprite::finalize()' cannot be overloaded
csprite.h:46: error: with 'void CSprite::finalize()'
csprite.cpp: In member function 'int CSprite::finalize()':
csprite.cpp:58: warning: control reaches end of non-void function
make: *** [csprite.o] Error 1
zestt escribió:en csprite.cpp solo aparece aquí:
CSprite::finalize() {
y ahi x supuesto no le puedo añadir el void
cygwin escribió:Jorge@jorge-5dnlzb7ah ~/projects/ejemplo
$ make
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o main.o main.
cpp
main.cpp: In function 'int SDL_main(int, char**)':
main.cpp:122: warning: too many arguments for format
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o csprite.o cs
prite.cpp
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -L. -L/usr/local/psp
dev/psp/sdk/lib main.o csprite.o -lSDL_image -lpng -ljpeg -lz -lstdc++ -lSDL_m
ixer -lvorbisidec -lSDL_gfx -lSDL -L/usr/local/pspdev/psp/lib -lSDLmain -lSDL -l
m -L/usr/local/pspdev/psp/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisp
lay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkerne
l -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet
-lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o ejemplo.
elf
/usr/local/pspdev/psp/sdk/lib/libSDLmain.a(SDL_psp_main.o): In function `main':
psp/SDL_psp_main.c:178: undefined reference to `SDL_main'
collect2: ld returned 1 exit status
make: *** [ejemplo.elf] Error 1
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11,
0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
TARGET = ejemplo
PSPSDK = $(shell psp-config --pspsdk-path)
OBJS = csprite.o main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
LIBS = -lstdc++ -lSDLmain -lSDL_image -lpng -ljpeg -lz -lSDL_ttf -lfreetype -lSDL_gfx -lm -lSDL -lpspvfpu -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = ejemplo
include $(PSPSDK)/lib/build.mak
// Inicializamos estados
void inicializa() {
//se me paso poner la iniciacion del joystick, es normal q no funcionara
joystick=SDL_JoystickOpen(0);
//ahora con esto deberia funcionar
jugador.x=300;
jugador.y=200;
enemigo.x=100;
enemigo.y=100;
}
void finaliza() {
// finalizamos los sprites
nave.finalize();
malo.finalize();
// cerramos el joystick
if (SDL_JoystickOpened(0)) {
SDL_JoystickClose(joystick);
}
}
// Preparamos los esprites
int InitSprites() {
fnave.load("minave.bmp");
nave.addframe(fnave);
fmalo.load("nave.bmp");
malo.addframe(fmalo);
return 0;
}
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11,
0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
int main(int argc, char *argv[]) {
SDL_Event event;
pspDebugScreenInit();
//Uint8 *keys; tampoco necesitas la variable keys
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}
//te recomiendo (480,272,8, SDL_HWSURFACE | SDL_HWPALETTE);
screen = SDL_SetVideoMode(480, 272, 8, SDL_HWSURFACE | SDL_HWPALETTE);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: %s\n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);
inicializa();
InitSprites();
while (done == 0) {
// dibujamos el frame
DrawScene(screen);
// consultamos el estado del teclado
//no necesitas las teclas
//keys=SDL_GetKeyState(NULL);
// consultamos el estado del joystick
//perfecto updateas el joystick en cada frame asi detectas las pulsaciones :)
SDL_JoystickUpdate();
joyx = SDL_JoystickGetAxis(joystick, 0);
joyy = SDL_JoystickGetAxis(joystick, 1);
//tan solo consultamos el pad de la psp y sus respectivos botones nada mas
//analogico
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) || joyy < -10) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) || joyy > 10) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
//if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) || joyx < -10) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) || joyx > 10) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {done=1;}
if (event.type == SDL_JOYBUTTONDOWN) {
if (event.jbutton.button == PSP_BUTTON_START)
{
done = 1;
}
}
}
}
finaliza();
SDL_Quit(); //necesitas cerrar la sdl
sceKernelExitGame(); //y luego hacer q la psp vuelva al menu ;)
return 0;
}
main.cpp escribió:/***************************************************************************
Ejemplo5_1
(C) 2003 by Alberto Garcia Serrano
Programación de videojuegos con SDL
***************************************************************************/
#include
#include
#include
#include "csprite.h"
#include "defines.h"
#include
PSP_MODULE_INFO("ejemplo", 0, 1, 1);
#include
#define printf pspDebugScreenPrintf
SDL_Surface *screen;
CFrame fnave;
CFrame fmalo;
CSprite nave(1);
CSprite malo(1);
SDL_Rect rectangulo;
SDL_Joystick *joystick;
int joyx, joyy;
int done=0;
// estructura que contiene la información
// de nuestro avión
struct minave {
int x,y;
} jugador;
// Estructura que contiene información
// del avión enemigo
struct naveenemiga {
int x,y;
} enemigo;
// Dibuja los esprites en la pantalla
void DrawScene(SDL_Surface *screen) {
// dibuja avión
nave.setx(jugador.x);
nave.sety(jugador.y);
nave.draw(screen);
// Dibuja enemigo
malo.setx(enemigo.x);
malo.sety(enemigo.y);
malo.draw(screen);
// ¿ha colisionado con la nave?
if (malo.colision(nave) == TRUE) {
done=1;
}
// Mostramos todo el frame
SDL_Flip(screen);
}
// Inicializamos estados
void inicializa() {
//se me paso poner la iniciacion del joystick, es normal q no funcionara
joystick=SDL_JoystickOpen(0);
//ahora con esto deberia funcionar
jugador.x=300;
jugador.y=200;
enemigo.x=100;
enemigo.y=100;
}
void finaliza() {
// finalizamos los sprites
nave.finalize();
malo.finalize();
// cerramos el joystick
if (SDL_JoystickOpened(0)) {
SDL_JoystickClose(joystick);
}
}
// Preparamos los esprites
int InitSprites() {
fnave.load("minave.bmp");
nave.addframe(fnave);
fmalo.load("nave.bmp");
malo.addframe(fmalo);
return 0;
}
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11,
0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
int main(int argc, char *argv[]) {
SDL_Event event;
pspDebugScreenInit();
//Uint8 *keys; tampoco necesitas la variable keys
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}
//te recomiendo (480,272,8, SDL_HWSURFACE | SDL_HWPALETTE);
screen = SDL_SetVideoMode(480, 272, 8, SDL_HWSURFACE | SDL_HWPALETTE);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: %s\n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);
inicializa();
InitSprites();
while (done == 0) {
// dibujamos el frame
DrawScene(screen);
// consultamos el estado del teclado
//no necesitas las teclas
//keys=SDL_GetKeyState(NULL);
// consultamos el estado del joystick
//perfecto updateas el joystick en cada frame asi detectas las pulsaciones
SDL_JoystickUpdate();
joyx = SDL_JoystickGetAxis(joystick, 0);
joyy = SDL_JoystickGetAxis(joystick, 1);
//tan solo consultamos el pad de la psp y sus respectivos botones nada mas
//analogico
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) || joyy < -10) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) || joyy > 10) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
//if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) || joyx < -10) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) || joyx > 10) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {done=1;}
if (event.type == SDL_JOYBUTTONDOWN) {
if (event.jbutton.button == PSP_BUTTON_START)
{
done = 1;
}
}
}
}
finaliza();
SDL_Quit(); //necesitas cerrar la sdl
sceKernelExitGame(); //y luego hacer q la psp vuelva al menu
return 0;
}
makefile escribió:TARGET = ejemplo
PSPSDK = $(shell psp-config --pspsdk-path)
OBJS = csprite.o main.o
JOY = YES
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
LIBS = -lstdc++ -lSDLmain -lSDL_image -lpng -ljpeg -lz -lSDL_ttf -lfreetype -lSDL_gfx -lm -lSDL -lpspvfpu -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = ejemplo
include $(PSPSDK)/lib/build.mak