h1

Minijuego para nds: “disquete volador”

mayo 12, 2009


Probando PALib para la consola de Nintendo nds, he programado este minijuego consistente en tener que pulsar sobre el disquete que se mueve. (Más información sobre programar nds en nuestra sección).
El código fuente es el siguiente:

#include

// PAGfx Include
#include “gfx/all_gfx.c”
#include “gfx/all_gfx.h”
#include “moneda.h”
#include “zippo.h”

int i;

u32 pierdetiempo=300;
s16 puntos=0;
s16 vidas=3;
s32 bolax = 100;
s32 bolay = 100;
s16 velx=1;
s16 vely=1;
s32 disx;
s32 disy;

//Fonction principale du code
int main(void){

PA_Init(); //Initialision of PAlib
PA_InitVBL();

PA_InitText(0,0);
PA_InitText(1, 2);
//Inicializamos sonido
AS_Init(AS_MODE_SURROUND | AS_MODE_16CH );
AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND);

PA_EasyBgLoad(0, // screen
1, // background number (0-3)
ordenador); // Background name, used by PAGfx…
PA_EasyBgLoad(1, 3, nds_raultecnologia_256); // Same thing, but on the top screen…

PA_LoadSpritePal(0, // Screen
0, // Palette number
(void*)disquete2_Pal); // Palette name

//Create the sprite
PA_CreateSprite(0, 0,(void*)disquete2_Sprite, OBJ_SIZE_64X64,1, 0, 0, 0);

void comienzo()
{
pierdetiempo=300;
puntos=0;
vidas=3;
bolax = PA_RandMinMax(2,100);
bolay = PA_RandMinMax(2,60);
velx=1;
vely=1;
PA_OutputSimpleText(1,10,5,” “);
PA_OutputSimpleText(1,1,6,” “);
PA_OutputText(1, 0, 22, “Puntos: %d “, puntos);
PA_OutputText(1, 0, 23, “Vidas: %d “, vidas);
}

void fin()
{
PA_PlaySimpleSound(moneda);
while(Pad.Newpress.A==0)
{
PA_OutputSimpleText(1,10,5,”*** FIN ***”);
PA_OutputSimpleText(1,1,6,”Pulsa la tecla A para empezar”);
}
comienzo();
}
comienzo();

while(1){ // Main loop

if (Stylus.Newpress)
{
disx=(bolax+32)-Stylus.X;
disy=(bolay+32)-Stylus.Y;
if ((disx*disx)<1024 && (disy*disy)<1024)
{
puntos = puntos+1;
PA_OutputText(1, 0, 22, “Puntos: %d “, puntos);
pierdetiempo=pierdetiempo/1.1;
PA_PlaySimpleSound(zippo);
PA_WaitForVBL();
bolax = PA_RandMinMax(2,100);
bolay = PA_RandMinMax(2,60);
velx=-velx;
vely=-vely;
}
else
{
vidas = vidas -1;
PA_OutputText(1, 0, 23, “Vidas: %d “, vidas);
PA_WaitForVBL();
}
}

if (vidas<1)
{
fin();
}

if(bolax == 1)
{
velx=-velx;
}

if (bolay == 1)
{
vely=-vely;
}
if (bolay == 127)
{
vely=-vely;
}
if(bolax == 191)
{
velx=-velx;
}

// Update the position according to the keypad…
bolax=bolax+velx;
bolay=bolay+vely;

// Set the sprite’s position
PA_SetSpriteXY(0, // screen
0, // sprite
bolax, // x position
bolay); // y…
for (i=0; i < pierdetiempo ;i++)
{
PA_OutputText(1, 0, 22, “Puntos: %d “, puntos);
//PA_WaitForVBL();

}
}
return 0;
}

Anuncios

2 comentarios

  1. hola profe, soy un alumno tuyo al que dijiste que en este juego no iba a pasar del nivel 6 o 7. Pues llegue al 13. Bueno profe pero lo que quería decir ees que este juego esta muy bien y me gusta. A ver cuando nos pones nuevos retos.
    Hasta el jueves depues del recreo


  2. Nuevos (y reales) retos los tienes en la sección de acertijos (arriba a la derecha en el blogroll, InformáticaRiddle) :

    http://es.geocities.com/informaticariddle/index.htm

    saludos,

    raúl



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s