[NDS][Programación con Palib] 6. Movimiento de sprites y utilización de stylus y pad

1. Movimiento de sprites tipo ratón

Ahora aprenderemos a mover un sprite con el stylus como si fuera un ratón.

Crearemos otro ejercicio.
En la carpeta source creamos la carpeta gfx y un sprite, por ejemplo un raton.
Yo use este:

Imagen

A la paleta la llamaremos sprite 0 y al sprite yo le he llamado raton y lo he guardado en png.

(todo esto explicado en el tutorial anterior, para los que cojen solo lo que les interesa de los tutos)

El pagfx quedaria así:
#TranspColor magenta

#Sprites :
raton.PNG 256colors sprite0


#Backgrounds :


Ahora vamos al código:
// Includes
#include // Include de las PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

// Funcion main()
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal); // Cargamos la paleta

PA_CreateSprite(0, 0,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 50, 50); //cargamos el sprite

//Bucle
while(1)
{
//actualizo la posición del sprite
PA_SetSpriteXY(0, //pantalla
0, //numero del sprite
Stylus.X-16, //Posicion de X. Le resto 16 porque sino no aparece correctamente el raton respecto al stylus
Stylus.Y-16 //Posicion de Y. Lo mismo
);
PA_WaitForVBL();
}

return 0;
} //Fin de main()


Y ya ta.

Captura:

Imagen

Descarga:
http://www.megaupload.com/es/?d=O55KH6HN

2. Movimiento de varios sprites (Tipo Mr. Potato)

De aquí pues hize una demo de esto aquí:
http://www.elotrolado.net/hilo_Mr--Potato_899305


MUY IMPORTANTE: Antes de seguir lee esto:
http://www.palib.info/wiki/doku.php?id=day2es
No quiero hacer mas largo el hilo.


Empezamos!!!

Nuevo ejercicio, nueva carpeta de gráficos.
Usaremos el sprite del ejercicio anterior con la misma configuracion de pagfx. (Copy and paste).

Pasamos al código:
// Includes
#include // Include de las PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

// Funcion main()
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL

u8 i = 0; // variable


// iniciamos la paleta
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);

for //una variante de while (bucle)
//condicion
(i = 0; // si el valor de i (variable) es igual a 0
i < 4; // y es menor que 4...
i++) // sube su valor un numero

/*Asi de golpe no tiene mucho sentido y es muy largo de explicar, recomiendo leer el
enlace de mas arriba*/




//creamos los sprites
PA_CreateSprite(0, i,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 4, 3);



// Bucle
while (1)
{

for (i = 0; i < 4; i++) // lo mismo que mas arriva
PA_MoveSprite(i); // esto hace que el sprite que quieras, por ejemplo, el numero uno, lo pones en los () y el sprite que tenga ese numero se puede mover, lo sustituimos por la variable para mover todos los sprites creados.


PA_WaitForVBL();
}

return 0;
} // Fin de main


Y cada ratón se mueve por su cuenta.

Captura:

Imagen

Descarga:
http://www.megaupload.com/es/?d=5OKFSWD4

3. Movimiento de un sprite con el pad
Nuevo ejercicio, otra vez el mismo sprite y empezamos.

Código:
//Includes
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

s32 x = 0; s32 y = 0; // Declaramos la posicion del sprite

//Funcion main()
int main(void){

PA_Init(); //Iniciamos Palib
PA_InitVBL(); // Iniciamos VBL


//Cargamos la paleta
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);

//Creamos el sprite
PA_CreateSprite(0, 0,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 0, 0);

//Bucle
while(1){

// Actualizamos la posicion del sprite con la del pad
x += Pad.Held.Right - Pad.Held.Left;
y += Pad.Held.Down - Pad.Held.Up;

// Actualizamos la posicion del sprite
PA_SetSpriteXY(0, 0, x, // Posición de x (declarada anteriormente)
y); // Posición de y...

PA_WaitForVBL();
}
return 0;
} //Fin de main


Y asi moveremos el sprite con el pad.

Captura:

Imagen

