[NDS][Programación con Palib][2D] 1.Sprites y scroll

Hola gente, despues de mis "pequeñas vacaciones" (no, ni he dejado esto, ni me he muerto xD) vuelvo a casa como el turron xD

Weno, despues de la parida del principio que todo buen tutorial mio tiene, pues poco mas decir, que seguire con tutos de palib, con el sitema 2d mas concretamente, en el tutorial enseñare lo primero cosas basicas de sprites usando estructuras, y algo de scroll para empezar. Aconsejo a los que sepan lo justo de C que se mirase un poco lo que son las estructuras y los arrays de estructuras (estos ultimos no los usare todavia, pero son necesarios mas adelante), es bastante facil, y nada, pues despues de esto, hay va el tochazo:

Bueno, voy a empezar con algo siemple que ya salio en el tutorial de sprites (el 5 si no me falla la memoria), el manejar a un sprite, pero bueno, asi se refrescan las cosas.

Creamos un sprite, 32x32 esta bien de tamaño (animado, of course), y pasando los datos por una estructura y unos cuantos datos, le haremos que se mueva.

Aqui pongo el sprite que se va a usar, le das a guardar como y ya lo tienes:

Imagen



Antes de nada, crearos una carpeta en el devkit, la llamais 2d, con el vham creais un nuevo proyecto y la poneis donde teniais guardados los otros tutos. Creais la carpeta de graficos, como siempre yo la llamare gfx, lo convertis como sprite de 32x32 normal (256 colores) y ya esta todo listo.


Bueno, empezamos:

main.c escribió:// Includes
#include <PA9.h> // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

typedef struct{
s32 x, y;
} persotype;
persotype personaje;

// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL

//le domos valores iniciales a la posicion del sprite
personaje.x = 50;
personaje.y = 50;

//cargamos la paleta de los sprites
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);

//Cargamos el sprite, 32x32, en la posicion X e Y lo sustituimos por la variable de la estructura
PA_CreateSprite(0, 0,(void*)personaje_Sprite, OBJ_SIZE_32X32,1, 0, personaje.x, personaje.y);

while (1)
{
if (Pad.Newpress.Up){

PA_SetSpriteHflip(0, 0, 0); //Indica si el sprite esta voolteado o no, lo explico mas abajo
//Al pulsar arriba, ponemos al sprite mirando hacia arriba
PA_SetSpriteAnim(0, //pantalla
0, //sprite
1); //frame
//empezamos a hacer la animacion del sprite para que camine
PA_StartSpriteAnim(0, //pantalla
0, //sprite
0, //frame de inicio de la animacion
2, //frame de final de animacion
5); //velocidad de animacion
}
//si esta pulsado
if (Pad.Held.Up){
//hacemos que se mueva
personaje.y -=1;
}
//si dejo de pulsarlo...
else if (Pad.Released.Up){
PA_StopSpriteAnim(0, 0); //detengo la animación PA_StopSpriteAnim(pantalla,sprite);

//Ponemos al sprite mirando hacia arriba
PA_SetSpriteAnim(0, //pantalla
0, //sprite
1); //frame
}


if (Pad.Newpress.Down){
PA_SetSpriteHflip(0, 0, 0); //Indica si el sprite esta voolteado o no, lo explico mas abajo
//Al pulsar abajo, ponemos al sprite mirando hacia abajo
PA_SetSpriteAnim(0, //pantalla
0, //sprite
6); //frame
PA_StartSpriteAnim(0, //pantalla
0, //sprite
6, //frame de inicio de la animacion
8, //frame de final de animacion
5); //velocidad de animacion
}

if (Pad.Held.Down){
//hacemos que se mueva
personaje.y +=1;
}

else if (Pad.Released.Down){
PA_StopSpriteAnim(0, 0); //detengo la animación PA_StopSpriteAnim(pantalla,sprite);
//Ponemos al sprite mirando hacia arriba
PA_SetSpriteAnim(0, //pantalla
0, //sprite
6); //frame

}

if (Pad.Newpress.Left){
/*Aquí vooltearemos el sprite ya que solo hemos incluido la animación de un lado, es el mismo
efecto que el de un espejo*/
//hacemos que voltee la imagen
PA_SetSpriteHflip(0, //pantalla
0, //sprite
1); //volteo (0 normal 1 invertido)

//lo mismo de antes
PA_SetSpriteAnim(0, 0, 3);

PA_StartSpriteAnim(0, //pantalla
0, //sprite
3, //frame de inicio de la animacion
5, //frame de final de animacion
5); //velocidad de animacion

}

if (Pad.Held.Left){
//hacemos que se mueva
personaje.x -=1;
}

else if (Pad.Released.Left){
PA_StopSpriteAnim(0, 0); //detengo la animación PA_StopSpriteAnim(pantalla,sprite);
//Ponemos al sprite mirando hacia arriba
PA_SetSpriteAnim(0, //pantalla
0, //sprite
3); //frame

}


if (Pad.Newpress.Right){

//no voltea el sprite
PA_SetSpriteHflip(0, //pantalla
0, //sprite
0); //volteo (0 normal 1 invertido)
/*Si no saveis porque le digo que no se voltee cuando no viene volteado "de serie" el sprite es simple,
es porque si no le digo que quite el volteo, si le animo hacia la izquierda y luego quiero que se anime
hacia la derecha, el volteo no se quita ello solo por arte de magia, y se quedaria mirando para el lado
que no es*/

//lo mismo de antes
PA_SetSpriteAnim(0, //pantalla
0, //sprite
3); //frame

PA_StartSpriteAnim(0, //pantalla
0, //sprite
3, //frame de inicio de la animacion
5, //frame de final de animacion
5); //velocidad de animacion



}

if (Pad.Held.Right){
//hacemos que se mueva
personaje.x +=1;

}

else if (Pad.Released.Right){
PA_StopSpriteAnim(0, 0); //detengo la animación PA_StopSpriteAnim(pantalla,sprite);

//Ponemos al sprite mirando hacia arriba
PA_SetSpriteAnim(0, //pantalla
0, //sprite
3); //frame
}


/*aquí hago que el sprite no se pueda salir de la pantalla, si no lo hiciese, caminaria y
se saldria de la pantalla*/
if (personaje.x <0){
personaje.x = 0;
}

if (personaje.x >224){
personaje.x = 224;
}

if (personaje.y <0){
personaje.y = 0;
}

if (personaje.y >160){
personaje.y = 160;
}
//actualizamos la posicion del sprite
PA_SetSpriteXY(0, 0, personaje.x, personaje.y);

PA_WaitForVBL();
}

