Anuncios Google

Programación - Tipos de Variables y Primer contacto con las funciones PAlib

Tutoriales avanzados de Homebrewes

En esta segunda parte del tutorial vamos a explicar los tipos de variables y algunas funciones de PAlib.

Si quieres ver teoría sobre las variables y lo que ocupan lean esto: Tipos de Datos(Tutorial por Tanos)

 

Lo primero de todo: ¿Qué tipos de variables existen?:

  • int: O Entero(En inglés Integrer). Almacena un número entero de -32768 a +32767. Ocupa 16 bits en memoria. Los números que almacena no pueden contener decimales
  • float: O Flotante. Almacena un número con decimales con 7 dígitos de precisión. Ocupa 32 bits en memoria.
  • double: Un número décimal de doble precisión, hasta 13 dígitos. Ocupa 64 bits en memoria. Puede almacenar decimales.
  • char: O Caracter. Almácena un sólo caracter. O un número entero. Ocupa 8 bits en memoria. No puede almacenar decimales. Para declararla: char nombrevariable = "letra";
  • void: Tipo personalizado. Es una funcion como main. Se explica a continuación.

Con todos estos tipos de variables se pueden hacer sumas, restas, multiplicaciones, divisiones, comparaciones, etc.

Las variables del tipo void albergan unas acciones definidas por el usuario. Puede contener tantas acciones como se desee.

Como declarar variables:

Para declarar variables es necesario poner antes el tipo de variable. Por ejemplo:

int nombre_variable = valor;

Empezando con códigos:

La base en código de todo programa es esta:

#include <PA9.h>//Se incluye la libreria que hace que PAlib funcione
 
int main(){//Aquí se inicia una funcion, como ven es un int
 
PA_Init();//Aqui se inician las librerias PAlib
 
PA_InitVBL();//Aqui se inicia un bucle de PAlib, el cual hace que funcione bien el programa
 
while(1){//Aqui se crea un bucle el cual mientras el valor que tiene dentro del parentesis sea así hace lo que tiene dentro
 
PA_WaitForVBL();//Aqui se hace uso del bucle iniciado anteriormente para mantener el programa funcionando
 
}
 
return 0;//Aqui se devuelve unvalor
 
} //Se cierra el main

Si lo compilan podrán comprobar que no se ve nada. Pero gracias a eso un programa se puede mantener en funcionamiento en la NDS.

Funciones de Texto:

Como todos saben todos/casi todos los programas escriben texto plano en pantalla. Las funciones que se definen a continuacion son simples.

Lo primero para poder dibujar texto en una pantalla deberán poner:

PA_InitText(pantalla,fondo_elegido);

Donde pone pantalla deberán escribir un número(0 o 1) el cual corresponde a una pantalla de la Nintendo DS.

1: Pantalla de arriba

0: Pantalla de abajo

Donde pone fondo_elejido deben escribir un número del 0 al 3. Por el momento esto no lo explicaré a fondo pues en este capítulo no usaremos los fondos.

Despues de iniciar el texto ya pueden escribirlo en pantalla.

Hay dos maneras:

Simple y Con Variables

La simple es así:

PA_OutputSimpleText(pantalla,posicionx,posiciony,"texto entre comillas");

En pantalla ponen el número correspondiente a la pantalla elejida. en posicionx ponen un número de 0-255 y en posiciony ponen un número de 0-191.

Donde pone texto entre comillas ponen el texto que quieren que muestre en pantalla. El texto que escriban debe de ir entre comillas, porque si no el compilador lo interpreta como una variable y dice que no existe.

La compuesta es así:

PA_OutputText(pantalla,posicionx,posiciony,"Posicion 1 : %d Posicion 2 : %d", variable1, variable2);

Como observan aquí existen más argumentos.

Si leen detenidamente puse %d esto se usa para mostrar el valor de una variable del tipo double.

Para mostrar otro tipo de varible solo cambien esa d por la primera letra del tipo de variable.

Para mostar un float deberán poner después de %f un número, el cual será los decimales que se mostrarán.

Donde pone variable1 lo reemplazan por el nombre de la variable. Se pueden mostrar solo 1 o más de dos a la vez, siempre y cuando estén separadas por una coma y un espacio.

Ojo. Para los char no podrás usar %c deberás usar %s.