Descarga:
http://www.megaupload.com/es/?d=L46DIMPJ

También puedes usar las teclas y todo, hay un ejemplo en la ruta C:\devkitPro\PAlibExamples\Input\Pad.

Y ahí se queda la lección.

------------------------------Tarea-----------------------------------------
Intentad hacer un mini OS, se trata de un fondo y el raton (nada del otro mundo).

Captura:

Imagen

No lo pongo por ahora a descarga.
Quiero ver vuestras capturas propias.


Salu2

El proximo... me lo pensare. xD (Dadme ideas)
Perfecto como siempre. El Winwous X D está genial. 5 starz!
Ya se va complicando la cosa... a ver si mañana lo hago, que ahora no estoy en el PC en el que tengo instalado todo el tema este...
El siguiente podrías hacerlo de interacción entre sprites y etc... (con lo de interacción me refiero, a que sí por ejemplo tenemos una línea y un cochecito, que cuando el cochecito toque la línea desaparezca y cosas de esas...).
Antunez escribió:Ya se va complicando la cosa... a ver si mañana lo hago, que ahora no estoy en el PC en el que tengo instalado todo el tema este...
El siguiente podrías hacerlo de interacción entre sprites y etc... (con lo de interacción me refiero, a que sí por ejemplo tenemos una línea y un cochecito, que cuando el cochecito toque la línea desaparezca y cosas de esas...).


colisiones?
salu2
no me pude esperar a este tutorial y me puse a investigar por mi cuenta [+risas]

pero mas o menos este es mi resultado

Imagen

el fondo es la chica y los sprites en movimiento serian la ropa y el pelo ;)

http://rapidshare.com/files/75447481/test2.nds.html
Ostras!!!! Esto se va complicando lo suyo!!!

2 cosas:

1- AUN no he conseguido que se hagan "amigos" los fonts personalizados con los fondos de pantalla.

2- Lo del enlace que hay que leerse.... hay que leerselo TODO??????

Me parece que este tutorial va a durar 1 semanita... XD

PD: Am! 5 stars, of course!

Sigue asi! :p

EDIT1: Ya he hecho el 1, es fácil... solo que el que más me asusta es el del movimiento con el stylus... el del mov. con el pad no me asusta demasiado... aunque como hay que ir en orden... voy a hacer el del stylus primero... >.< ... que mala pinta tiene el coooodigo.... T_T
Ostias!! Es la primera vez que veo estos tutos! Estan geniales, les hecharé un vistazo, muchas gracias por el curro!
He empezado a leer y me he encontrado variables como "float", etc..... eso me ha traido recuerdos y para entenderlo mejor he hechado mano a un .txt que hice cuando aprendia C++. Voy a postearlo para que podais hacer uso de el:

------------------------------------------------------------------------------
TXT - EXPLICACIONES EN C++ [JuDelCo]
------------------------------------------------------------------------------
--------------------------*-ESTRUCTURA-*--------------------------------

#include
#include

(Instrucciones de declaramiento de librerias)(Tomos de diccionario)
#include

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

main()
{
cout<<"Este es mi primer programa"< cout<<":)";
getche();
}

(Programa) - main()
{
(Instrucciones)
}

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

#include
#include
main()
{
char nombre[10];
char apellidos[30];
int edad;
float altura;

cout<<"Cual es tu nombre?";
cin>>nombre;
cout<<"Cual es tu edad?";
cin>>edad;
cout<<"Hola"<getche(); variable nombre se mostrará)
}

-----------------------------------------------------------------------
--------------------------*-DEFINICIONES-*-----------------------------