return 0;
} // End of main()


Y hay teneis al andoba andante xDD


Imagen:

Imagen


Descarga:
http://www.megaupload.com/?d=JQ8CK3LE

Bueno, tiene bastantes bugs, ya que es lo mas esencial de un motor 2d. En otro tutorial ya haremos un motor mas currado, de momento con comprender ese source vale.
--------------------------------------------------------------------

Ahora vamos a por el siguiente, meterle scroll al queco. Os dejo la imagen del escenario:

Link: http://img194.imageshack.us/img194/513/mapat.png



Dejo tambien el contenido del pagfx.ini por si no sabeis como funciona, es igual que un mapa de bits normal:
#TranspColor Magenta

#Sprites :
personaje.png 256colors sprite0


#Backgrounds :
mapa.png EasyBg



Bien, ahora cojemos el mismo source del ejercicio anterior, (creais un nuevo ejercicio), y vamos a añadirle un scroll simple al personaje. Hay vá:

main.c escribió:// Includes
#include <PA9.h> // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

typedef struct{
s32 x, y;
s32 scrollx, scrolly;
} persotype;
persotype personaje;

// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL

PA_EasyBgLoad(0, 3, mapa); //cargo el mapa



personaje.x = 50;
personaje.y = 50;
//los valores del scroll...
personaje.scrollx = 0;
personaje.scrolly = 0;

PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);


PA_CreateSprite(0, 0,(void*)personaje_Sprite, OBJ_SIZE_32X32,1, 0, personaje.x, personaje.y);

while (1)
{

// todo el royo de antes...
if (Pad.Newpress.Up){

PA_SetSpriteHflip(0, 0, 0);

PA_SetSpriteAnim(0, 0, 1);

PA_StartSpriteAnim(0,0,0,2,5);
}



if (Pad.Held.Up){

personaje.y -=1;
}



else if (Pad.Released.Up){
PA_StopSpriteAnim(0, 0);


PA_SetSpriteAnim(0,0,1);
}






if (Pad.Newpress.Down){
PA_SetSpriteHflip(0, 0, 0);

PA_SetSpriteAnim(0, 0, 6);

PA_StartSpriteAnim(0, 0, 6, 8, 5);
}



if (Pad.Held.Down){
personaje.y +=1;
}



else if (Pad.Released.Down){
PA_StopSpriteAnim(0, 0);

PA_SetSpriteAnim(0,0,6);

}






if (Pad.Newpress.Left){

PA_SetSpriteHflip(0,0,1);


PA_SetSpriteAnim(0, 0, 3);

PA_StartSpriteAnim(0, 0, 3, 5, 5);

}



if (Pad.Held.Left){

personaje.x -=1;
}



else if (Pad.Released.Left){
PA_StopSpriteAnim(0, 0);

PA_SetSpriteAnim(0, 0, 3);

}






if (Pad.Newpress.Right){


PA_SetSpriteHflip(0,0, 0);


PA_SetSpriteAnim(0,0,3);

PA_StartSpriteAnim(0,0,3,5,5);
}


if (Pad.Held.Right){

personaje.x +=1;

}

else if (Pad.Released.Right){
PA_StopSpriteAnim(0, 0);

PA_SetSpriteAnim(0,0, 3);
}


/*aquí hago el scroll*/




//no le dejo salirse del margen izquierdo
if (personaje.x <0){
personaje.x = 0;
}

if (personaje.x <30 && personaje.scrollx > 0){
// hago que no se mueva de esa posicion para que no corra más que el scroll
personaje.x = 30;
personaje.scrollx -=1; // hago scroll a la velocidad que se mueve el sprite
}

if (personaje.x >194){

// hago escroll en x
personaje.x =194;
personaje.scrollx +=1; // hago scroll a la velocidad que se mueve el sprite
}

//no le dejo salirse del margen izquierdo
if (personaje.y <0){
personaje.y = 0;
}

if (personaje.y <30 && personaje.scrolly > 0){
// hago escroll en y
personaje.y = 30;
personaje.scrolly -=1;
}


if (personaje.y >130){
personaje.y =130;
// hago escroll en y
personaje.scrolly +=1;
}

//actualizamos la posicion del sprite
PA_SetSpriteXY(0, 0, personaje.x, personaje.y);

//hacemos scroll en el mapa
PA_LargeScrollXY(0, // pantalla
3, // capa
personaje.scrollx, // scroll en x
personaje.scrolly); // scroll en y


PA_WaitForVBL();
}

return 0;
} // End of main()


Ala, hay teneis, con scroll y todo.


Imagen:

Imagen


Descarga:
http://www.megaupload.com/?d=778D8UFS


--------------------------------------------------------------------

