![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ouvrir sur le forum | Recherche | Messages du jour | Marquer les forums comme lus |
Publicité |
![]() |
|
Outils de la discussion | Modes d'affichage |
![]() |
#1 |
Newser
Date d'inscription: 18/03/2007
Localisation: Un coin trop froid...
Messages: 739
![]() |
![]() J'ai donné récemment un cours sur la programmation sur console Nintendo DS, et j'ai trouvé très intéressant la réaction globale de la classe, et finalement, la facilité que procure actuellement des kits près à l'emploi comme la PAlib.
Un cours suivit d'un TP a suffit pour initier une partie des personnes à l'art bien délicat de la programmation sur DS avec des moufles. Au départ Nous avons une classe de Master 2, formé pour la conception multimédia, mais complètement étrangère au concept de programmation C ou C++. Les langages déjà vu, découvert et exploité vont du PHP à l'ActionScript, en passant par un peu de java via processing. On remarque donc que même pour programmer sur DS, pas besoin d'être un AS du C/C++, des notions de programmation suffisent la plupart du temps. Le cours Le cours, que je ne reproduirais pas ici, n'est qu'une introduction aux consoles portables, au concept d'autonomie, et surtout un descriptif hardware un peu complet, mais très facilement exploitable trouvable. Et ça commence à programmer Le premier point, l'installation d'un environnement de développement. Ce dernier est prêt à l'emploi, un simple fichier à décompresser à la racine d'un disque dur, pour Windows uniquement. (Rappelons que le but n'est pas de montrer l'installation d'un kit de cross compilation, mais bien la création d'un petit programme pour la DS). L'émulateur choisis est Desmume, GPL, et très complet en ce qui concerne le déboggage. Explications basiques Voilà à quoi ressemble l'environnement de développement.
Rappelons que jusqu'ici, aucune connaissance en C++/C n'a été nécessaire. Regardons de plus près le programme ainsi compilé (qui se situe dans source/main du projet sous ProgrammerNotePad): Code:
#include <PA9.h> // Pour simplifier la programmation char text[200]; // Mémoire pour stocker le texte // Fonction principale : En C, on utilise { et } pour ouvrir un fermer une fonction int main(int argc, char ** argv) { PA_Init(); // Initialisation standard de la console PA_InitVBL(); // Initialisation de l'interruption de VSync à rien du tout // Initialisation des fonctions pour écrire du texte à l'écran PA_InitText(0, // Choix de l'écran : 0 = écran du bas 1); // Choix du background à utiliser (0 à 3) PA_InitText(1, 0); // Même chose, mais pour l'écran du haut u8 i; // Déclaration d'une variable for (i = 0; i < 10; i++) { PA_SetTextTileCol(1, // Choix de l'écran de l'action i); Choix de la couleur d'affichage PA_OutputSimpleText(1, 2, i, "Color test..."); On écrit le texte sur l'écran 1 (écran du haut) à la position 2,i (comme i est modifié par la boucle, on écrit les lignes les unes au dessous des autres). } // Fin de la boucle PA_SetTextTileCol(1, TEXT_YELLOW); PA_OutputSimpleText(1, 0, 17, "Yellow test..."); // Un texte jaune sur l'écran du bas PA_OutputText(0, 0, 0, "Color test...%c1another one, %c2again, %c3 again..."); // Boucle infinie pour le programme while (1) { PA_WaitForVBL(); // Attend un rafraichissement d'écran } return 0; } // Fin du programme Passons à quelque chose de plus intéressant. Animons ce petit truc. Remplacer la boucle while par la suivante: Code:
u8 j=3; u8 direction=1; while (1) { if ((j>70)||(j<1)) { direction = -direction; } PA_OutputSimpleText(0, 5, j, " 0 "); PA_WaitForVBL(); // Attend un rafraichissement d'écran } C'est pourquoi, après ces manipulations un peu magique, nous allons étudier le code qui se situe dans ce répertoire: \devkitPro\PAlib\examples\Input\Stylus\Stylus La ligne qui nous intéresse est la suivante : Code:
PA_OutputText(1, 1, 11, "Stylus Position : %d, %d ", Stylus.X, Stylus.Y); Le code du while se transforme à nouveau, voici la nouvelle version : Code:
while (1) { PA_OutputSimpleText(0, Stylus.X/8, Stylus.Y/8, " 0 "); PA_WaitForVBL(); // Attend un rafraichissement d'écran } C'est très beau, mais il reste un problème, l'ancien texte reste affiché à l'écran. Et ce n'est pas très beau. Un petit tour sur la documentation officielle de la PAlib ici : http://palib.info/Doc/PAlibDoc%20Fr/modules.html va nous aider un peu. Regardons... Text output system, tiens, ca ressemble à ce qu'on fait ca. Et là, on trouve une fonction bien intéressante : Code:
PA_ClearTextBg (u8 screen) Code:
while (1) { PA_ClearTextBg (1); PA_OutputSimpleText(0, Stylus.X/8, Stylus.Y/8, " 0 "); PA_WaitForVBL(); // Attend un rafraichissement d'écran } --------------------------------------------- Le TP a par la suite abordé la notion de sprite, avec l'affichage, l'animation et la rotation d'un sprite, et l'utilisation de pa_gfx pour faire un peu de graphisme, et pas seulement du texte, dans le but de faire un pong basique. Je continuerai ici ce portage de cours si cela intéresse du monde(là, c'est le résumé de la première demi heure) En conclusion Sans connaitre le C, sans connaitre le C++, sans connaitre la DS, sans connaitre la programmation pour portable, et en un peu plus d'une heure, il est possible de créer un simili-pong graphique animé utilisant l'écran tactile pour la Nintendo DS. Le but était de montrer que sans connaissance, avec juste les exemples fournis, et la documentation de la PAlib, en sachant ou fouiller, il est possible de faire déjà pas mal de chose dans un but didactique et démonstratif.
__________________
Un langage de programmation est censé être une façon conventionnelle de donner des ordres à un ordinateur. Il n'est pas censé être obscur, bizarre et plein de pièges subtils, ça ce sont les attributs de la magie. |
![]() |
![]() |
Publicité |
![]() |
#2 |
Membre confirmé
|
![]() rahhh punaise
![]() Un prof comme toi je le paierai pour venir me donner des cours aussi intéressants que ceux-ci ![]() Tu fais un petit tour dans mon Master 1 nous enseigner 2-3 trucs ? ![]() C'est un master 2 quel matière au fait ? ![]() sinon, GG ![]() |
![]() |
![]() |
![]() |
Liens sociaux |
Publicité |
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
Outils de la discussion | |
Modes d'affichage | |
|
|
![]() |
||||
Discussion | Auteur | Forum | Réponses | Dernier message |
![]() |
Bobby Sixkilla | Articles et Tutos | 11 | 02/03/2010 11h50 |
Un nouveau concours de programmation sur Nintendo DS | Darkmath | Les News | 2 | 03/07/2007 23h16 |
Nintendo On, le retour! | Phoebius | Discussions Sur Les Autres Consoles | 20 | 05/03/2006 15h59 |
![]() |
puzznic | Jeux | 2 | 10/11/2005 20h27 |