Bobby Sixkilla
19/09/2006, 01h12
Afficher des scores avec ses propres sprites
Auteur : Alto
Voilà le code pour afficher un score avec ses propres sprites. Ici, c'est un score à 4 chiffres. Je ne vous fais pas l'affront de vous filer mes table de caractères dessinées par moi sous Paint et ne comportant que les chiffres de 0 à 7.
// Un include pour les gouverner tous
#include <mygba.h>
// Les petites images (table de caractère et palette)
#include "gfx/object.pal.c"
#include "gfx/chiffres.raw.c"
// Les variables globales
u8 position1; //les 4 chiffres du scores
u8 position2; //
u8 position3; //
u8 position4; //
u16 score=5555; // un score réalisé moi meme sur un jeu assez bien dur quand même
u16 ScoreTemp=0; // Ca va servir à pas réecrire le score s'il ne change pas
// Prototype des fonctions
void vbl_func();
void query_buttons();
void AfficheScore();
// main() qui l'eu cru..
int main()
{
// HAMlib
ham_Init();
// background mode
ham_SetBgMode(1);
//Palette de nos 4 sprites (les 4 chiffres)
ham_LoadObjPal((void*)object_Palette,256);
// Et boum on rentre les 4 sprites dans la gba
// pensez à changer les donnés si vos chiffres ne sont pas
//en 64*64 pixels
position1 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,130,50);
position2 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,100,50);
position3 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,70,50);
position4 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,50,50);
// Le truc qui se déclenche toutes les images
ham_StartIntHandler(INT_TYPE_VBL,(void*)&vbl_func);
// loopinge ad vitam eternam
while(1) {}
return 0;
} // fin du main() waou
//**********************
// Fonction: vbl_func()
// But dans la vie: se lancer a chaque rafraichissment d'image
//**********************
void vbl_func()
{
ham_CopyObjToOAM(); //affiche nos 4 sprites sur l'ecran
query_buttons(); // ca sert que pour la démo en fait : pour faire varier le score manuelement
AfficheScore(); //la fameuse fonction...
return;
} // fin de vblFunc()
//******************************
// Fonction: query_buttons()
// But : regarde tes doigts
//******************************
void query_buttons()
{
// pad vers le haut
if(F_CTRLINPUT_UP_PRESSED)
{
if (score < 9999)
score++; // on fait monter le score
return;
}
// pad vers le bas
if(F_CTRLINPUT_DOWN_PRESSED)
{
if (score > 0) score--; // et la descendre
return;
}
return;
} // fin de query_buttons()
//******************************************
// Fonction: AfficheScore() *
// Utilité : Affiche score avec des sprites*
//******************************************
void AfficheScore(){
int chiffre1,chiffre2,chiffre3,chiffre4; //variable locale elle servent que là en fait
if(score != ScoreTemp)// ne se lance que si le score a changé
{
chiffre1=score%10; //un peu de logique explique ces 4 lignes
chiffre2=((score%100) - (score%10))/10;
chiffre3=((score%1000) - (score%100))/100;
chiffre4=((score%10000) - (score%1000))/1000;
ham_UpdateObjGfx(position1,//sprite du 1° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre1]); //découpe le sprite correspondant au chiffre 1 de 64*64 pxl
ham_UpdateObjGfx(position2,//sprite du 2° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre2]);//découpe le sprite correspondant au chiffre 2 de 64*64 pxl
ham_UpdateObjGfx(position3,//sprite du 3° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre3]);//découpe le sprite correspondant au chiffre 3 de 64*64 pxl
ham_UpdateObjGfx(position4,//sprite du 4° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre4]);//découpe le sprite correspondant au chiffre 4 de 64*64 pxl
}
ScoreTemp=score; // enregistre le score actuel pr verifier à la prochaine boucle qu'il a changé
//en mettant de 00 a 99 sur une table tu gagnes 4 lignes et 2 sprites en moins
//(et encore plus si les scores sont gros)
}
Auteur : Alto
Voilà le code pour afficher un score avec ses propres sprites. Ici, c'est un score à 4 chiffres. Je ne vous fais pas l'affront de vous filer mes table de caractères dessinées par moi sous Paint et ne comportant que les chiffres de 0 à 7.
// Un include pour les gouverner tous
#include <mygba.h>
// Les petites images (table de caractère et palette)
#include "gfx/object.pal.c"
#include "gfx/chiffres.raw.c"
// Les variables globales
u8 position1; //les 4 chiffres du scores
u8 position2; //
u8 position3; //
u8 position4; //
u16 score=5555; // un score réalisé moi meme sur un jeu assez bien dur quand même
u16 ScoreTemp=0; // Ca va servir à pas réecrire le score s'il ne change pas
// Prototype des fonctions
void vbl_func();
void query_buttons();
void AfficheScore();
// main() qui l'eu cru..
int main()
{
// HAMlib
ham_Init();
// background mode
ham_SetBgMode(1);
//Palette de nos 4 sprites (les 4 chiffres)
ham_LoadObjPal((void*)object_Palette,256);
// Et boum on rentre les 4 sprites dans la gba
// pensez à changer les donnés si vos chiffres ne sont pas
//en 64*64 pixels
position1 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,130,50);
position2 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,100,50);
position3 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,70,50);
position4 = ham_CreateObj((void*)chiffres_Bitmap,
0,3,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,50,50);
// Le truc qui se déclenche toutes les images
ham_StartIntHandler(INT_TYPE_VBL,(void*)&vbl_func);
// loopinge ad vitam eternam
while(1) {}
return 0;
} // fin du main() waou
//**********************
// Fonction: vbl_func()
// But dans la vie: se lancer a chaque rafraichissment d'image
//**********************
void vbl_func()
{
ham_CopyObjToOAM(); //affiche nos 4 sprites sur l'ecran
query_buttons(); // ca sert que pour la démo en fait : pour faire varier le score manuelement
AfficheScore(); //la fameuse fonction...
return;
} // fin de vblFunc()
//******************************
// Fonction: query_buttons()
// But : regarde tes doigts
//******************************
void query_buttons()
{
// pad vers le haut
if(F_CTRLINPUT_UP_PRESSED)
{
if (score < 9999)
score++; // on fait monter le score
return;
}
// pad vers le bas
if(F_CTRLINPUT_DOWN_PRESSED)
{
if (score > 0) score--; // et la descendre
return;
}
return;
} // fin de query_buttons()
//******************************************
// Fonction: AfficheScore() *
// Utilité : Affiche score avec des sprites*
//******************************************
void AfficheScore(){
int chiffre1,chiffre2,chiffre3,chiffre4; //variable locale elle servent que là en fait
if(score != ScoreTemp)// ne se lance que si le score a changé
{
chiffre1=score%10; //un peu de logique explique ces 4 lignes
chiffre2=((score%100) - (score%10))/10;
chiffre3=((score%1000) - (score%100))/100;
chiffre4=((score%10000) - (score%1000))/1000;
ham_UpdateObjGfx(position1,//sprite du 1° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre1]); //découpe le sprite correspondant au chiffre 1 de 64*64 pxl
ham_UpdateObjGfx(position2,//sprite du 2° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre2]);//découpe le sprite correspondant au chiffre 2 de 64*64 pxl
ham_UpdateObjGfx(position3,//sprite du 3° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre3]);//découpe le sprite correspondant au chiffre 3 de 64*64 pxl
ham_UpdateObjGfx(position4,//sprite du 4° chiffre
(void*)&chiffres_Bitmap[64*64*chiffre4]);//découpe le sprite correspondant au chiffre 4 de 64*64 pxl
}
ScoreTemp=score; // enregistre le score actuel pr verifier à la prochaine boucle qu'il a changé
//en mettant de 00 a 99 sur une table tu gagnes 4 lignes et 2 sprites en moins
//(et encore plus si les scores sont gros)
}