Y aquí acabamos por hoy. En el siguiente tutorial, teoria de colisiones entre sprites calculandolo matematicamente con sus ejemplos aplicados a la practica, por supuesto.

Salu2
¡¡¡Ya era hora!!!

¡¡¡Plata por fin hace otro tutorial!!! Con sus faltas de ortografía y todo. XD
muy bueno, plata, felicidades
te dejo un voto positivo
buen tutorial yo estoy pensando en hacer un RPG asi pues muy bueno el tuto. Gracias [+furioso]
Una cosa, porfavor, todas las dudas sobre el tutorial aquí, ya que llevo como 6 meses con la carpeta de mp´s llena y tengo que borrar mensajes para recibir nuevos...

P.D: ¿Sabe alguien si los moderadores pueden darme mas espacio para mp´s desde el panel de control de la web o algo? Si es posible, seria un detallazo de parte de eol.

salu2
Ok PLATA UNA PREGUNTA TU ME PODRÍAS AYUDAR CON EL RPG??
Jesús94 escribió:Ok PLATA UNA PREGUNTA TU ME PODRÍAS AYUDAR CON EL RPG??


Te puedo ayudar con alguna cosa como a todo el mundo pero nada de meterme en otro proyecto ni loco.

salu2
Jesús94 escribió:Ok PLATA UNA PREGUNTA TU ME PODRÍAS AYUDAR CON EL RPG??


1-¿Alguna vez has conseguido hacer un simple pong en C? ¿Y algo un poco más complicado?
2-¿Alguna vez has hecho algo mas que un "hola mundo" sin copiar código?
3-¿Alguna vez has programado?

Si alguna de estas preguntas es NO, olvídate de hacer un RPG hasta saber programar. Y digo saber programar, no leerte un tutorial de C y copiar los ejemplos para hacer una chorrada de programa. Saber programar en C es mucho más que conocer la sintaxis y operadores y demás, es saberse organizar, tener experiencia... Vamos, lo que no tienes... Primero hay que aprender a caminar, y luego ya podrás correr, pero es que yo dudo que tu sepas gatear...
ANTONIOND escribió:
Jesús94 escribió:Ok PLATA UNA PREGUNTA TU ME PODRÍAS AYUDAR CON EL RPG??


1-¿Alguna vez has conseguido hacer un simple pong en C? ¿Y algo un poco más complicado?
2-¿Alguna vez has hecho algo mas que un "hola mundo" sin copiar código?
3-¿Alguna vez has programado?

Si alguna de estas preguntas es NO, olvídate de hacer un RPG hasta saber programar. Y digo saber programar, no leerte un tutorial de C y copiar los ejemplos para hacer una chorrada de programa. Saber programar en C es mucho más que conocer la sintaxis y operadores y demás, es saberse organizar, tener experiencia... Vamos, lo que no tienes... Primero hay que aprender a caminar, y luego ya podrás correr, pero es que yo dudo que tu sepas gatear...


Ok aprenderé C luego a programar un RPG [ginyo]
Jesús94 escribió:
ANTONIOND escribió:
Jesús94 escribió:Ok PLATA UNA PREGUNTA TU ME PODRÍAS AYUDAR CON EL RPG??


1-¿Alguna vez has conseguido hacer un simple pong en C? ¿Y algo un poco más complicado?
2-¿Alguna vez has hecho algo mas que un "hola mundo" sin copiar código?
3-¿Alguna vez has programado?

Si alguna de estas preguntas es NO, olvídate de hacer un RPG hasta saber programar. Y digo saber programar, no leerte un tutorial de C y copiar los ejemplos para hacer una chorrada de programa. Saber programar en C es mucho más que conocer la sintaxis y operadores y demás, es saberse organizar, tener experiencia... Vamos, lo que no tienes... Primero hay que aprender a caminar, y luego ya podrás correr, pero es que yo dudo que tu sepas gatear...


Ok aprenderé C luego a programar un RPG [ginyo]


Imagen
judelco escribió:...


+1 [+risas]
Como bien dice antoniond, lo principal es conocer la sintaxis, y las funciones principales de C. Tu puedes saber que una condicion no se cumplira fuera de un bucle, y la pondras dentro, pero seguramente no sepas el porqué. Hay te tienes que centrar. Saber no es comprender, puedes saberlo todo y no comprender nada. Eso te hara progresar mucho.
Despues estan las reglas "no-escritas" de programación, que solo te lo dará la experiencia a partir de la teoria. De hay que cada programador tenga su forma de programar. Empieza por enfocarlo de otra manera. A ti en realidad se te presenta un problema, y tienes que tratar de resolverlo, pero esto es como las matematicas, si tienes que conseguir 3, puedes hacer 2+1, pero otro igual hace 1+1+1 (no se si me explico). Eso es lo que te hace falta. A partir de hay ya es relativamente mas facil evolucionar. Lo que quiero decir es que tengas paciencia y vallas despacio, o te aburriras, te comeras la cabeza, te cabrearaas y lo dejaras de un lado. Empieza por algo simple, aunque no sea útil, tira de imaginación.

salu2
Otro ejemplo un poco mas sencillo:
/* This will show the new sprite animation functions !! Yay !
Thanks to http://www.reinerstileset.4players.de:1059/englisch.htm and Arog for the sprite ;)
*/


// Includes, only one sprite
#include <PA9.h>


// PAGfxConverter Include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"


s16 framecount; //Frame count...