COUT : Sirve para escribir un mensaje en la pantalla. Cuando el
ordenador ejecuta una instruccion cout sabe que en la pantalla debe
escribir una informacion. Por ahora, solo escribira texto, y para
yo indicarle adecuadamente el texto que quiero que escriba debo ponerlo
entre comilas dobles ("). Si le digo q escriba <el ordenador sabe que debe bajar el cursor a la linea siguiente.
Esta instruccion cuando tiene que escribir diferentes cosas, debe
ultilizar para separar unas de otras el simbolo <<
Esta instruccion se encuentra en la libreria iostream.h

GETCHE : Esta instruccion sirve para detener o bloquear la ejecucion del
programa hasta que se pulse una tecla. Nosotros normalmente la ultilizarmos
como ultima instruccion del programa para poder ver resultados. Esta
instruccion se encuentra en la libreria conio.h

CHAR : Es una variable con el nombre "example", que te permite guardar
letras. En los corchetes [x] el simbolo "x" indica el tope de letras que
permite guardar en la memoria principal
ejemplo: -- char example[x] --

INT : Es otra variable que sirve para guardar en la mem.principal un numero,
ojo, no permite guardar cualquier numero, solo permite guardar numeros
enteros (sin decimales). No debe sobrepasar el numero 32.000.

FLOAT : Es otra variable que sirve para guardar en la mem.principal un
numero real, esta vez permite las comas (las comas se ponen como puntos)

LONG : Otra variable, esta vez sirve para guardar un numero pero esta vez
sin la restriccion del numero 32.000

CIN : Sirve para entrar una variable, por ejemplo : cin>>nombre
La variable llamada nombre dará paso a la escritura del usuario para
escribir la variable que permita tales caracteres, Tambien detiene el
programa hasta que el usuario introduzca la informacion que le pida

GETS (x) : Sirve para que te pregunte la variable x y la informacion que
se guarde incluya más de una palabra (para los apellidos, por ejemplo)

**Las variables necesitan ser escritas antes de las instrucciones, ojo!**

OPERADORES ARITMÉTICOS : ( + - * / % ) (suma,resta,multiplicar,dividir,calcula
el resto de la division que se le indique -- 8%2=0 -- )

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

OJO, es de C++, no de PALib... pero como he visto lo de float.. puede que sirva de algo.

PD: Sigo esperando la explicacion de PORQUE no se quieren llevar bien los fondos con las fuentes personalizadas... :(

Bye! [chiu]
ImagenImagenImagen

Mi versión mejorada de WINWOWS :lol: basada en el tuto de GUIs de las PA_Lib. Ahí es nada.
Buen tuto, aunque yo no hubiese puesto de ejemplo hacer "Sistemas operativos", despues la gente verá las screens, se pensará lo que no es, y tendremos a mil tonticos jurando que han visto un windows y un guadalinex para la DS, y siempre habrá un primo de un amigo del conocido de un cuñado que perjurará que es posible instalar windows xp en la ds porque él lo tiene instalado... xD

Salutres y 5 estrellas!
Que es eso de GUI ? Es que siempre oigo hablar de el pero no se de que va.... alguien me lo explica? (Ojo, hasta es posible que aparezca en el texto que plata a mandado leer... pero como no he acabado...)

Bye!
adan_gecko escribió:ImagenImagenImagen

Mi versión mejorada de WINWOWS :lol: basada en el tuto de GUIs de las PA_Lib. Ahí es nada.


Las imágenes esas supongo que irán de coña ¿no?
Antunez escribió:
Las imágenes esas supongo que irán de coña ¿no?


Ya empezamos..... QUE NOOOO. SON SOLO IMAGENES. Nada de guadalinux ni nada parecido. Solo imagenes.

Bueno, alguien me dice lo de la pregunta de GUI?
Ya lo sé leches, la duda era si son solo imágenes o hacía algo, porque para navegar por la tarjeta tampoco hace falta un Pentium 7...
Antunez escribió:Ya lo sé leches, la duda era si son solo imágenes o hacía algo, porque para navegar por la tarjeta tampoco hace falta un Pentium 7...


Bueno, digo yo que estas imagenes están posteadas en el foro de "movimiento con sprites y utilizacion de stylus y pad" por lo que no deja mucha imaginacion... supongo que será un hoembrew con esas imagenes y los sprites serán los iconos y el raton o algo parecido. Digo yo....

PD: Sigo insistiendo que es lo del GUI

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

EDIT: Ya me he mirado lo de "Leer" y lo aprendí todo hace mas o menos un año. Lo malo es que ya se me ha olvidado y tengo que mas o menos memorizarlo de nuevo... :(

PERO CREO que tengo un txt mas reciente por hay donde resume muchas cosas de lo que hablan

Miraré a ver....
--------------------------
judelco escribió:
Bueno, digo yo que estas imagenes están posteadas en el foro de "movimiento con sprites y utilizacion de stylus y pad" por lo que no deja mucha imaginacion... supongo que será un hoembrew con esas imagenes y los sprites serán los iconos y el raton o algo parecido. Digo yo....

PD: Sigo insistiendo que es lo del GUI

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

EDIT: Ya me he mirado lo de "Leer" y lo aprendí todo hace mas o menos un año. Lo malo es que ya se me ha olvidado y tengo que mas o menos memorizarlo de nuevo... :(

PERO CREO que tengo un txt mas reciente por hay donde resume muchas cosas de lo que hablan

Miraré a ver....
--------------------------


Es un programa de verdad, era un ejemplo de palib, estoy investigando para aportarlo a un proyecto, todavia no quiero decir nada porque van a venir los es un fake! es un fake! y no tengo muchas ganas.
salu2

Judelco: mira este ejemplo de un proyecto que tengo que terminar, (lo de fuente cn fondo)

Adjuntos

Plata escribió:
Es un programa de verdad, era un ejemplo de palib, estoy investigando para aportarlo a un proyecto, todavia no quiero decir nada porque van a venir los es un fake! es un fake! y no tengo muchas ganas.
salu2

Judelco: mira este ejemplo de un proyecto que tengo que terminar, (lo de fuente cn fondo)


Gracias! Voy a mirar el código y veré QUE es lo que fallaba yo. En fin.. gracias , plata. De verdad. Me has hecho tomar estos "estudios" gracias a tus tutoriales que seguro que me van a ser útiles para mi futuro.

PD: Ya voy por lo de "leer" por la parte de "FUNCIONES" y todo lo anterior me ha quedado claro!!! ^^

-------------------------------------------------------------
EDIT: Vale, mola lo del teclado pero al menos ya tengo seguro que se tiene que poder de alguna forma el mezclar fuentes personalizadas con fondos.. Y CREO que ya se lo que me pasa.

...Por cierto, alguien sabe porque el comando "PA_LoadMod();" No me va? (Para lo de poner musiquilla en el HB)

...y si, ya se que luego de lo de LoadMod hay que poner "PA_PlayMod();"

-------------------------------------------------------------
Bye! [sonrisa]
judelco escribió:
Gracias! Voy a mirar el código y veré QUE es lo que fallaba yo. En fin.. gracias , plata. De verdad. Me has hecho tomar estos "estudios" gracias a tus tutoriales que seguro que me van a ser útiles para mi futuro.

PD: Ya voy por lo de "leer" por la parte de "FUNCIONES" y todo lo anterior me ha quedado claro!!! ^^

-------------------------------------------------------------
EDIT: Vale, mola lo del teclado pero al menos ya tengo seguro que se tiene que poder de alguna forma el mezclar fuentes personalizadas con fondos.. Y CREO que ya se lo que me pasa.

...Por cierto, alguien sabe porque el comando "PA_LoadMod();" No me va? (Para lo de poner musiquilla en el HB)

...y si, ya se que luego de lo de LoadMod hay que poner "PA_PlayMod();"

-------------------------------------------------------------
Bye! [sonrisa]


No corras tanto, forest, lo veremos mas adelante, y tb como crear un mini SO, navegacion por la targeta, lectura de archivos (con lo que alguno sin mirar a nadie puede hacer un catalogador de pelis), etc...
Plata escribió:(con lo que alguno sin mirar a nadie puede hacer un catalogador de pelis), etc...


[plas]
GUI= Graphic User Interface. Interfaz Gráfica de Usuario. Cito a la Wikipedia.


GuadalinexDS Es una cosa básica y cutre, pero como ejemplo vale.

Código fuente de un GUI (eso sí, está hecho con las PA_Libs antiguas, así que toca adaptación, pero por lo menos teneis ahí el main.c)
Para cuando acaben los tutoriales de plata (o vayan más avanzados) podemos entre todos hacer un brainstorming de ideas para un juego homebrew de minijuegos rollo wario ware, o wario smooth moves, que lo que son gráficos no es nada en si, pero molan mucho y pican que te cagas... xD
Bueno, aqui está mi primer "proyecto-cutre-chorra" que te cagas.... pregunté lo de "PA_LoadMod();" Porque queria meterle musica al cacharro... :/

En fin... un screenshot y el nds para que lo veais:

Imagen

Y aqui lo podeis descargar ---> DESCARGAR

PORFAVOR, para verlo en su "plenitud" XD Teneis que verlo en un emulador o bien en vuestra ds... ya que contiene sprites animados...

Bye! [fies]

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

EDIT: Una pregunta que tengo duda.... es claro que los de nintendo no usan PALib para hacer los juegos... eso está mas que claro.. (sino seria el BOOM XD) perooo... entonces... que utilizan para programar los juegos (por ejemplo, el Super Mario 64 DS....) ???

Pues solo era eso [agggtt]
--------------------------------------------------------
Hola, tengo un problema, no es de sprites pero bueno, lo pongo aqui XD.

Haber, me sale este error cuando intento usar c++

Parrilla.cpp
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h: In function 'void PA_PlayFSSoundEx2(u8, u16, u8, int, s16, BOOL, int)':
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h:212: error: invalid conversion from 'void*' to 'u32*'
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h: In function 'void PA_PlayFSMod(u16)':
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h:430: error: invalid conversion from 'void*' to 'u32*'
make[1]: *** [Parrilla.o] Error 1
make: *** [build] Error 2


¿alguien sabe porque?
Waltrapas escribió:Hola, tengo un problema, no es de sprites pero bueno, lo pongo aqui XD.

Haber, me sale este error cuando intento usar c++

Parrilla.cpp
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h: In function 'void PA_PlayFSSoundEx2(u8, u16, u8, int, s16, BOOL, int)':
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h:212: error: invalid conversion from 'void*' to 'u32*'
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h: In function 'void PA_PlayFSMod(u16)':
c:/devkitPro/PAlib/include/nds/arm9/PA_Sound.h:430: error: invalid conversion from 'void*' to 'u32*'
make[1]: *** [Parrilla.o] Error 1
make: *** [build] Error 2


¿alguien sabe porque?


que coño tiene que ver c++ con esto?

si me pones el codigo igual te puedo ayudar -.-
Plata escribió:Salu2

El proximo... me lo pensare. xD (Dadme ideas)


Podrías poner uno de meter sonido?
Pa chulear de SO ya toy yo... xD

Al que consiga encontrar un mebú oculto y el boton de iluminacion y lo postee primero le dejo elegir de k va el tuto 8.

No funciona bien en emuladores, pues estos no trabajan bien con muchos sprites, cargadlo en la ds.

P.D: No lo anuncieis por hay pues es una alfa-beta-beta-alfa-alfa-alfa-beta-beta-alfa verdisima xD

Adjuntos

Si te refieres a que sale 2 veces un menu ya lo tengo ^^

en emu como bien dices no funciona demasiado bien, parece que se descoloca la pantalla, pero nada mas

lo digo aquí o mejor por MP y que los demás investiguen??

EDIT. Duda, lo de la iluminación vale para la DS tocha, verdad? sino mal voy >.<

EDIT2. encontrado botón de iluminación (soy un hacha, juju)

EDIT3. ahora con el DesMuME me salen 3 menus en lugar de 2

en la Ds me he dado cuenta ke hay uno que sale pero como si fuese el fondo (es algo raro, xD)

me da que mi superCard esta chocha

EDIT4. lo dejo aquí en un link

http://img47.imageshack.us/img47/8533/printscreenvr3.jpg
ese brillo del circulo exterior de la pantalla superior era sospechoso, xD
Con eso mas me anima la programación en NDS, por cierto hay alguna forma de realizar alguna interfase con algún circuito cualquiera que este fuese, si es así me animare más a aprender a realizar comunicaciones con el mundo exterior"
Bueno, en el tuto segundo de este tuto (Vamos... el 6.2) He observado que el codigo se puede resumir asi:

------------------------------
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();

u8 i = 0;

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

PA_CreateSprite(0, 0,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 4, 3);
PA_CreateSprite(0, 1,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 20, 30);
PA_CreateSprite(0, 2,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 30, 40);
PA_CreateSprite(0, 3,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 40, 50);


while (1)
{
for (i = 0; i < 16; i++) PA_MoveSprite(i);
PA_WaitForVBL();
}

return 0;
}
-----------------------------------

Pues sobra una linea de código y las explicaciones (aunque eso da =)
judelco escribió:Bueno, en el tuto segundo de este tuto (Vamos... el 6.2) He observado que el codigo se puede resumir asi:

------------------------------
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();

u8 i = 0;

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

PA_CreateSprite(0, 0,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 4, 3);
PA_CreateSprite(0, 1,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 20, 30);
PA_CreateSprite(0, 2,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 30, 40);
PA_CreateSprite(0, 3,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 40, 50);


while (1)
{
for (i = 0; i < 16; i++) PA_MoveSprite(i);
PA_WaitForVBL();
}

return 0;
}
-----------------------------------

Pues sobra una linea de código y las explicaciones (aunque eso da =)

de esa forma solo puedes mover un sprite de los 4 que aparecen.

se puede resumir asi:
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(void) {


PA_Init();
PA_InitVBL();


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


u8 i = 0;
for (i = 0; i < 4; i++) PA_CreateSprite(0, i,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, i << 4, i << 3);

while(1)
{
for (i = 0; i < 4; i++) PA_MoveSprite(i);

PA_WaitForVBL();
}

return 0;
}

salu2
Plata escribió:de esa forma solo puedes mover un sprite de los 4 que aparecen.

se puede resumir asi:

....


Siento decirtelo pero he probado el codigo que he posteado antes (el que he eliminado una linea de código) y funciona. Se pueden mover idependientemente de los demas todos los "ratones"... No se donde le ves el fallo.)

El último que has posteado tu no lo he probado, pero me vale con apoyar que el mio si funciona (lo he probado, no es cabezoneria mia ni nada parecido... ein? )
judelco escribió:
Siento decirtelo pero he probado el codigo que he posteado antes (el que he eliminado una linea de código) y funciona. Se pueden mover idependientemente de los demas todos los "ratones"... No se donde le ves el fallo.)

