› Foros › Multiplataforma › Desarrollo
main.c escribió:#include
#include
#include
#include
#include
#include
PSP_MODULE_INFO("saltitos", 0, 1, 1);
#define PSP_BUTTON_UP (8)
#define PSP_BUTTON_DOWN (6)
#define PSP_BUTTON_LEFT (7)
#define PSP_BUTTON_RIGHT (9)
#define PSP_BUTTON_X (2)
#define PSP_BUTTON_SQUARE (3)
#define PSP_BUTTON_TRIANGLE (0)
#define PSP_BUTTON_CIRCLE (1)
#define PSP_BUTTON_L (4)
#define PSP_BUTTON_R (5)
#define PSP_BUTTON_START (11)
#define PSP_BUTTON_SELECT (10)
void limpiar (SDL_Surface *screen);
void imprimir(SDL_Surface *screen, SDL_Surface *ima, int x, int y);
typedef struct stObjeto
{
int x, y;
int nframe;
int maqEstados;
int estado;
int energia;
int vidas;
int direccion;
int moverse;
SDL_Surface * imagen;
SDL_Surface * tmp;
int xColision, yColision, altoColision,anchoColision;
int tipoArma;
int ancho, alto;
int maxframe;
int limite_der, limite_izq;
int limite_sup, limite_inf;
int tipoMovimiento;
int dirvx;
int dirax;
int dirvy;
int diray;
}stObjeto;
stObjeto jugador;
void IniciaEstructuras(){
jugador.nframe = 0;
jugador.x = 40;
jugador.y = 195;
jugador.maxframe = 2;
jugador.limite_izq = 5;
jugador.limite_der = 200;
jugador.limite_sup = 190;
jugador.limite_inf = 242;
jugador.tipoMovimiento = 1;
jugador.moverse = 0;
jugador.ancho = 24; //31
jugador.alto = 31; //31
jugador.vidas = 3;
jugador.energia = 5; //10
jugador.tipoArma = 1; //1 pistola, 2 metralleta, 3 bazoka, etc
jugador.estado = 1;
jugador.maqEstados = 0;
jugador.xColision = 10;
jugador.yColision = 10;
jugador.altoColision = 10;
jugador.anchoColision = 25;
jugador.dirvx = 0;
jugador.dirax = 0;
jugador.dirvy = 0;
jugador.diray = 1; // Gravedad constante
}
void mover_Personaje(int *x, int *y, stObjeto *Personaje);
int main(int argc, char *argv[])
{
pspDebugScreenInit();
SDL_Surface *screen;
SDL_Surface *ima;
SDL_Event event;
int salir = 0;
IniciaEstructuras();
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) == -1)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}
screen = SDL_SetVideoMode(480, 272, 16, SDL_HWSURFACE);
if (screen == NULL)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}
SDL_WM_SetCaption("Minijuego", NULL);
ima = IMG_Load("ima.png");
if (ima == NULL)
{
printf("Error en IMG_Load= %s\n", SDL_GetError());
return 1;
}
while (! salir)
{
SDL_PollEvent(&event);
if (event.type == SDL_QUIT)
salir = 1;
mover_Personaje(&jugador.x, &jugador.y, &jugador);
limpiar(screen);
imprimir(screen, ima, jugador.x, jugador.y);
SDL_Flip(screen);
SDL_Delay(10);
}
SDL_Quit();
return 0;
}
void limpiar (SDL_Surface *screen)
{
Uint32 a = SDL_MapRGB(screen->format, 255,255,255);
SDL_FillRect(screen, NULL, a);
}
void imprimir(SDL_Surface *screen, SDL_Surface *ima, int x, int y)
{
SDL_Rect rect = {x, y, 0, 0};
SDL_BlitSurface(ima, NULL, screen, &rect);
}
void mover_Personaje(int *x, int *y, stObjeto *Personaje)
{
Uint8 *key;
key=SDL_GetKeyState(NULL);
if (key[PSP_BUTTON_LEFT] && jugador.x > 0)
(jugador.dirax) -= 5;
if (key[PSP_BUTTON_RIGHT] && (jugador.x + jugador.ancho) < 480)
(jugador.dirax) += 5;
if (key[PSP_BUTTON_UP] && jugador.estado == 1 && jugador.y > 0)
(jugador.dirvy) = -20;
jugador.estado = 2;
if (key[PSP_BUTTON_DOWN] && (jugador.y + jugador.alto) < 270)
(jugador.y) += 5;
jugador.dirvx = jugador.dirvx + jugador.dirax;
jugador.dirax = 0;
jugador.x = jugador.x + jugador.dirvx;
jugador.dirvx = 0;
jugador.dirvy = jugador.dirvy + jugador.diray;
jugador.y = jugador.y + jugador.dirvy;
if (jugador.dirvy >= 5)
{
jugador.dirvy = 4;
}
if (jugador.y + jugador.alto >= 270)
{
jugador.y = 270 - jugador.alto;
jugador.estado = 1;
}
}