// Main function
int main(void)   {
   // PAlib init
   PA_Init();
   PA_InitVBL();
   
   PA_InitText(1, 0);

   PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);   // Palette....   

   s32 x = 120; s32 y = 64;
   s32 x2 = 50; s32 y2 = 20;

   PA_CreateSprite(0, 0,(void*)som_Sprite, OBJ_SIZE_16X32,1, 0, x, y); // Sprite
   PA_CreateSprite(0,1,(void*)som_Sprite,OBJ_SIZE_16X32,1,0,x2,y2);

   
   while(1)
   {
      // Animation code...
      if(Pad.Newpress.Up) PA_StartSpriteAnim(0, 0, 0, 3, 4);

      if(Pad.Newpress.Down) PA_StartSpriteAnim(0, 0, 8, 11, 4);      
      
      if(Pad.Newpress.Right) {
         PA_StartSpriteAnim(0, 0, 4, 7, 4);   
         PA_SetSpriteHflip(0, 0, 0);
      }
      if(Pad.Newpress.Left) {
         PA_StartSpriteAnim(0, 0, 4, 7, 4);   
         PA_SetSpriteHflip(0, 0, 1);
      }
      
      x2+= Pad.Held.A - Pad.Held.Y;
      y2+= Pad.Held.X - Pad.Held.B;

      
      if(!((Pad.Held.Left)||(Pad.Held.Up)||(Pad.Held.Down)||(Pad.Held.Right))) PA_SpriteAnimPause(0, 0, 1);
      // Moving Code
      y += Pad.Held.Down - Pad.Held.Up;
      x += Pad.Held.Right - Pad.Held.Left;      
      PA_SetSpriteXY(0, 0, x, y);
      PA_SetSpriteXY(0,1,x2,y2);
   
      PA_WaitForVBL();
   }
   
   return 0;
}


Para descargar y probarlo: SpriteAnim (aunque lo deberian de tener en los ejemplos de Palib), eso si, este ejemplo ya ha sido modificado por mi para probar algo de la wiki (que al animar un sprite este se carga en la vram especifica para los sprites y al crear un nuevo sprite usando el mismo previamente animado el nuevo tmb es animado sin necesidad de codigo, lo cual al menos segun lo que intente no paso).

Como pueden ver, es sencillo animar un sprite ;) .
Minabe escribió:blablablablabla...


Varias cosas:
1- Este tutorial realmente es el tutorial nº11, hay otros 10 mas en la web que te ayudaran a comprender todo eso. Este tutorial esta pensado para que hayas leeido antes los otros 10 anteriores.

2- Me reitero al post que he escrito encima del tuyo, puedes saber que 2+1 son 3, y usarlo, pero si empiezas por 1+1+1 = 3, comprenderas el porqué.

3- ¿Como pretendes comprender un codigo a los dos dias de empezar? Te faltan meses de experiencia para comprenderlo, y más aun para ser capaz de distinguir a simple vista que codigo es mejor. Y a efectos practicos los dos sources hacen EXACTAMENTE LO MISMO (miento, el que has puesto mueve dos sprites iguales, pero a uno le anima al moverse y al otro no).

salu2
Blablabla (siguiendo el ejemplo de Plata sobre lo que al parecer dije [+risas] ).

Y algo sobre mandarme pms por x o y razon :-|
Minabe escribió:Wow, yo solo trataba de ayudar (el tutorial nº11!? esto es el dia 4 en Palib y tu codigo usa las mismas funciones una y otra vez, no es para nada dificil de entender y si, lo comprendo del todo), eso si esto no es nada comparado con angulos y gravedad (y hasta eso es facil). Y pues como dices sirven para lo mismo pero para efectos practicos no son igual, y a simple vista es facilisimo decir que codigo es mejor.

Para esto no vuelvo ni a fijarme en sus "tutoriales" que no sirven para nada, un tutorial deberia enseñar a usar las funciones de Palib y lo que haces no es mas que usar el codigo como si fuera C# para funciones de las que Palib puede manejar directamente.

Cualquiera que quiera ayuda o quiera aprender a codear en Palib como se debe puede mandarme PM.

El sistema de movimiento que usa aquí es mas complejo que el que tu has puesto, no se si te has fijado... Y se refiere al tutorial 11 hecho por él, no al de PAlib.
Minabe escribió:blablablablabla.... X2



Jajajajajaaj que chispa, Vamos a empezar, punto 1, no puedes entender un lenguaje SI NO SABES QUE LENGUAJE ES. Ese source no es C#, sino C.

Y deja de dartelas de listo, porque vamos a empezar que estas programando en c, y no en palib, y TODAS las diferencias que hay entre ese codigo y el mio, no tienen nada que ver con palib, sino con C. Pero claro, como yo llevo 4 años con C y tu llevas dos dias, pues ya sabes mas que nadie, claro...

Si sigues reiterando que comprendes perfectamente, dime que interpretas tu aqui:
if(!((Pad.Held.Left)||(Pad.Held.Up)||(Pad.Held.Down)||(Pad.Held.Right))) PA_SpriteAnimPause(0, 0, 1);
// Moving Code
y += Pad.Held.Down - Pad.Held.Up;
x += Pad.Held.Right - Pad.Held.Left;
PA_SetSpriteXY(0, 0, x, y);
PA_SetSpriteXY(0,1,x2,y2);


Y si, no te asustes que en dos tutoriales distintos de la misma libreria veas las mismas funciones, por algo es la "misma libreria".
Plata escribió:
Minabe escribió:blablablablabla.... X2



Jajajajajaaj que chispa, Vamos a empezar, punto 1, no puedes entender un lenguaje SI NO SABES QUE LENGUAJE ES. Ese source no es C#, sino C.

Y deja de dartelas de listo, porque vamos a empezar que estas programando en c, y no en palib, y TODAS las diferencias que hay entre ese codigo y el mio, no tienen nada que ver con palib, sino con C. Pero claro, como yo llevo 4 años con C y tu llevas dos dias, pues ya sabes mas que nadie, claro...

