Ayuda con Palib para juego

Buenas noches reyes de la programacion.


He seguido los tutoriales de Plata para aprender un poco de Palib, me ha resultado facil porque aparte de estar perfectamente explicado he estudiado este año C (en el primer curso del modulo de desarrollo de aplicaciones informaticas), por lo que mas o menos (mas bien menos) me defiendo. Bueno, al grano:

Queria pediros una pequeña ayuda porque he empezado un jueguecillo simple pero que me esta dando problemas. Imagino que la solucion sera facilisima pero estoy bloqueado y no se me ocurre como hacerlo.
Es facil, lo que quiero es: sale una imagen, me da 2 opciones, elijo 1 (con el stylus o el pad, me da igual), salen algunas imagenes mas y me vuelve a dar a elegir entre 2 opciones nuevas, elijo 1...asi todo el rato, con cada accion cambia la historia, las imagenes, las opciones... se que puede resultar un juego muy aburrido, pero es lo que me gustaria hacer ahora mismo.

Logicamente no os pido el codigo, sino alguna idea sobre como hacerlo, si existe alguna opcion para borrar lo seleccionado antes o algo asi.

Se que es una chorrada pero algo asi es lo que habia hecho yo

Si
...doy boton derecho del pad
..........sale una imagen (1a)
..........Si doy boton derecho del pad
.................sale una imagen (2aa)
..........Si doy boton izquierdo del pad
.................sale una imagen (2ab)
...doy boton izquierdo
..........sale una imagen (1b)
..........Si doy boton derecho
.................sale una imagen (2ba)
..........Si doy boton izquierdo del pad
.................sale una imagen(2bb)

Pongo puntos porque no me funciona el tabulador. Lo he intentado con un "switch" pero no lo he conseguido.

El problema como muchos habreis deducido ya es que cuando doy boton derecho en la primera decision en vez de salirme la imagen "1a" me sale directamente la "2aa", uso "Held" para utilizar el pad (por si sirve de algo).

Siento mucho el tocho, pero si alguno me pudiera ayudar le estaria muy agradecido.
Yo no tengo ni idea de PAlib ni de C, pero en otros lenguajes eso se debería de solucionar poniendo un poco de margen entre pulsación y pulsación, porque si no directamente comprueba si está pulsado, y como lo acabas de apretar detecta que sí. Pon que espere unas frames, de margen para soltar, y luego que siga el código =D

Suerte
Muchas gracias por la idea, luego la pondre en practica. Imaginaba que con algo simple se podia solucionar. Mil gracias por contestarme. Si a alguien se le ocurre algo mas lo agradeceria enormemente. Mil gracias DiegoX
zapatavendett escribió:... uso "Held" para utilizar el pad (por si sirve de algo).

¿Has probando usando NewPress?
Muchas gracias a ti tambien Serede, he probado lo de los 2 y sigo sin poder, empiezo a desesperarme. Gracias de todos modos
Aver... Pero lo que tú quieres hacer es que si pulsas una tecla y luego pulsas otra haga cierta cosa...¿Cierto? Para eso tienes que pensar un poquito. Tienes que hacer primeras condicionales dentro de otras. Es decir:
if(Pad.Newpress.Right)
{
Crear imagen 1a;
if(Pad.Newpress.Right) Crear imagen 2aa;
if(Pad.Newpress.Left) Crear imagen 2ab;
}
if(Pad.Newpress.Left)
{
Crear imagen 1b;
if(Pad.Newpress.Right) Crear imagen 2ba;
if(Pad.Newpress.Left) Crear imagen 2bb;
}
Eso si no me equivoco es lo que he hecho ya, os dejo el codigo. Siento ser pesado. Muchas gracias a todos.
#include <PA9.h>   
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

void esperar(u8 segundos) {
    u16 cuenta = 1;
    while (cuenta<(segundos*60)) { cuenta++; PA_WaitForVBL();}   
}

int main(int argc, char ** argv)
{
   PA_Init();   
   PA_InitVBL();
   PA_InitText(0,0);
   PA_EasyBgLoad(1,3,bg00);
   esperar(2);
   PA_OutputSimpleText(0,10,5,"Una fria noche...");
   esperar(2);
   PA_ClearTextBg(0);
   PA_EasyBgLoad(0,3,bg0)
   esperar(2);
   PA_EasyBgLoad(1,3,bg1);
   esperar(2);
   PA_EasyBgLoad(0,3,negro);
   PA_InitText(0,2);
   PA_OutputSimpleText(0,5,5,"Coger telefono");
   PA_OutputSimpleText(0,5,15,"Ignorar");

   while (1)
   {
      
   if(Pad.Newpress.Right) {
      PA_EasyBgLoad(0,3,bg1);
      esperar(2);
      if(Pad.Newpress.Up) PA_EasyBgLoad(0,3,bg00);      
   }      
   
   if(Pad.Newpress.Left)PA_EasyBgLoad(1,3,negro);   

   PA_WaitForVBL();
   }
   
   return 0;
}


Seguramente el error sera monumental pero no consigo verlo. Muchas gracias
Si me das un tiempo te hago un código para mañana. No es muy complicado. Programar no es muy dificil, pero hay que darle mucho al coco.
Bufff, pues te lo agradeceria muchisimo porque estaba apunto de tirar la toalla. Estoy seuro de que no debe ser algo muy dificil pero estaba atascado. Muchas gracias por ayudarme.
8 respuestas