Anuncios Google

Problemas de principiante con Palib

Bueno, soy un principiante en este programa, y en un ejercicio que me he propuesto, me surgen problemas, ya sean técnicos que no localizo o de código que desconozco. Como hay que ver para creer, abajo les detallo el código, seguido de los problemas y qué pretendo que haga.

// Includes
#include <PA9.h>       // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "sonido.h"
// Function: main()
int main(int argc, char ** argv)
{
    PA_Init();    // Initializes PA_Lib
    PA_InitVBL(); // Initializes a standard VBL
   PA_InitSound();
    PA_LoadSpritePal(0,0,(void*)master_Pal);
    PA_CreateSprite(0,0,(void*)stop_Sprite,OBJ_SIZE_32X32,1,0,0,160);
    PA_CreateSprite(0,1,(void*)play_Sprite,OBJ_SIZE_32X32,1,0,222,160);
    PA_CreateSprite(0,2,(void*)medvol_Sprite,OBJ_SIZE_32X32,1,0,113,160);
    PA_CreateSprite(0,3,(void*)ranura1_Sprite,OBJ_SIZE_64X32,1,0,81,160);
    PA_CreateSprite(0,4,(void*)ranura2_Sprite,OBJ_SIZE_32X32,1,0,145,160);
    PA_InitText(1,0);
    PA_OutputSimpleText(1,0,0,"Reproductor de melodias Nintendo");
    PA_OutputSimpleText(1,17,2,"By Exterminator");
    PA_InitText(0,0);
    // Infinite loop to keep the program running
    while (1)
    {
    if((Stylus.X>0)&&(Stylus.X<32)&&(Stylus.Y>160)&&(Stylus.Y<192))
    {
       PA_ClearTextBg(0);
        PA_OutputSimpleText(0,3,4,"Toca stop para frenar la reproduccion");
        PA_SetSpriteAnim(0,0,1);
       PA_SetSpriteAnim(0,1,0);
       PA_PlaySimpleSound(0,sonido);
    }  
    if((Stylus.X>222)&&(Stylus.X<260)&&(Stylus.Y>160)&&(Stylus.Y<192))
    {
          PA_ClearTextBg(0);
        PA_OutputSimpleText(0,3,1,"Toca play para iniciar la reproduccion");
           PA_SetSpriteAnim(0,1,1);
        PA_SetSpriteAnim(0,0,0);
    }   
    PA_SetSpriteXY(0,2,Stylus.X-16,160);
   
        PA_WaitForVBL();
    }
    return 0;
} // End of main()

 

Problemas: Al pulsar el sprite play, debería reproducir sonido. Sin embargo, la primera vez no suena nada (aunque el resto de código funciona), y tengo que presionar stop y de nuevo play para que reproduzca. He de advertir que el sonido es una melodía.

                 Necesito que medvol se mueva únicamente por el eje X (eso lo consigo), PERO que no salga de X>81, X<177 (que se mueva sobre la ranura, vamos).

Por el resto el código cumple.

Espero respuestas, pues no sé solucionar 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.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de copete23

Hola, hay una funcion e

Hola, hay una funcion e palib para no tener que calcular los limites del sprite, se llama PA_SpriteTouched();

 

un ejemplo:

if(Stylus.Newpress && PA_SpriteTouched(numero sprite) {

reproducir sonido....

}

 

Stylus.Newpress // indica que se ha tocado la pantalla, tambien está Stylus.held, que significa "mientras la pantalla se este tocando"

PA_spriteTouched(numero) // indica el numero se sprite que estas tocando.

 

saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.