Si sigues reiterando que comprendes perfectamente, dime que interpretas tu aqui:
if(!((Pad.Held.Left)||(Pad.Held.Up)||(Pad.Held.Down)||(Pad.Held.Right))) PA_SpriteAnimPause(0, 0, 1);
// Moving Code
y += Pad.Held.Down - Pad.Held.Up;
x += Pad.Held.Right - Pad.Held.Left;
PA_SetSpriteXY(0, 0, x, y);
PA_SetSpriteXY(0,1,x2,y2);


Y si, no te asustes que en dos tutoriales distintos de la misma libreria veas las mismas funciones, por algo es la "misma libreria".


Yo si se interpretarlo!!! =P Y sabes Minabe con quien aprendi??? Con PLATA! . Sus tutoriales son buenisimos y encima es buena gente asi que deja de criticar su magnifico trabajo y si no te gusta ajo y agua ;)
Como habéis puesto a Jesús94 en unos pocos minutos xDDDDDDDDDDDDDDDDDDD
Muy bien el tutorial, pero mai hay una cosa que no me ha quedado claro, como haces los sprites de 32x32? Supongo que con el photshop o algo asi, pero como?

Gracias!
Plata escribió:Si sigues reiterando que comprendes perfectamente, dime que interpretas tu aqui:
y += Pad.Held.Down - Pad.Held.Up;
x += Pad.Held.Right - Pad.Held.Left;
PA_SetSpriteXY(0, 0, x, y);
PA_SetSpriteXY(0,1,x2,y2);


Y si, no te asustes que en dos tutoriales distintos de la misma libreria veas las mismas funciones, por algo es la "misma libreria".

if(!((Pad.Held.Left)||(Pad.Held.Up)||(Pad.Held.Down)||(Pad.Held.Right))) PA_SpriteAnimPause(0, 0, 1);
// Moving Code


Si te referias a este, dice que si ninguna de esas teclas se mantiene presionada (! para not) (|| para "or") se pause la animacion.
Minabe escribió:
Palib escribió:These are 2 variables (we could have used structures now that you know how to use them :-P) that will store the sprite’s position...

x += Pad.Held.Right - Pad.Held.Left;
y += Pad.Held.Down - Pad.Held.Up;


What’s this ??? I know that it’s not really what comes to mind concerning sprite movement. The easiest way to do it would have been like

if (Pad.Held.Right) x = x + 1;


(to move the sprite 1 pixel...)

Here, what happens if you press Right ? Pad.Held.Right gets value 1, and Pad.Held.Left gets value 0. So

x += Pad.Held.Right - Pad.Held.Left;   -> x += 1 - 0;


So it moves the X position by 1 pixel, exactly like the if stuff did, except that this works for Left (-1 pixels) and does not use the if, which is slow !


if(!((Pad.Held.Left)||(Pad.Held.Up)||(Pad.Held.Down)||(Pad.Held.Right))) PA_SpriteAnimPause(0, 0, 1);
// Moving Code


Si te referias a este, dice que si ninguna de esas teclas se mantiene presionada (! para not) (|| para "or") se pause la animacion.
Como dije yo solo queria ayudar, pero parece que no se les puede decir nada porque al parecer viven en su propio mundo donde ustedes son perfectos y los demas no.


Cuando sepas que hace realmente sin tener que ir a leer el tutorial, podras criticar con conocimiento.

Sobre lo del mundo perfecto... JA! soñase, demasiados marrones personales tengo (y no solo yo, cada uno tiene el suyo) para que vengas a decirme que vivo en un mundo perfecto. Ya te digo que ojala tubieses razon, para mi el mundo perfecto seria vivir en el centro de mi ciudad, podrido de dinero y con una lamborghini. De momento vivo en el extraradio de mi ciudad, asi que no me vengas encima a hacerme la gracia.

Bueno, tu a lo tuyo, tu vive tu vida y no la de los demas. No me apetece meterme en camisas de once baras.

salu2
Minabe escribió:Sobre lo del mundo perfecto... JA! soñase, demasiados marrones personales tengo (y no solo yo, cada uno tiene el suyo) para que vengas a decirme que vivo en un mundo perfecto. Ya te digo que ojala tubieses razon, para mi el mundo perfecto seria vivir en el centro de mi ciudad, podrido de dinero y con una lamborghini. De momento vivo en el extraradio de mi ciudad, asi que no me vengas encima a hacerme la gracia.

Bueno, tu a lo tuyo, tu vive tu vida y no la de los demas. No me apetece meterme en camisas de once baras.

salu2

Claro que si Plata. Fijate si mi mundo es imperfecto que soy un enano con hacha y me llaman gimli xDDDDD

No en serio. Minabe si querias ayudar no lo has hecho de la mejor manera, haberte argumentado mejor. Pero llegaste con lo que todos entendimos como una declaracion de guerra. Y si mi mundo fuera perfecto no tendria que vivir un puto amor no correspondido como estoy viviendo sabes? Asi que no digas que vivimos en un mundo perfecto porque ojala amigo, ojala.

Y como decia Zatu:
Zatu escribió:habrá un lugar para vivir como un cuento de hadas, pero seguro que es muy caro y no lo puedo pagar
AleXillo escribió:Claro que si Plata. Fijate si mi mundo es imperfecto que soy un enano con hacha y me llaman gimli xDDDDD


Es grimbil xDDDD Solo te faltava colgar la foto que te pase hecha con photoshop jajaj XD
Minabe escribió:al parecer viven en su propio mundo donde ustedes son perfectos y los demas no.