Funciones de Sprites:

 Los Sprites pueden ser de tres modos de color diferentes:

  • Paletas de 16 colores, con un total de 16 paletas diferentes por pantalla. Esto se usaba mucho en GBA, pero prácticamente desapareció en la DS
  • Paletas de 256 colores (mucho mejor, pero necesitan el doble de memoria), con un total de 16 paletas diferentes por pantalla (la GBA tenia solo una). Esto es lo que más usarás...
  • Sprites de 16 bits, sin utilizar paleta. Estos sprites no se usan demasiado, ya que utilizan incluso más memoria de video, y de hecho necesitan demasiado espacio como para usarlas a menudo.

Todos los Sprites deben tener este tamaño. A diferencia del PC o posiblemente, de otras consolas, la NDS tiene una limitación en cuanto al tamaño de los Sprites.

  8 16 32 64
8 8×8 16×8 32×8  
16 8×16 16×16 32×16  
32 8×32 16×32 32×32 64×32
64     32×64 64×64

Los Sprites no se pueden usar así tal cual, hay que convertirlos al formato de la NDS por lo que, para convertirlos debemos ir a C:\devkitPro\PAlib\Tools\PAGfx luego copiamos el contenido de la carpeta, nos vamos hacia nuestro proyecto y abrimos la carpeta source creamos una llamada gfx y lo pegamos dentro.

Ahora iniciamos el PAGfx Fronted. Damos en Add Images/Files y buscamos los sprites que queremos agregar. Luego en la derecha podemos elejir el color tansparente. Solo se puede Magenta, Blanco y Negro. Cuando hayamos añadido los sprites que queramos damos en Save and Convert.

Una vez termine ya tendremos nuestros sprites convertidos completamente.

Como dibujar el Sprite en Pantalla:

Lo primero de todo será añadir esto debajo de #include <PA9.h>:

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

Luego para dibujar el Sprite:

Primero de todo cargamos la paleta:

PA_LoadSpritePal(pantalla, idpaleta,(void*)nombresprite_Pal);

En pantalla se debe poner un número(0 o 1) que será la pantalla. En idpaleta deberemos poner el ID de la paleta, esto se usará para:

Cuando cargamos una paleta hay que asignarle un número para que al crear un Sprite podamos usar ese número para acceder a la paleta, de lo contrario el Sprite no se dibujaría o no se vería bien.

Nunca puede haber dos paletas con el mismo número.

Luego pone (void*) eso no lo quiten si no no podrán usarlo, luego donde pone nombresprite introducen el nombre del Sprite sin quitarle _Pal.

Luego para crear porfin el Sprite:

PA_CreateSprite(pantalla,idsprite,(void*)nombresprite_Sprite,OBJ_SIZE_TAMAÑO,1,idpaleta,posicionx, posiciony);

Los dos primeros argumentos ya sabrán, pero les explico:

En pantalla ponen el número de la pantalla. En idsprite(se usa para lo mismo que el idpaleta de la funcion PA_LoadSpritePal)ponemos el ID del sprite el cual se identificará por este número.

Luego pone (void*) eso no lo quiten si no no podrán usarlo, luego donde pone nombresprite introducen el nombre del Sprite sin quitarle _Sprite.

en OBJ_SIZE_TAMAÑO sustituyen TAMAÑO por uno de los tamaños especificados anteriormente.

Ese 1 lo dejamos así.

En idpaleta ponemos el número que le asignemos anteriormente a la paleta. Luego en posiciónx ponen la posicion horizontal en la que quieren que salga y en posiciony la posicion vertical en la que quieren que salga.

No se si las explicaciones serán las más acertadas, pues tampoco soy profesional en esto.

4.133335
Tu voto: Ninguno Votos totales: 4.1 (45 votos)

Anuncios Google

Comentarios

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.

Problema

Bien, el tutorial "lo he pillao", pero no encuentro el programa para codear. En PC usaba el Dev-C++, pero aquí no existe el programa que se usaba (vham). ¿Dónde está el programa para codear?


Draven no, DRAAAAAAAAAAAAAAAVEN.

Imagen de Anabol

Se llama programmers notepad,

Se llama programmers notepad, pero puedes usar un bloc de notas perfectamente.

Salu2tS!

Imagen de Draco el dragon

Eso...

es para el PAlib...

Si no sabes nada de programacion, no tienes nada que hacer con eso...

Imagen de Draco el dragon

Eso no es programar...

Eso es coger un example de cualquier tutorial y compilarlo...

Si no sabes de C o C++, olvidate...

Imagen de Draco el dragon

No intento desanimarte...

Pero ten en cuenta que programar es mucho mas dificil que compilar un Hello World. Por algo se empieza, si, pero lo mejor es siempre empezar aprendiendo C o C++, ya que es muy facil agobiarse si empiezas sin programar...

