nous allons remplir un peu la partie développement
nous avons déja :
-le helloworld
-Utilisation des manettes dans les applis
-Un exemple d'utilisation de l'infrarouge wiimote
-Intégrer une image JPEG dans son programme
ce que je propose est de réaliser le jeux "plus ou moins"
la console choisi un nombre et nous devons le retrouver avec l'aide de la console qui nous dit plus ou moins.
cela permettrai d'utiliser les différents tuto dans un cas concret très simple.
on pourrait le faire évolué au fur et a mesure -mode texte
-deux joueur
- interface graphique
- score
- ...
le tout devra être commenté afin que chacun puis comprendre ce qui est fait
donc je commence par une partie du code :
Code
//---------- librairie du langage c---
#include
#include
//---------- la librairie de libogc
#include
//---------- la librairie pour la gestion des wiimotes
#include
//---------- librairie pour le temps
#include
//Cela permet de dire ou l?on va ecrire sur l'ecran
#define gotoXY(x,y) printf("\x1b[%i;%iH", x, y)
//variable pour les fonctions d'affichages
static void *xfb = NULL;
static GXRModeObj *rmode = NULL;
u32 pressed;
//---------------------------------------------------------------------------------
int main(int argc, char **argv) {
//---------------------------------------------------------------------------------
????
???? // Initialise la video
?? VIDEO_Init();
??
?? // initialise les wiimotes
?? WPAD_Init();
??
?? //Cette fonction permet de détecter le mode(PAL,NTSC) a utilisé pour la TV branché sur la wii
?? rmode = VIDEO_GetPreferredMode(NULL);
?? //Pour afficher du texte ou des dessins à l?écran, on écrit (via différentes fonctions) dans une zone mémoire
?? //que la Wii va ensuite lire. La ligne si dessous permet d?initialiser cette zone mémoire via la variable xfv.
?? //Cette variable est souvent passée comme argument lorsque l?on y fait appel.
?? xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
??
?? // Initialisation de la ?console? en définissant la zone de l?écran a utilisé, celle-ci permet d?utiliser
?? //la fonction printf. Le 1e paramètre est toujours xfb (initialisée juste avant) Les 2e et 3e paramètres
?? //définissent la position X et Y du point haut à gauche de la zone de texte Les 4e et 5e paramètres définissent
?? //la position X et Y du point bas à droite de la zone de texte rmode?xfbHeight est la hauteur de l?écran en pixels.
?? // rmode?fbWidth est la largeur de l?écran en pixels. VI_DISPLAY_PIX_SZ est la taille en octet d?un pixel.
?? console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
??
?? //initialise l'affichage
?? VIDEO_Configure(rmode);
??
?? // Tell the video hardware where our display memory is
?? VIDEO_SetNextFramebuffer(xfb);
??
?? // met l'ecran visible
?? VIDEO_SetBlack(FALSE);
?? // ?Rafraichit? les registres de la carte video de la Wii.
?? VIDEO_Flush();
?? // attendre la fin de la affichage video
?? VIDEO_WaitVSync();
?? //si mode entrelace on execute le code
?? if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
??
????//cette fonction sert à randomiser la fonction rand() pour mieux choisir des nombres
????//aléatoire, elle utilise la fonction time() qui renvoie le nombre de seconde écoulé
????//dpuis le début de l'heure
??????
????//déclaration des variables du jeu
??????int a=0;//le nombre a trouvé
??????int b=0;//pour le proposition du joueur
??????char d[4];//pourl'affiche de b
????//afficher appuyez sur 1 :)
????printf("appuyez sur 1");
????//blouche infini pour la lecture des wiimotes
??????while(1) {
????
??// lie l'état de la wiimote
??????WPAD_ScanPads();
????//recuper l'etat des touches pour la wiimote 1??
???? pressed = WPAD_ButtonsDown(WPAD_CHAN_0);
??// permet de retourner au lancer d'application lorsque que l'on appui sur home
??????if ( pressed & WPAD_BUTTON_HOME ) exit(0);??????
??????//ecrire ligne 4 colone 3
?????? gotoXY(4, 3);
??????
?????? //si on appui sur + on ajoute 1 a??b et affiche "votre proposition : (valeur de b)"
????????if (pressed & WPAD_BUTTON_PLUS)??{ b++;// on ajoute 1 a b
?????????????????????????????????????????? printf("votre proposition :"); //on affiche "votre proposition :"
?????????????????????????????????????????? sprintf(d, "%i", b); //on convertie b en chaine
?????????????????????????????????????????? printf (d);??// on affiche b
?????????????????????????????????????????? printf("\n");}//on va a la ligne
??????????????????????????????????????????
????????//si on appui sur - on soustrait 1 a b et affiche "votre proposition : (valeur de b)"
????????if (pressed & WPAD_BUTTON_MINUS) { b--;// on soustraire 1 a b
?????????????????????????????????????????? printf("votre proposition :"); //on affiche "votre proposition :"
?????????????????????????????????????????? sprintf(d, "%i", b);//on convertie b en chaine
?????????????????????????????????????????? printf (d);??//on affiche b
?????????????????????????????????????????? printf("\n");}//on va a la ligne
??????????????????????????????????????????
????????//valide la proposition si on appui sur A
????????if (pressed & WPAD_BUTTON_A)???? { if(b>a) { printf("Trop grand !\n");}//si le joueur propose un nombre trop grand alors on affiche "trop grand"
??????????????????????????????????????????else??if(b ??????????????????????????????????????????else??printf("Vous etes fort vous l'avez trouve,appuyer sur 1 pour recommencer");};//si le joueur trouve la bonne réponse on affiche
????????//commencer le jeux ou recommencer
????????if (pressed & WPAD_BUTTON_1)???? { srand(time(0));//randomiser
?????????????????????????????????????????? a=1+rand()% 100;//choisir un nombre entre 1 et 100
?????????????????????????????????????????? gotoXY(2, 3);//ecrire ligne 2 colone 3
?????????????????????????????????????????? printf("Un nombre est cache entre 1 et 100, trouver le !\n");};//affiche la regle
??????}
????????
??// a// attendre la fin de la affichage video
??????VIDEO_WaitVSync();
??????
?? return 0;
?? }
#include
#include
//---------- la librairie de libogc
#include
//---------- la librairie pour la gestion des wiimotes
#include
//---------- librairie pour le temps
#include
//Cela permet de dire ou l?on va ecrire sur l'ecran
#define gotoXY(x,y) printf("\x1b[%i;%iH", x, y)
//variable pour les fonctions d'affichages
static void *xfb = NULL;
static GXRModeObj *rmode = NULL;
u32 pressed;
//---------------------------------------------------------------------------------
int main(int argc, char **argv) {
//---------------------------------------------------------------------------------
????
???? // Initialise la video
?? VIDEO_Init();
??
?? // initialise les wiimotes
?? WPAD_Init();
??
?? //Cette fonction permet de détecter le mode(PAL,NTSC) a utilisé pour la TV branché sur la wii
?? rmode = VIDEO_GetPreferredMode(NULL);
?? //Pour afficher du texte ou des dessins à l?écran, on écrit (via différentes fonctions) dans une zone mémoire
?? //que la Wii va ensuite lire. La ligne si dessous permet d?initialiser cette zone mémoire via la variable xfv.
?? //Cette variable est souvent passée comme argument lorsque l?on y fait appel.
?? xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
??
?? // Initialisation de la ?console? en définissant la zone de l?écran a utilisé, celle-ci permet d?utiliser
?? //la fonction printf. Le 1e paramètre est toujours xfb (initialisée juste avant) Les 2e et 3e paramètres
?? //définissent la position X et Y du point haut à gauche de la zone de texte Les 4e et 5e paramètres définissent
?? //la position X et Y du point bas à droite de la zone de texte rmode?xfbHeight est la hauteur de l?écran en pixels.
?? // rmode?fbWidth est la largeur de l?écran en pixels. VI_DISPLAY_PIX_SZ est la taille en octet d?un pixel.
?? console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
??
?? //initialise l'affichage
?? VIDEO_Configure(rmode);
??
?? // Tell the video hardware where our display memory is
?? VIDEO_SetNextFramebuffer(xfb);
??
?? // met l'ecran visible
?? VIDEO_SetBlack(FALSE);
?? // ?Rafraichit? les registres de la carte video de la Wii.
?? VIDEO_Flush();
?? // attendre la fin de la affichage video
?? VIDEO_WaitVSync();
?? //si mode entrelace on execute le code
?? if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
??
????//cette fonction sert à randomiser la fonction rand() pour mieux choisir des nombres
????//aléatoire, elle utilise la fonction time() qui renvoie le nombre de seconde écoulé
????//dpuis le début de l'heure
??????
????//déclaration des variables du jeu
??????int a=0;//le nombre a trouvé
??????int b=0;//pour le proposition du joueur
??????char d[4];//pourl'affiche de b
????//afficher appuyez sur 1 :)
????printf("appuyez sur 1");
????//blouche infini pour la lecture des wiimotes
??????while(1) {
????
??// lie l'état de la wiimote
??????WPAD_ScanPads();
????//recuper l'etat des touches pour la wiimote 1??
???? pressed = WPAD_ButtonsDown(WPAD_CHAN_0);
??// permet de retourner au lancer d'application lorsque que l'on appui sur home
??????if ( pressed & WPAD_BUTTON_HOME ) exit(0);??????
??????//ecrire ligne 4 colone 3
?????? gotoXY(4, 3);
??????
?????? //si on appui sur + on ajoute 1 a??b et affiche "votre proposition : (valeur de b)"
????????if (pressed & WPAD_BUTTON_PLUS)??{ b++;// on ajoute 1 a b
?????????????????????????????????????????? printf("votre proposition :"); //on affiche "votre proposition :"
?????????????????????????????????????????? sprintf(d, "%i", b); //on convertie b en chaine
?????????????????????????????????????????? printf (d);??// on affiche b
?????????????????????????????????????????? printf("\n");}//on va a la ligne
??????????????????????????????????????????
????????//si on appui sur - on soustrait 1 a b et affiche "votre proposition : (valeur de b)"
????????if (pressed & WPAD_BUTTON_MINUS) { b--;// on soustraire 1 a b
?????????????????????????????????????????? printf("votre proposition :"); //on affiche "votre proposition :"
?????????????????????????????????????????? sprintf(d, "%i", b);//on convertie b en chaine
?????????????????????????????????????????? printf (d);??//on affiche b
?????????????????????????????????????????? printf("\n");}//on va a la ligne
??????????????????????????????????????????
????????//valide la proposition si on appui sur A
????????if (pressed & WPAD_BUTTON_A)???? { if(b>a) { printf("Trop grand !\n");}//si le joueur propose un nombre trop grand alors on affiche "trop grand"
??????????????????????????????????????????else??if(b ??????????????????????????????????????????else??printf("Vous etes fort vous l'avez trouve,appuyer sur 1 pour recommencer");};//si le joueur trouve la bonne réponse on affiche
????????//commencer le jeux ou recommencer
????????if (pressed & WPAD_BUTTON_1)???? { srand(time(0));//randomiser
?????????????????????????????????????????? a=1+rand()% 100;//choisir un nombre entre 1 et 100
?????????????????????????????????????????? gotoXY(2, 3);//ecrire ligne 2 colone 3
?????????????????????????????????????????? printf("Un nombre est cache entre 1 et 100, trouver le !\n");};//affiche la regle
??????}
????????
??// a// attendre la fin de la affichage video
??????VIDEO_WaitVSync();
??????
?? return 0;
?? }
a la compilation j'ai deux warning qui sont les suivant:
warning: ctime.h: No such file or directory
warning: no newline at end of file
je ne sais pas si le code fonctionne
je suis débutant comme certainement pas mal de personne ici le but et de progrésser ensemble sur un projet pas trop compliqué qui a la fin sera un super tuto pour réaliser le jeux du plus ou moins
bien sur les développeur expérimentés peuvent nous aider a corriger nos erreur
voila maintenant trouvons pourquoi ces warning et améliorons ce bout de code certainement bugger et non fonctionnel