Plata escribió:Sobre lo del mundo perfecto... JA! soñase, demasiados marrones personales tengo (y no solo yo, cada uno tiene el suyo) para que vengas a decirme que vivo en un mundo perfecto. Ya te digo que ojala tubieses razon, para mi el mundo perfecto seria vivir en el centro de mi ciudad, podrido de dinero y con una lamborghini. De momento vivo en el extraradio de mi ciudad, asi que no me vengas encima a hacerme la gracia.


AleXillo escribió:Y si mi mundo fuera perfecto no tendria que vivir un puto amor no correspondido como estoy viviendo sabes?


No se de que maneras ha llegado Minabe aqui, pero respecto a su texto que estoy citando, dais esas respuestas que, en fin, solo demostrais que no os habeis enterado de nada [qmparto].
Mirad yo creo que los dos teneis razón pero como creo que ya se ha dicho cada programador tiene su propio orden en los códigos, su humor, su casa... en fin que cada uno tiene su manera de pensar y por mucho que alguien diga algo eso no se va a cambiar jamás y solo me queda una cosa que decir sincera y personalmente a mi me gustan mas los tutos de aquí EOL de palib que los de la wiki (que si que les he visto) no porque sea mejor o peor si no porque aquí está explicado a modo amigo como que nos conocemos y sin embargo en la wiki está todo serio sin nada mas que el tuto y yo creo que estos tutos están mejores explicados pero bueno... a una última cosa hombre Plata ya has vuelto? que raro pense que te habíamos perdido... xDxD XD weno que ya me estoy enrollando demasiado...
Un saludo, Alber96...
Alber_h escribió:No se de que maneras ha llegado Minabe aqui, pero respecto a su texto que estoy citando, dais esas respuestas que, en fin, solo demostrais que no os habeis enterado de nada [qmparto].

No hice ningun comentario sobre eso porque pense reanimaria la "guerra" [reojillo] .

Creo que editare mis posts, demasiado largos y ya solo estan de sobra (ademas de que puede llegar alguien nuevo y ni enterarse de que y como paso la cosa y reanimar todo de nuevo...)
Alber_h escribió:
Minabe escribió:al parecer viven en su propio mundo donde ustedes son perfectos y los demas no.


Plata escribió:Sobre lo del mundo perfecto... JA! soñase, demasiados marrones personales tengo (y no solo yo, cada uno tiene el suyo) para que vengas a decirme que vivo en un mundo perfecto. Ya te digo que ojala tubieses razon, para mi el mundo perfecto seria vivir en el centro de mi ciudad, podrido de dinero y con una lamborghini. De momento vivo en el extraradio de mi ciudad, asi que no me vengas encima a hacerme la gracia.


AleXillo escribió:Y si mi mundo fuera perfecto no tendria que vivir un puto amor no correspondido como estoy viviendo sabes?


No se de que maneras ha llegado Minabe aqui, pero respecto a su texto que estoy citando, dais esas respuestas que, en fin, solo demostrais que no os habeis enterado de nada [qmparto].


Nos has pillado.... [+risas]
Que quede claro que no estoy de parte de nadie, lo que pasa es que me hace bastante gracia ver como la mayoría de las veces entendeis en un post lo que os da la gana, así nunca parais de discutir.

Que haya paz joder, y mas homebrew!
Alber_h escribió:Que haya paz joder, y mas homebrew!

+1 ;)
Aviso que tardare en hacer el siguiente tuto ya ke kiero presentar un homebrew a scenery beta, aver si gano :p de momento no va mal, ira como un 30~40% programado, asi ke va rapidito...

salu2
Plata escribió:Aviso que tardare en hacer el siguiente tuto ya ke kiero presentar un homebrew a scenery beta, aver si gano :p de momento no va mal, ira como un 30~40% programado, asi ke va rapidito...

salu2


ok me parece bien tienes todo el tiempo que quieras por mi parte (no te pases en tardar [chulito] ) y yo tambien estoy es scenebeta (ojo yo no me he presentado al concurso xD esque como que aun me supera un poquillo) aver si nos vemos ;) y muy buenos tutos otra vez te lo digo xD pero bueno esperaré con impaciencia el nuevo tuto ;)

Gracias por leerme, un saludo Alber96
Plata escribió:Aviso que tardare en hacer el siguiente tuto ya ke kiero presentar un homebrew a scenery beta, aver si gano :p de momento no va mal, ira como un 30~40% programado, asi ke va rapidito...

salu2

como tardes lo mismo que con este. uy... [angelito]
ANTONIOND escribió:¡¡¡Ya era hora!!!

¡¡¡Plata por fin hace otro tutorial!!! Con sus faltas de ortografía y todo. XD


¡+1! ¡+1! xD
La verdad es te felicito por los tutos ya que despierta el bichito de "crear mi propio game", probando mi primero Hello world y otras cositas de los tutos me surgio una duda; ¿es posible romper mi ds lite metiendo algun codigo si querer?, siempre lo pruebo en el emu antes de pasarlo a la SD pero igual me da cosa cuando pruebo por primera vez. [+risas]

Gracias y suerte en scene beta [fumando]
elsuperfan escribió:La verdad es te felicito por los tutos ya que despierta el bichito de "crear mi propio game", probando mi primero Hello world y otras cositas de los tutos me surgio una duda; ¿es posible romper mi ds lite metiendo algun codigo si querer?, siempre lo pruebo en el emu antes de pasarlo a la SD pero igual me da cosa cuando pruebo por primera vez. [+risas]

Gracias y suerte en scene beta [fumando]


jeje es lo mas gracioso que he oido en todo el dia! claro que no no te preocupes no le va a pasar nada a tu nds! aunque claro.. probar un hello world en la ds y en emulador no es que tenga mucha emocion!

