PDA

Ver la versión completa : Problemas con mi proyecto.



KingKill
17/08/2005, 23:44
Estoy intentando hacer un juego tipo asteroids utilizando MrMirko SDK, hasta ahora todo va bien, se deja compilar y ejecutar en la GP. PERO cuando una parte de sprite cruza el borde superior de la pantalla esta parte aparece en parte inferior de la pantalla. No se si es problema del script o de mi GP.
Aki esta el codijo por si alguin quiere provarlo en su GP.
Y he adjuntado el fxe compilado.
#include "gp32.h"
#include <math.h>
#define xmax=319;
#define ymax=239;

extern unsigned char ship[];

float xvel;
float yvel;
float acc;
float angle;
float xpos=100;
float ypos=100;
u16 *framebuffer[2];

char swapper=0;
void swap_screen () {
gp_setFramebuffer(framebuffer[swapper],1);
swapper++; if (swapper == 2) swapper=0;
}


void move_ship() {
if(gp_getButton() & BUTTON_UP){angle=0; acc=.05;
}
else if(gp_getButton() & BUTTON_RIGHT){angle=90*3.14/180; acc=.05;
}
else if(gp_getButton() & BUTTON_DOWN){angle=180*3.14/180; acc=.05;
}
else if(gp_getButton() & BUTTON_LEFT){angle=270*3.14/180; acc=.05;
}
else{acc=0;
}

xvel+=acc*sin(angle);
yvel+=acc*cos(angle);
xpos +=xvel;
ypos -=yvel;

if(xpos > 319){ xpos = 0-50;
}
else if (xpos < 0-50){xpos=319;
}
if(ypos > 239+50){ ypos = 0;
}
else if (ypos < 0){ypos=239+50;
}
if (xvel>3){xvel=3;
}
if (xvel<-3){xvel=-3;
}
if (yvel>3){yvel=3;
}
if (yvel<-3){yvel=-3;
}
}

int main() {

int framerate=0;
int refreshrate=0;
char buffer[32]="Framerate: ";
framebuffer[0] = (u16*) FRAMEBUFFER1;
framebuffer[1] = (u16*) FRAMEBUFFER2;

gp_setCpuspeed(66);

gp_initRTC();
refreshrate=gp_initFramebuffer(framebuffer[0],16,85);
gp_clearRTC();

while (1) {
move_ship();
swap_screen();
gp_clearFramebuffer16(framebuffer[swapper],0xffff);
gp_drawSpriteH ( (u16*) ship, xpos, ypos, framebuffer[swapper]);

framerate++;
if (gp_getRTC() > 63) {sprintf(buffer,"Framerate: %d,%d ",framerate,refreshrate);framerate=0;gp_clearRTC(); }

if ( gp_getButton()&BUTTON_A) gp_Reset();
}

}

Puck2099
17/08/2005, 23:47
Creo que es cosa del SDK de Mirko, a ^Misato^ le pasaba algo parecido.

Espera a ver si te contesta ella y que te diga como lo arregló :)

Saludos

jjdrako
17/08/2005, 23:56
^Misato^ decia que en su juego para arreglar ese fallo le diesemos al boton L o R antes de jugar y se solucionaba, prueba a ver si haciendo lo mismo se te ve bien

KingKill
18/08/2005, 00:02
^Misato^ decia que en su juego para arreglar ese fallo le diesemos al boton L o R antes de jugar y se solucionaba, prueba a ver si haciendo lo mismo se te ve bien

Si, el problema se resulve pulsando L antes de jugar.
Gracias por haber respondido tan rapido. :arriba: :arriba:

Aiken
18/08/2005, 01:04
a mi me parece lo mas normal del mundo, me ha pasado muchas veces, creo que el buffer de pantalla es cyclico.

hay ciertos pixeles de margen que puedes pintar fuera de la pantalla, pero si te pasas de ahi puede pasar de todo.


PD. Se supone que debes controlar y no pintar sprites que estan fuera de la pantalla! :D un poquito fuera vale, pero cuando este totalmente fuera no hagas de draw ;)

Aiken

KingKill
18/08/2005, 11:37
PD. Se supone que debes controlar y no pintar sprites que estan fuera de la pantalla! un poquito fuera vale, pero cuando este totalmente fuera no hagas de draw
Si esto lo tengo claro.. lo que pasa es que segun "mi"(robada de otros juegos) idea la nave espacial y los astreoidos tienen que aparecer en borde opuesto al margen donde han salido de la pantalla.
if(xpos > 319){ xpos = 0-50;
} etc...etc..