El último que has posteado tu no lo he probado, pero me vale con apoyar que el mio si funciona (lo he probado, no es cabezoneria mia ni nada parecido... ein? )


pues ami no se me movian -.- igual me salte algo.
salu2

P.D: A punto de daros una version mejorada de winmob2 xD
Bueno, una preguntita:

u8 i = 0;

El i es el nombre de la variable, el 0 es el valor pero el u8 .....

Que es el u8 ? El equivalente al int del C++ ?

[bye]
judelco escribió:Bueno, una preguntita:

u8 i = 0;

El i es el nombre de la variable, el 0 es el valor pero el u8 .....

Que es el u8 ? El equivalente al int del C++ ?

[bye]

“s” significa “con signo” (signed) y “u” singifica “sin signo” (unsigned).


salu2
Plata escribió: “s” significa “con signo” (signed) y “u” singifica “sin signo” (unsigned).


Vaale... y el 8 ?
Gracias por el tuto ^^

Pero una preguntita...

En el tuto de Mr. Potato ^^...

En esta parte:

for(i=0;i<16;i++)PA_MoveSprite(i);


Para que un 16? Si se puede hacer con un:

for(i=0;i<4;i++)PA_MoveSprite(i);


o un:

for(i=0;i<=3;i++)PA_MoveSprite(i);