Plata escribió:Aviso que tardare en hacer el siguiente tuto ya ke kiero presentar un homebrew a scenery beta, aver si gano :p de momento no va mal, ira como un 30~40% programado, asi ke va rapidito...

salu2


haha no vas a ganar en la vida.. yo tambien tengo mi proyecto a unos porcentajes elevados y voy a quedar vencedor muahahaha
Suikoden77 escribió:
elsuperfan escribió:La verdad es te felicito por los tutos ya que despierta el bichito de "crear mi propio game", probando mi primero Hello world y otras cositas de los tutos me surgio una duda; ¿es posible romper mi ds lite metiendo algun codigo si querer?, siempre lo pruebo en el emu antes de pasarlo a la SD pero igual me da cosa cuando pruebo por primera vez. [+risas]

Gracias y suerte en scene beta [fumando]


jeje es lo mas gracioso que he oido en todo el dia! claro que no no te preocupes no le va a pasar nada a tu nds! aunque claro.. probar un hello world en la ds y en emulador no es que tenga mucha emocion!

Plata escribió:Aviso que tardare en hacer el siguiente tuto ya ke kiero presentar un homebrew a scenery beta, aver si gano :p de momento no va mal, ira como un 30~40% programado, asi ke va rapidito...

salu2


haha no vas a ganar en la vida.. yo tambien tengo mi proyecto a unos porcentajes elevados y voy a quedar vencedor muahahaha


Se lo que esta programando cada uno, y te cuento, el ganador va a ser antoniond porque tiene un bombazo de aplicacion (hay lo dejo), y despues quedare yo segundo porque tengo un bombazo de port y muuuucho tiempo libre. Y ese 30% ahora es un 60% (te puedo decir que puedes hechar partidas en mi propio juego y perder en el punto al que esta programado). Solo me falta correguir bugs (muchos), y meter armas y un enemigo que me falta por programar...

Te vas a tener que conformar con el 3º puesto XD

salu2
Plata escribió:
Suikoden77 escribió:
elsuperfan escribió:La verdad es te felicito por los tutos ya que despierta el bichito de "crear mi propio game", probando mi primero Hello world y otras cositas de los tutos me surgio una duda; ¿es posible romper mi ds lite metiendo algun codigo si querer?, siempre lo pruebo en el emu antes de pasarlo a la SD pero igual me da cosa cuando pruebo por primera vez. [+risas]

Gracias y suerte en scene beta [fumando]


jeje es lo mas gracioso que he oido en todo el dia! claro que no no te preocupes no le va a pasar nada a tu nds! aunque claro.. probar un hello world en la ds y en emulador no es que tenga mucha emocion!

Plata escribió:Aviso que tardare en hacer el siguiente tuto ya ke kiero presentar un homebrew a scenery beta, aver si gano :p de momento no va mal, ira como un 30~40% programado, asi ke va rapidito...

salu2


haha no vas a ganar en la vida.. yo tambien tengo mi proyecto a unos porcentajes elevados y voy a quedar vencedor muahahaha


Se lo que esta programando cada uno, y te cuento, el ganador va a ser antoniond porque tiene un bombazo de aplicacion (hay lo dejo), y despues quedare yo segundo porque tengo un bombazo de port y muuuucho tiempo libre. Y ese 30% ahora es un 60% (te puedo decir que puedes hechar partidas en mi propio juego y perder en el punto al que esta programado). Solo me falta correguir bugs (muchos), y meter armas y un enemigo que me falta por programar...

Te vas a tener que conformar con el 3º puesto XD

salu2


jajaaj te lo decia de broma! no creo ni que consiga el tercer puesto.. ya que el juego que estoy programando es de dos jugadores.. con lo que deberia de hacerlo usando el wifi (pero no tengo ni idea aun de como se hace.. estoy todavia investigando tema de sockets y cosas varias), y jugar en una consola se hace mas extraño (imagina jugar a las magic en una consola, si quieres mirar las cartas de tu mano tienes que impedir que el otro pueda ver la pantalla, y cosas del estilo). Aun asi yo seguire con el proyecto despues de septiembre.. porque como digo pretendo hacerlo via wifi y no se si para entonces lo tendre hecho.

Acerca del juego que estas haciendo.. la vedad que tiene muy buena pinta, no se que es lo que estas portando pero me gustaria saberlo. Y de Antonio, me espero alguna aplicacion desde su NE, asi que nos dara mil vueltas a todos jaja. Saludos!
Suikoden77 escribió:Acerca del juego que estas haciendo.. la vedad que tiene muy buena pinta, no se que es lo que estas portando pero me gustaria saberlo. Y de Antonio, me espero alguna aplicacion desde su NE, asi que nos dara mil vueltas a todos jaja. Saludos!

¿Yo? ¿Usando mi motor 3D? Qué cosas más raras dices... [sonrisa]
Suikoden77 escribió:jajaaj te lo decia de broma! no creo ni que consiga el tercer puesto.. ya que el juego que estoy programando es de dos jugadores.. con lo que deberia de hacerlo usando el wifi (pero no tengo ni idea aun de como se hace.. estoy todavia investigando tema de sockets y cosas varias), y jugar en una consola se hace mas extraño (imagina jugar a las magic en una consola, si quieres mirar las cartas de tu mano tienes que impedir que el otro pueda ver la pantalla, y cosas del estilo). Aun asi yo seguire con el proyecto despues de septiembre.. porque como digo pretendo hacerlo via wifi y no se si para entonces lo tendre hecho.

Acerca del juego que estas haciendo.. la vedad que tiene muy buena pinta, no se que es lo que estas portando pero me gustaria saberlo. Y de Antonio, me espero alguna aplicacion desde su NE, asi que nos dara mil vueltas a todos jaja. Saludos!