Imagen de Draco el dragon

Aqui va...

El rincon del C, ahi puedes aprender C y C++ muy facil (dentro de lo que cabe...).

Que tal me gusto mucho el

Que tal me gusto mucho el tutorial solo que no puedo utilizar sprites, hago lo que dice pero no puedo correr el programa PAGfx Fronted, ya que cada que lo intento correr me dice que no se encuentra el directorio o algo asi y ahi otro parecido que se llama PAGfc Fronted (algo asi) y ese si lo abre pero cuando quiero convertir un sprite para que funcione en la ds me dice que hay un error....estoy haciendo algo mal o que onda??

 

les agradesco la ayuda...

Saludos!!!

 

"Walter"

 

Edit: ya pude...no se como pero ya pude =D

Imagen de Temporalin

No es que yo sepa mucho de

No es que yo sepa mucho de C, pero me lío un montón. ¿Con qué programa hago los sprites?

Imagen de minichusco13

en partes como esta:

En pantalla ponen el número correspondiente a la pantalla elejida. en posicionx ponen un número de 0-255 y en posiciony ponen un número de 0-191.

 

que pongo el numero que quiera?


¡Ayuda a mi bruto! http://Minichuscoo.ElBruto.es/

Imagen de Almamu

Me pueden dar permisos para

Me pueden dar permisos para poner todos los códigos con la etiqueta code ?

Imagen de Bruga

Vale estoy siguiendo tu tuto para un sprite nuevo

EDITO:

u8 posx =112;

u8 posy =80; 

PA_EasyBgLoad(0, 3, fondo);

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

PA_CreateSprite(0,1,(void*)heroe_Sprite, OBJ_SIZE_32x32, 1, 0, posx, posy); 


Esto es lo que tengo y al compilar me da error

 

EDITADO por RuGuEr: El uso abusivo de negrita no está permitido. Por favor, revise las normas de la comunidad. Gracias.

 

 

 

 


Code Geass

Imagen de RuGuEr

Lo siento pikus, pero no por

Lo siento pikus, pero no por que seas editor tienes derecho a abusar de la negrita.

Imagen de Almamu

u8 posx = 112; u8 posy =

u8 posx = 112;

u8 posy = 80;

PA_EasyBgLoad(0,3,fondo);

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

PA_CreateSprite(0,1,(void*)heroe_Sprite, OBJ_SIZE_32X32, 0,0,posx, posy);

Supongo que así irá bien. De todas maneras mandame el error que te da al compilarlo.

Ten en cuenta que el Sprite heroe debe de ser de las proporciones(ancho x alto)que indicas en OBJ_SIZE_32X32 sea de 32 x 32 recuerda que todos los sprites deben de tener una proporcion determinada.


Imagen de Bruga

me sale el mismo error.... :'(

Aqui lo tienes:

 

Link para verlo mejor:    http://img7.imageshack.us/img7/158/pantallaerror.jpg

Imagen de The Dark Master

Vamos a ver en las acciones

Vamos a ver en las acciones que trae palib no puedes cambiar ni una sola palabra,ni siquiera una sola mayuscula si no no te reconoce el codigo.

Lo que quiero decir es que la X que hay entre los dos 32 esta en minuscula y es en mayuscula seria asi:

OBJ_SIZE_32X32

Por esa tonteria ya no ha podido reconocerlo,lo que no se es como los demas que lo habeis visto antes que yo no lo hayais notado,creia qeu el mas n00b era yo...

salu2


Imagen de Almamu

Si que lo note, en el codigo

Si que lo note, en el codigo que yo le di biene con la X en mayuscula.

Imagen de The Dark Master

Si pero lleva 2 dias

Si pero lleva 2 dias programando,si no le indicas el error de primera no lo puede ver,aunque no pasa nada ya esta solucionado.

salu2


Imagen de Bruga

Problema

Otro problem:

 

Aki teneis:    http://img188.imageshack.us/img188/25/problemau.jpg

Imagen de The Dark Master

Ya veo que nadie lo sabe asi

Ya veo que nadie lo sabe asi que te contestare yo(al estilo house):

Suponiendo como nos dice el error,el sintoma se encuentra en un bitmap que al parecer tiene problemas con la paleta,si te das cuenta el bitmap no esta en la carpeta gfx porque pagfx te lo habria denegado(ya sabemos como es pagfx con estos asuntos),tampoco podria haber sido el codigo porque lo habria informado de otra manera,a sido en el momento final cual el nds ya estaba casi listo asi que el bitmap que solo a podido ser es el ¡¡LOGO.bmp!! el cual solo permite 16 colores,en un intento de perfeccion del logo habras puesto mas colores y habras chafado el compilado final,el causante de los sintomas es una paleta que pasa de la raya.Guiño