Ya que son 4 sprites no?


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

Y otra preguntita mas (Y la ultima ^^)

Esta función: PA_MoveSprite(i); Es magica?
Osea, donde le estas diciendo que tiene que el sprite i tiene que moverse a donde esta el stylus, en el medio, y solo si lo tocan.... DONDE???

Bueno, esas son mis "preguntitas ^^"

Gracias denuevo por el tuto!! ^^ [sonrisa]

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

EDITO: Esta es la ultima xD:

La cosa es que me hice una navecita, que la controlo con el pad, y tiene aceleración... El problema de esto, es que es una aceleración muy rápida =P. Ya que suma 1Pixel por Frame de aceleración...

La cosa es que no me deja trabajar con numero decimales... =(.. Como hago...? Ak dejo el codigo...

while (1)
{

velx += Pad.Held.Right;
velx -= Pad.Held.Left;
vely += Pad.Held.Down;
vely -= Pad.Held.Up;

x += velx;
y += vely;
PA_SetSpriteXY(0,0,x,y);

if(x > 256){
   x = -32;
};

if(x < -32){
   x = 256;
};

if(y > 192){
   y = -32;
};

if(y < -32){
   y = 192;
};



PA_WaitForVBL();
}




EDITO2:

Aca logre una aceleración decente..., haciendo un if reduciendolo en 5...

while (1)
{

conta++;
if(conta>5){
velx += Pad.Held.Right;
velx -= Pad.Held.Left;
vely += Pad.Held.Down;
vely -= Pad.Held.Up;
conta = 0;
};

x += velx;
y += vely;
PA_SetSpriteXY(0,0,x,y);

if(x > 256){
   x = -32;
};

if(x < -32){
   x = 256;
};

if(y > 192){
   y = -32;
};

if(y < -32){
   y = 192;
};



PA_WaitForVBL();
}



Pero sigue sin ser "perfecta" [toctoc] por el hecho de que no puedo usar decimales =( y haciendo esto, responde solo si apretas la cruceta en un frame multiplo de 5 xD...

Asi que... Como hago para que me acepte decimales...?

PD: Tampoco me deja dividir... [mamaaaaa]
judelco escribió: Vaale... y el 8 ?
salu2


es para indicar el numero de bits
u8 = 8bits unsigned int

el equivalente de int o int8.


ZequeZ escribió:Asi que... Como hago para que me acepte decimales...?


Has probado utilizar una variable tipo float

float nombre_variable;

ZequeZ escribió:PD: Tampoco me deja dividir... smile_[mamaaaaa]


Si es posible hacerlo, se tienen las 4 operaciones basicas en C +,-,*,/. Las divisiones son muy lentas por el tipo de procesador del NDS.
fjppitta escribió:
es para indicar el numero de bits
u8 = 8bits unsigned int

el equivalente de int o int8.


Gracias por responder! Ahora lo comprendo ^^
Gracias [chulito] ahora pruebo con float en vez de s32 ^^

Pruebo y edito... ^^


EDITO: Funciono! Pero... Me queda una cositilla por preguntar ^^U... Donde dice: Pad.Held.Right/Left/Down/Up... Cuendo a esto lo divido 2, osea...

velx += Pad.Held.Right/2;
velx -= Pad.Held.Left/2;
velx*=0.97;
vely += Pad.Held.Down/2;
vely -= Pad.Held.Up/2;
vely*=0.97;

x += velx;
y += vely;


Luego la nave NO se mueve... Pero, si en vez de eso, hagoe sto...

velx += Pad.Held.Right*0.2;
velx -= Pad.Held.Left*0.2;
velx*=0.97;
vely += Pad.Held.Down*0.2;
vely -= Pad.Held.Up*0.2;
vely*=0.97;

x += velx;
y += vely;


Multiplicando... Funciona a la perfección! [agggtt]

Alguna idea de porque pasa esto?
Bueno, en la web que nos dio plata para "leer" ponia que las divisiones daban muchos problemas que no se debian usar o algo asi.....

En fin, no soy el más recomendable a ayudarte, vas por encima mia. XD
Pues tras tres horitas de trabajo (Uff [Ooooo] ) he hecho mi sistema operativo xD
Imagen
Lo de "POLO" se puede mover utilizando el pad, el ratón se mueve tocando la pantalla táctil y los iconos se pueden arrastrar a través del "escritorio" :Ð
Dejo la descarga del archivo .nds por si alguien lo quiere probar.
Descarga por mihd.
Descarga por mediafire.

PD: Si a alguien le interesa el codigo, que lo pida (seguro que no está muy bien estructurado xD).
PD2: Como véis en la captura, se me ven restos de magenta alrededor de los sprites, y eso que tenían fondo de magenta puro (debería desaparecer, no?) Cómo los puedo quitar?
PD3: Muchas gracias Plata, que sepas que sigo todos los tutos, y si quieres ideas para el siguiente... colisiones! Que con ellas ya se pueden hacer muchas cosas interesantes... (Al no ser que las tengas reservadas para más adelante).
ZequeZ escribió:Multiplicando... Funciona a la perfección! [agggtt]

Alguna idea de porque pasa esto?
Yo no tengo mucha idea (nada) de programación, pero...
si la variable es flotante no tienes que ponerle obligado el punto para que te la coja??

osea, poner padleft/2.; o poner padleft/2.0; ??
lo que es lento en procesar por la ds no son las divisiones, sino los floats...
polo_polo escribió:PD2: Como véis en la captura, se me ven restos de magenta alrededor de los sprites, y eso que tenían fondo de magenta puro (debería desaparecer, no?) Cómo los puedo quitar?


Eso es porque no debe ser magenta puro, es decir un color con el rojo y el azul al máximo ambos, y con el verde a cero. Tal vez tu "magenta" tenga una mínima componente de verde o le falte una mínima componente de azul o rojo. Compruébalo con Photoshop. Si no es eso, pues no sé. A mí me pasaba a veces tu problema y lo que ocurría era eso.
Imagen
El color está bien, lo único que se me ocurre es que como (se ve en la imagen aumentada) los bordes no están definidos del todo, puede que esas mezclas de negro y magenta no las elimine, como las puedo evitar? Hago las imágenes con phosothop, coloreo el fondo de magenta y en una capa superior ya pego lo que sea. Que médoto usáis vosotros?
Yo en un ejemplo tonto que hice puse el fondo de negro y después el negro transparente, y el sprite se veía perfectamente, lo malo es que tus sprites tienen negro...
Por cierto, tengo un lío de variables, bucles y etc... [agggtt]
A mí eso me pasa cuando reajusto el tamaño de la imagen después de ponerle el fondo magenta... La solución es poner el fondo magenta después de todos los reajustes que tengas que hacer, al final de todo.

Si no la estás reajustando, pues no sé... Cambia el color de los píxeles color magenta negruzco uno a uno. No se tarda tanto.
Hola, aquí uno más que sigue los tutos. Y otro voto más para hacer colisiones en el siguiente round, aunque supongo que tendrá bastante más miga de lo que parece. Buen trabajo Plata! [oki]

EDITO: me retracto. Antes que colisiones estaría bien que nos explicaras más en profundidad algunas cosillas básicas, como puede ser cómo se limpia la pantalla para poder poner un texto encima de otro texto, pero supongo que eso irá saliendo con la práctica
pedías sugerencias para siguientes turos...

por ejemplo... como crear carpetas y grabar en ellas, texto o dibujos y como recuperarlos

;)


gracias por los tutos, son muy buenos
scumm escribió:pedías sugerencias para siguientes turos...

por ejemplo... como crear carpetas y grabar en ellas, texto o dibujos y como recuperarlos

;)


gracias por los tutos, son muy buenos


xD no e enseñado casi cosas de la tactil y pretendes que enseñe fat? xDDDDDDDDDDDDDDDD
me parece asta temprano para enseñar colisiones...
los proximos los tengo ya pensados

7. Tactil avanzado

8. sonidos

9. sistemas de salida avanzados

10. colisiones faciles

11. 2d, uso de la gravedad, colisiones avanzadas

12. mas colisiones

13. contadores

14. dibujar en la tactil

15. ... fat?

faltan unos pocos xD

P.D: asta mediados de navidades o x hay vacaciones respecto a tutos en nds.
59 respuestas
1, 2