Te aseguro que lo de antoniond no tiene nada que ver con 3D, y que gana de fijo. Ni te lo imaginas xD. Encuanto a mi, pues creo que es esto lo que estoy portando: http://www.minijuegos.com/juegos/jugar.php?id=5551

Salu2 y suerte a todos los que se presenten!
Plata escribió:Te aseguro que lo de antoniond no tiene nada que ver con 3D, y que gana de fijo. Ni te lo imaginas xD. Encuanto a mi, pues creo que es esto lo que estoy portando: http://www.minijuegos.com/juegos/jugar.php?id=5551

Salu2 y suerte a todos los que se presenten!

A ver, lo de 3D sigue en pie, y lo otro que estoy haciendo va en otra categoría asi que no pasa nada... :-|
Plata escribió:
Suikoden77 escribió:
elsuperfan escribió:La verdad es te felicito por los tutos ya que despierta el bichito de "crear mi propio game", probando mi primero Hello world y otras cositas de los tutos me surgio una duda; ¿es posible romper mi ds lite metiendo algun codigo si querer?, siempre lo pruebo en el emu antes de pasarlo a la SD pero igual me da cosa cuando pruebo por primera vez. [+risas]

Gracias y suerte en scene beta [fumando]


jeje es lo mas gracioso que he oido en todo el dia! claro que no no te preocupes no le va a pasar nada a tu nds! aunque claro.. probar un hello world en la ds y en emulador no es que tenga mucha emocion!

No me referia solo al hello world, es mas por meter mano a cualquier codigo, agregar, sacar, pegar de otro lado y tocar algo que al final me brikee la ds.

lo mas gracioso? Oooh [qmparto]
al no ser que sepas las instrucciones necesarias y puntees en el mismo punto de flashmee, no, imposible xDDD
Mira mew he enterado ke ikau a abandonado el proyecto de DSme [flipa] [flipa] , necesito hablar contigo te envio un mensage con mi messenger???
carlo999 escribió:Mira mew he enterado ke ikau a abandonado el proyecto de DSme [flipa] [flipa] , necesito hablar contigo te envio un mensage con mi messenger???


Pues mal te has enterado. Mikau sigue en el proyecto, y no eres el primero que me lo pregunta.

Salu2
Plata escribió:
Suikoden77 escribió:jajaaj te lo decia de broma! no creo ni que consiga el tercer puesto.. ya que el juego que estoy programando es de dos jugadores.. con lo que deberia de hacerlo usando el wifi (pero no tengo ni idea aun de como se hace.. estoy todavia investigando tema de sockets y cosas varias), y jugar en una consola se hace mas extraño (imagina jugar a las magic en una consola, si quieres mirar las cartas de tu mano tienes que impedir que el otro pueda ver la pantalla, y cosas del estilo). Aun asi yo seguire con el proyecto despues de septiembre.. porque como digo pretendo hacerlo via wifi y no se si para entonces lo tendre hecho.

Acerca del juego que estas haciendo.. la vedad que tiene muy buena pinta, no se que es lo que estas portando pero me gustaria saberlo. Y de Antonio, me espero alguna aplicacion desde su NE, asi que nos dara mil vueltas a todos jaja. Saludos!


Te aseguro que lo de antoniond no tiene nada que ver con 3D, y que gana de fijo. Ni te lo imaginas xD. Encuanto a mi, pues creo que es esto lo que estoy portando: http://www.minijuegos.com/juegos/jugar.php?id=5551

Salu2 y suerte a todos los que se presenten!


Esta muy bien ese juego, a mi me gustaria jugarlo en ds XD
Tranquilo, Magic. Pronto podrás :3 de hecho me pasó una especie de DEMO y no va mal (salvo las colisiones)
Lo que no me gusta es que me falta algo que se me escapa... Osea, el juego mio se comporta como el original, pero como que es mucho mas facil mi juego que el original... Creo que con un pequeño retardo entre disparos y que los enemigos retrocedan al pegarles un tiro como en el original iria mejor(esto me falta por añadirlo). Haber si corrijo una lista de bugs y cosas por añadir bastante larga y saco una demo pa que veais.

salu2
Plata escribió:
carlo999 escribió:Mira mew he enterado ke ikau a abandonado el proyecto de DSme [flipa] [flipa] , necesito hablar contigo te envio un mensage con mi messenger???


Pues mal te has enterado. Mikau sigue en el proyecto, y no eres el primero que me lo pregunta.

Salu2


Pues el lo ke dice aki
http://nds.scenebeta.com/noticia/ds-me
Plata escribió:Lo que no me gusta es que me falta algo que se me escapa... Osea, el juego mio se comporta como el original, pero como que es mucho mas facil mi juego que el original... Creo que con un pequeño retardo entre disparos y que los enemigos retrocedan al pegarles un tiro como en el original iria mejor(esto me falta por añadirlo). Haber si corrijo una lista de bugs y cosas por añadir bastante larga y saco una demo pa que veais.

salu2


queremos que salga ya!

Por mi parte yo ya estoy con las funciones finales tambien.. se puede decir que el modo una consola está casi acabado (me faltan de incluir las reglas de cada carta.. son 25 y ya llevo 6). Tambien me falta pedir permiso al autor por el copyright, alguien que sepa alemán? si no se lo pediré en ingles (mas le vale decirme que me deja.. si no no podre presentarlo). De todas formas, tendría problemas si siguiera el proyecto aunque no lo fuera a presentar a concurso?.
Tambien estoy viendo ejemplos de liblobby con lo que tambien incluire para el concurso un modo wifi.. que será el modo mas natural de jugar.
corto y cambio
57 respuestas
1, 2