Hola a todos, necesito que me ayudeis con dos dudas que me han surgido con PAlib
1.¿Se puede hacer que dos sprites, cuando se acerquen, se junten?y si se puede, ¿cómo?
2¿Cómo se puede hacer que al tocar un botón se cambie de color con el que se pinta?
Gracias por adelantado
Gracias por la firma The Dark Master
¿hay alguien ahi que me
¿hay alguien ahi que me pueda responder?
Necesito ayuda, por favor !!!
wolas sergiog12, se me
wolas sergiog12,
se me ocurren 2 soluciones a tus preguntas.
*1.¿Se puede hacer que dos sprites, cuando se acerquen, se junten?y si se puede, ¿cómo?
yo haria colisiones, si 2 sprites se tocan, los borro y creo el nuevo sprite que simboliza a esos 2 juntos
*2¿Cómo se puede hacer que al tocar un botón se cambie de color con el que se pinta?
nose como nadie se ha dado cuenta, de que existen 3 variales muy majas que tienes declaradas al principio, (r,g,b)
para cambiar el color a verde haz esto:
y ya esta(si solo quieres cambiar el color al pulsar Y, haz eso, cambias el color y olvidate de un
PA_16bitDraw(...) que ya tienes uno que dibujara siempre al principio del whileGracias a los dos, acabó de
Gracias a los dos, acabó de probar lo que me decís, y funciona lo que me decís los dos, tanto best_guitar , como wiso_power, lo que pasa es que en el código de best_guitar, he quitado el else para pintar siempre de verde
Gracias a los 2 otra vez
Gracias por la firma The Dark Master
Sobre la pregunta de juntar
Sobre la pregunta de juntar los sprites, como te dije, utiliza la funcion PA_Dist, busca informacion sobre esta función y trata de comprenderla, luego estará todo hecho.
Y sobre los colores si te dibuja primero en verde y luego en negro es que no lo utilizas bien en el bucle de programa. supongo que para eso tienes que cambiar el color determinado o poner otra variable que sea color actual y que dibuje este color permanentemente.
Tal vez, deberias pegar el codigo que crees que falla y puede que veamos el fallo... Pero es importante entender PA_Dist para las colisiones primero.
Saluds!
Visita mi blog. Zenit + 5 will win
Con lo de PA_Dist, todavía
Con lo de PA_Dist, todavía no me he puesto porque he intentado solucionar lo de los colores.
Dejo aquí el código de los colores, haber si podeis ver el fallo:
Gracias por la firma The Dark Master
en if(Pad.Newpress.Y)
en
if(Pad.Newpress.Y)g=255;
else
g=0;
edito: Pad.Held.Y como deciamos al principio.
Gracias, best_guitar
Gracias, best_guitar, pero no funcionó, ni lo que me dijistes tú, ni lo que dijo exterminator..
¿Puede ser que no funcione porque lo estoy probando con iDeaS y no con una DS?
Gracias por la firma The Dark Master
yo lo he probado y me
yo lo he probado y me funciona.
has puesto el Held?
el codigo entero es este...
// Includes
#include <PA9.h> // Include for PA_Lib
s32 r = 0; s32 g = 0; s32 b = 0;
// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
PA_Init16bitBg(0, 3);PA_Init16bitBg(1, 3);
PA_SetBgColor(0, PA_RGB(31, 31, 31));
// Infinite loop to keep the program running
while (1)
{
PA_16bitDraw(0,PA_RGB(r,g,b));
// si pulsamos "B" borramos la pantalla
if (Pad.Newpress.B){
PA_Clear16bitBg(0);
}
if(Pad.Held.Y) g=255;else g=0;
PA_WaitForVBL();
}
return 0;
// End of main()
}
Visita mi blog. Zenit + 5 will win
Tu error está
en que en tu código, sólo cambias el color mientras pulsas Y. Mejor pon esto:
Salu2
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.
Gracias, exterminator
Gracias, exterminator, ahora mismo lo pruebo y te cuento.
No has sido muy concreto con
No has sido muy concreto con la explicación, pero a ver si te ayudo...
1)deberias detectar la distancia entre ambos(PA_Dist), si llega a tal distancia, poner un sprite al lado del otro. Si el sprite 1 tiene un ancho de 32 poner el sprite 2, asi:
sprite2.x=sprite1.x+32 //32 o menos segun el dibujo que quieras juntar, ese valor lo puedes ir probando hasta que quede bien.
sprite2.y=sprite1.y
2) puedes detectar la pulsacion del boton y despues cambiar el color de pixel
if(Pad.Held.X)
PA_Put16bitPixel
(u8 screen, s16 x, s16 y, u16 color);//color obtenido de PA_RGB(red,
green, blue);
esto debe ir con fondo de 16bit.
Saluds!
Visita mi blog. Zenit + 5 will win
muchas gracias.¿pero como
muchas gracias.
¿pero como hago para que pinte de un color distinto al anterior botón?
haber si me explico,que si pulsa b se ponga azul, y que si pulso y se ponga verde
EDIT: ¿os importaría ponerme un ejemplo con cada uno?
gracias por adelantado otra vez
Gracias por la firma The Dark Master
asi:
if(Pad.Held.B) PA_Put16bitPixel(0,posicionPuntero.x, posicionPuntero.y, PA_RGB(0,0,255); // de color azul(B)
if(Pad.Held.Y) PA_Put16bitPixel(0,posicionPuntero.x, posicionPuntero.y,
PA_RGB(0,255,0); // de color verde (G)
donde posicionPuntero es una estructura que guarda la posicion actual del pixel donde si quieres, pulsando un boton, puedes pintar.
No lo he probado pero tiene que ser algo así...
Visita mi blog. Zenit + 5 will win
No funciona
no funciona, así que he intentado esto, que tampoco funciona:
Le he cambiado Held por Newpress, ya que Held lo que hacía era pintar un punto verde al presionar el Y, pero una línea no la pinta, la pinta de negro, el color que he pusto como predeterminado.
También he cambiado Held por Newpres por otra razón, que no haya que tener pulsado el botón para pintar de otro color, pero con Newpress no funciona nada.
¿Qué puedo hacer para que deje de pintar negro y pinte de otro color?
Gracias por la firma The Dark Master
haber..
mira, dentro del While pon esto:
if(Pad.Newpress.B){
PA_SetTextTileCol(0,//Pantalla
5//Color (del 1 al 9)
);
}
if(Pad.Newpress.Y){
PA_SetTextTileCol(0,//Pantalla
2//Color (del 1 al 9)
);
}
RECUERDA: que esto es solo para la pantalla de abajo, si es para los textos de la pantalla de arriba pon:
if(Pad.Newpress.B){
PA_SetTextTileCol(1,//Pantalla
5//Color (del 1 al 9)
);
}
if(Pad.Newpress.Y){
PA_SetTextTileCol(1,//Pantalla
2//Color (del 1 al 9)
);
}
Espero haberte ayudado
Desarrollando Super Mario Galaxy DS
http://SceneGames.byethost10.com <--MI WEB OFICIAL
Gracias, Frøsκitø
Gracias, Frøsκitø, eso de la letras también me sirve, pero yo lo que busco es que al pulsar esos botones, el stylus pinte de un color o de otro.
Bueno, eso que me has dado lo copio, porque también lo pensaba usar en mi proyecto. Gracias
Gracias por la firma The Dark Master
ya ya me he dado cuenta
sorry, no leí bien, aunque lo del texto por lo menos ya lo tienes solucionado
Gracias a los dos
Gracias otra vez
Y muchas gracias también a best_guitar, sorry, no vi tu respuesta
Muchas gracias a los dos por la ayuda
Ahora mismo lo voy a probar best guitar, ya te contaré si funciona.
PD: ¿Os importaría ponerme un ejemplo de los de juntar sprites? por favor?
Gracias por la firma The Dark Master