Home   Archives    Hardware   Programmation   Challenges   Forum   Le Mag    Faq   La Communauté   L'Equipe
 
L'équipe progG de Ti-Fr

Voici les nicks de vos serviteurs ;-)

chickensaver_john
Kevin Kofler
Thibaut
janjan2
TiMad
Iceman89
fréka
Zewoo
Squale92
Verstand
ZdRUbAl
UtOpIaH

et nEUrOne ...

Une idée ?
Une idée pour améliorez cette partie? ou tout simplement vous souhaitez participer à l'élaborations des tutos.
Mailez-nous ici

Les raccourcis
 

Chapitre IV


    Bien, à présent que nous avons vu le fonctionnement le plus élémentaire du C sous TIGCC, nous allons pouvoir faire un programme un peu plus complexe.
    Bien que le programme suivant soit déjà "tout fait", je pense qu'il serait mieux pour vous de le recopier. Cela vous permettra de vous familiariser avec les instructions les plus basiques de TIGCC, et, de la même façon, vous permettra de lire les commentaires qui accompagnent le programme au fur et à mesure que vous l'écrirez.

   Nous allons ici travailler avec la version TI-92plus de ce programme. Il est ici quasiment comme dans le fichier .zip disponible dans la rubrique "archives de Ti-Fr / asm / utils".
    Comme vous pouvez le voir, la majeure partie des lignes de ce programme sont commentées. C'est pour cela que ce programme ne sera pas plus détaillé dans ce Chapitre. Cependant, si, malgré tous vos efforts et votre bonne volonté vous ne comprenez pas certaines lignes du code, je vous encourage à aller faire un tour au Chapitre V. En effet, celui-ci explique, de la façon la plus détaillée que j'ai pu faire, les fonctions utilisées dans ce chapitre. (A condition que l'on n'en ait pas déjà traité plus tôt !)

    Pour des raisons de bonne visibilité, les commentaires insérés dans le programme de ce chapitre sont de couleur violette, et non pas verte, comme ils sont en réalité si vous les écrivez aussi dans TIGCC. (Je crois que cela vous facilitera la lecture de la même façon que cela me simplifie la relecture !).

#define OPTIMIZE_ROM_CALLS     // Optimisation de la vitesse
    /* Cette fonction est proposée par TIGCC lorsque vous faites un nouveau programme. Pourquoi s'en priver, alors qu'elle ne doit pas avoir la possibilité de faire quoi que ce soit de néfaste ?  Au contraire, elle permet une certaine optimisation du programme, qui se traduit généralement par une plus grande vitesse, et moins de mémoire occupée sur la TI par le programme.  ATTENTION : cette fonction n'existe pas en mode Doors, car les Kernels font eux-même le travail de cette fonction !*/
#define SAVE_SCREEN     // Sauvegarde l'écran, pour le restituer à la fin du programme
#include <graph.h>     // Permet de supporter les graphiques
#include <kbd.h>     // Gère les pressions au clavier
#include <dialogs.h>     // Permet d'utiliser les boites de dialogue
// Il aurait été possible d'inclure toutes les librairies de TIGCC, en utilisant ceci : 
#include <tigcclib.h>

short _ti92plus; // Compile pour la 92+ => Crée un fichier .9XZ


