|
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
|
| |
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
|
|