Salu2


Imagen de Bruga

Vale ya va gracias ;)

Ya ta ^^

Gracias

Imagen de exterminator

El mismo error te lo dice

a un tal Bitmap (tu sabrás lo que es) no le declaraste la paleta.

Si es lo que antes llamabas heroe_Sprite, después del OBJ_SIZE_32X32 va 1,0 no 0,0

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.

Imagen de The Dark Master

¿Estas seguro?el heroe no

¿Estas seguro?el heroe no tiene porque ser un bitmap (ya esto ydando demasiadas pistas).

salu2

Imagen de Bruga

Gracias

Ahora pruebo y te digo ;)

Salu2 y Graxias ^^

 

EDITO: No funciona, mismo error :(

Imagen de exterminator

Si nos aclaras

qué es el Bitmap, a lo mejor veríamos mejor el error.

Salu2

Imagen de The Dark Master

Facil facil!!

Aja ,ya lo he vistoGuiño,pero voy a esperar para dejar tiempo a los demas coders,no quiero ser el unico que le conteste,pero si nadie sabe el error te lo digo tranquilo =D.

salu2


Imagen de exterminator

Por un casual

incluirías el all_gfx.c y all_gfx.h en los include, ¿verdad?

Imagen de Bruga

si ya estan

Si ya estan incluidos ;)

Salu2

Imagen de exterminator

Entonces

lo único que se me ocurre es que no puedes usar el mismo nombre para el sprite y para la paleta, porque lías términos. Prueba a cambiar el nombre al sprite, y después vuélvelo a transformar con el PAgfx (si es el que usas).

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.

Imagen de Almamu

El nombre del Sprite y de la

El nombre del Sprite y de la Paleta siempre son los mismos, solo que con el prefijo _Sprite o _Pal.

Y perdon que no respondiera, estaba viendo una cosa.


Imagen de Bruga

sorry por la negrita

que no se me quita noseporque... :S

 

Imagen de Tanos

Gracias

Gracias por linkear a mis tutoriales (a los de toda la comunidad pues :P).

Saludos tío.

Imagen de xx.zodiark.xx

Esto parece

Esto es muy parecido a un script del Second Life.

Imagen de Almamu

¿A qué te refieres con muy

¿A qué te refieres con muy parecido?

Esto es PAlib.

Muchas Gracias...

No se cunato llevas haciendo los tutoriales pero algo si te digo MUCHAS GRACIAS!!! por mi falta de tiempo habia leido los tutos de la página oficial de PAlib pero no entiendo mucho de ello y me hice un lío...

 Ahora estoy con un proyecto en mente y me falta bastante para aprender a programarlo, con estos tutos espero poder comprender bien los datos y poder así realizar mi proyecto.

no me sale:(

porfavor diganme lo que pasa...

no me va... e copiado lo que decias mas arriba:

#include <PA9.h>
int main(){
PA_Init();
PA_InitVBL();
While(1){
PA_WaitForVBL();
}
return 0;
}

pero al darle a build... me da error

que pasa?

Imagen de Almamu

Aver lo primero While es sin

Aver lo primero While es sin mayuscula:

while(1){

si te fijas en el tutorial está en minuscula...

Simplemente con que cabies eso funcionará.

Es porque lo identifica como una declaración implícita de while y luego como variable...


Imagen de Loky32

pregunta

que programa hay que iniciar para empezar a escribir ???

 

y como compilo??

Imagen de Neo_Ace

Empieza desde cero, verás

Empieza desde cero, verás los programas necesarios.

Yo por ejemplo hasta lo de

Yo por ejemplo hasta lo de hello world lo he copilado bien, el problema es que no veo nada donde poder empezar a escribir codigo... (Y he dado vueltas y vueltas por las carpetas)

Imagen de Draco el dragon

No se si te refieres

a archivos (main.c, otros archivos para hacer lo de multiarchivo...) o a un programa con el que codear.

Si es lo primero, estan en la carpeta source del proyecto. Si es lo segundo, busca el vham en la carpeta tools de la carpeta PAlib, dentro, a su vez, de la carpeta devkitpro, aunque no se si la ultima version lo incluye. Sino lo incluye, busca por la seccion de PC, que seguro que habra algun programa...

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.