void _main(void) // Début de la fonction principale
{
 
short caract=2;
// Crée la variable de taille des caractères, et lui affecte la valeur 2
  short keya=0;
// Crée la variable de touche pressée au clavier, et lui affecte la valeur 0
  short xxa=0;
// Crée la variable de position selon x, et lui affecte la valeur 0
  short yya=0;
// Crée la variable de positon selon y, et lui affecte la valeur 0
  short attr=0;
// Crée la variable d'attribut du texte, et lui affecte la valeur 0
    /* Nous avons ainsi défini 5 variables de type short. il aurait été possible d'écrire :
        short caract=2, keya=0, xxa=0, yya=0, attr=0;
    Cela aurait permis de rendre le programme éventuellement un peu plus lisible. Ici, cette écriture n'a pas été utilisée, pour que nous puissions dire à quoi correspondaient chaque noms de variables. */

 
do
/* Utiliser "do" avec "switch" permet de ne pas utiliser trop de "if", "else",...
 Cela signifie que l'on pourra obtenir des boucles plus claires, évitant ainsi ce que les puristes nomment "programmation spaghetti". */
 
{
    switch(keya)
    {    
// Boucle qui examine la valeur de "keya"
      case 43:          // Si keya vaut 43 (touche + a été pressée.)
      if(caract<3)      // Si la taille de la police est inférieure à 3
        caract++;       // Ajoute 1 à cette taille de police
      break;            // fin de ce cas

      case 45:          // Si la valeur de keya est 45 (touche - a été pressée.)
      if(caract>1)      // Si la taille de police est supérieure à 1
        caract--;       // Enlève 1 à cette taille de police
      break;            // fin de ce cas

      case 340:         // Si keya vaut 340 (touche droite a été pressée)
      if(xxa<188)       // Pour que le texte ne sorte pas de l'écran
        xxa+=5;         // Déplace le texte de 5 pixels vers la droite
      break;            // Fin de ce cas

      case 337:         // Si keya vaut 337 (touche gauche a été pressée)
      if(xxa>1)         // Pour que le texte ne sorte pas de l'écran
        xxa-=5;         // Déplace le texte de 5 pixels vers la gauche
      break;            // Fin de ce cas

      case 344:         // Si keya vaut 344 (touche bas a été pressée)
      if(yya<111)       // Pour que le texte ne sorte pas de l'écran
        yya+=5;         // Déplace le texte de 5 pixels vers le bas
      break;            // Fin de ce cas

      case 338:         // Si keya vaut 338 (touche haut a été pressée)
      if (yya>1)        // Pour que le texte ne sorte pas de l'écran
        yya-=5;         // Déplace le texte de 5 pixels vers le haut
      break;            // Fin de ce cas

      case 268:         // Si keya vaut 268 (touche F1 a été pressée)
      attr=0;           // affecte 0 à l'attribut
      break;            // Fin de ce cas

      case 269:         // Si keya vaut 269
      attr=1;           // affecte 1 à l'attribut
      break;            // Fin de ce cas

    } // Fin de cette boucle "switch()"

    switch(caract)
    { 
// Boucle switch qui attribue une valeur à la taille de police

      case 1:             // Si on a choisi 1 comme taille de police
      FontSetSys(F_4x6);  // La police la + petite est sélectionnée
      break;              // Fin de ce cas

      case 2:             // Si on a choisi 2 comme taille de police
      FontSetSys(F_6x8);  // La police de taille moyenne est sélectionnée
      break;              // Fin de ce cas

      case 3:             // Si on a choisi 3 comme taille de police
      FontSetSys(F_8x10); // La police la + grande est sélectionnée
      break;              // Fin de ce cas
    // Fin de cette boucle "switch()"

    ClrScr();             // Efface l'écran
    if (attr==0)
     
DrawStr(xxa,yya,"Squale",A_NORMAL);
// Si l'attribut est 0, écrit "Squale" en noir à la position (xxa,yya)
    if (attr==1)
      DrawStr(xxa,yya,"Squale",A_REVERSE);
// Si l'attribut est 1, écrit "Squale" en blanc sur noir à la position (xxa,yya)
    keya=ngetchx();
// Attend qu'une touche soit pressée, et stocke sa valeur dans keyq

 
} // Fin de la boucle "do{}"
  while(keya != 264); 
// Tout ce qui a été décrit précédemment est valable jusqu'à ce qu'on appuie sur ESC

  ClrScr();               // Efface l'écran
  DlgMessage("Au revoir !","En espérant être utile... squale92@wanadoo.fr",BT_OK,BT_NONE);
// Affiche une boite de dialogue donnant mon adresse
}  
// Fin de la fonction principale
                // FIN DU PROGRAMME

Retour au menu général


Chapitre V


 


Copyright © Ti-Fr v2.0 1999-2002