30

Utilise les balises [ pre ] et [ /pre ] pour que le forum ne te bouffe pas les espaces...

En fait les boucles do-while ne prennent qu'un seul while, donc voilà ce que comprend le compilo avec ton exemple :
do
	{
		key = 0; // cette affectation ne sert à rien puisque key sera de toutes façons modifié par l'instruction suivante
		key = ngetchx();
	}
while ( key != 49);

// en dehors de la première boucle do-while (bloc isolé)
{
	OSReset();
}

// boucle infinie si key != 50 : c'est équivalent à 'while (key!=50) { }'
while ( key != 50);


// encore un bloc isolé :
{
	OSClearBreak() ;
	OSEnableBreak() ;
	OSSetSR(0x0000) ;
}


Je présume que tu voulais dire :
// attendre une pression de touche
do {
    key = ngetchx();
} while (key == 0);

// est-ce 49 ?
if (key == 49) {
    OSReset();
}

// est-ce 50 ?
if (key == 50) {
    OSClearBreak() ;
    OSEnableBreak() ;
    OSSetSR(0x0000) ;
}

// sinon on ne fait rien (attention : avec ce programme on ne recommence pas si on appuye sur une touche qui ne fait rien : il faut rajouter une boucle si on veut ce comportement)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

31

pollux> ngetchx attends une touche donc le while ne sert a rien la smile

32

euh nan, c 'était comme ca peut etre:
key = ngetchx();
	
	while ( key != 49);
	do
	{
			OSReset();
	}
  while ( key != 50);
	do
	{
			OSClearBreak() ;
			OSEnableBreak() ;
			OSSetSR(0x0000) ;
	}

mais j'ai une petite erreur, faut que je voit ca...
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

33

ca marche pas.
expliquez moi comment enlever toutes ces boucles, alors que seul le If avec un goto me permet de faire marcher ce programme
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

34

regarde le post de pollux
tu sembles confondre do/while avec if.

35

ok, ca marche, on peut aussi enlever le while, mais precedemant, on m'a reproché de mettre trop de goto....
alors, comment, je fais pour les enlever et rendre le programme plus rapide???
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

36

Un pitit sondage pour changer. C'est juste comme ca..
[sondage=13833]
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

37

Ca aussi sa marche!!!!!!!!
MyLabel1:	
    key = ngetchx();



if (key == 49) 
{
    OSReset();
}


else if (key == 50) 
{
    OSClearBreak() ;
    OSEnableBreak() ;
    OSSetSR(0x0000) ;
}
else
{
	goto MyLabel1;  //voila ce que l'on me reproche, mais au moins sa marche
}
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

38

Bon, en effet, y'a pas moyen de faire ça très efficacement (au niveau vitesse) sans utiliser des méthodes sales.
OSSetSR(0x0000); break; } } while (TRUE);
Je te propose ça. C'est moins sale mais c'est quand même sale :do
  {
    key = ngetchx();

    if (key == 49) 
      {
        OSReset();
        break;
      }
    else if (key == 50) 
      {
        OSClearBreak();
        OSEnableBreak();
      
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

39

ouais pourquoi pas, jespere que ca va marcher.
bon appetit a tout le monde.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

40

j'ai trouvé ca aussi, j'ai pas encore esssayé...
do
        {
          switch(key=ngetchx())
            {
              case '1':
                randomize(1000*(land[0]-'1'));
                if((score=game(speed[0]-'1'))>hsc_table[4].score)
                  update_hsc(hsc_table,score);
                break;
              case '2':
                high_scores(hsc_table);
                break;
              case '3':
                if(land[0]++=='9') land[0]='1';
                break;
              case '4':
                if(speed[0]++=='5') speed[0]='1';
                break;
              case 264:
                break;
              default:
                key = 0;
            }
        } while(!key);
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

41

je pense que c'est ca qu'il me faut, je vais le tester apres manger. Vous le trouverzez dans les exemples de TIGCC nommé Cave Blaster.
Voila.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

42

Finalement, j'ai pas pu attendre. CA MARCHE avec switch
biensur, j'ai pas mis toute la source au dessus, dons land ne sera pas declaré.
Mais ca marche, case remplace finalement, la valeur de la touche.
exemple, case '1'; correspond a l'appui de la touche 1 sur le clavier de la TI.
C'est excelent, et plus rapide que tout les if.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

43

De plus, comme vous avez pu le remarquer, si le 'test' ne donne rien, le programme retourne a switch ce qui evite un fastidieux goto,
et oui.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

44

merci de nous apprendre ce que c'est qu'un switch grin

45

On aurait pû te donner ce code si on avait su que tu voulais tester plus de 2 touches et boucler tant qu'aucune touche n'est pressée wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

46

de rien lol, ok, mais si ta vu la source que j'ai mis, je pensait que tu aurais pu comprendre.
Mais c'est pas grave.
Bon maintenant, le probleme de depart revient a la surface.
J'ai toujours mon probleme avec l'ecran virtuel.
Je vais refaire ma source, et vous la donner.
Je pense qu'elle sera plus lisible comme ca smile
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

47

seulement, j'ai un probleme encore, et oui....
euh je rentre dans mon prog, je lance un switch puis si j' appuye sur 'o' par exemple, j'entre alors dans un ecran secondaire avec des options.
lorsque je fait 'ESC', je sors completement du prog, alors que je voudrait revenir a l'ecran principal.
J'essaye de chercher, mais pour l'instant je ne trouve aucune commande...
break me sors du prog
return aussi
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

48

A part un bon vieux goto je vois pas, pour l'instant c'est le seul truc qui marche.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

49

Tu as fait un switch dans le case d'un switch (gni) ?
Montre ta source complète en précisant l'endroit qui pose problème.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

50

ok


#include <tigcclib.h>

// Main Function
void _main(void)
{
	SCR_RECT ECRAN = {{0, 0, 159,99}} ;
	int APDTIM = OSTimerCurVal(APD_TIMER);
	short key;
  //int REPKE, REPK;


MyLabel:
	
	
	clrscr();
	ST_busy(3);
	DrawLine (0, 93, 160, 93, A_NORMAL) ;
	ST_helpMsg("Protools 1.0 developpé par Vodoo93");
	ScrRectFill(&(SCR_RECT){{0, 10, 8, 93}}, &ECRAN ,A_NORMAL) ;
	ScrRectFill(&(SCR_RECT){{0, 0, 160, 10}}, &ECRAN ,A_NORMAL) ;
	FontSetSys(F_4x6);
	DrawStr (10, 3, "--------ProTools 1.0 by Vodoo93--------", A_REVERSE);
	DrawStr (10, 15, "1-Reset calculatrice    /!\  \0", A_REVERSE);
	DrawStr (10, 25, "2-Activer Break       (active ON)", A_NORMAL);
	DrawStr (10, 35, "3-Desactiver Break (desactive ON)", A_NORMAL);
	DrawStr (10, 45, "4-APD", A_NORMAL);
  DrawStr (10, 55, "5-Reglage du contraste", A_NORMAL);
  DrawStr (10, 65, "*6-Clavier", A_NORMAL);
	DrawStr (10, 73, "* = indisponible  \0", A_REVERSE);
	DrawStr (10, 86, "9-Credits", A_NORMAL);

//MyLabel1:	
	
do
        {
          switch(key=ngetchx())
            {
              case '1':
                	OSReset();
                break;
              case '2':
                 	OSClearBreak() ;
    		OSEnableBreak() ;
    		OSSetSR(0x0000) ;
                goto MyLabel;
              case '3':
                 	OSClearBreak() ;
		OSDisableBreak() ;
		OSSetSR(0x0700) ;
                goto MyLabel;
              case '4':
              		APDTIM = APDTIM/20+1;
			();
			printf("Valeur actuelle de l'APD:%i", APDTIM);
			printf("\nValeur de l'APD:"); 
			scanf("%i", &APDTIM);
			printf("\nAPD reglé a:%i", APDTIM);
			printf("seconde(s)");
			ngetchx();
			OSFreeTimer(APD_TIMER) ; 
	                                 OSRegisterTimer(APD_TIMER, 20*APDTIM) ;
              goto MyLabel;
        		case '5':      
      						clrscr();
		printf("Appuyez sur + pour augmenter le contraste.\nAppuyez sur - pour diminuer le contraste."); 						
               do
                       {
           												
          															switch(key=ngetchx())   //  <---------------ICI---------------------------------------------------|
            																{                                                                                                          //  |
              										          							case 45:                                                                                // |
                																OSContrastDn() ;                                                                   //  |
                																		//ici, je voudrai rester dans le swtich revenir	|
																	case 43:
                									             // |						OSContrastUp() ;
                								                             // |									
                						//ici, je voudrai rester dans le swtich reveni  //|													
																                 case 264:    // et la revenir au switch precedent, le premier quoi..
                																			
              																     default:
               																key = 0;
            																	}
        				} while(!key);
          		goto MyLabel;         //ici, c'est pour revenir    a l'ecran principla
              
               case 264:
                break;
              default:
                key = 0;
            }
        } while(!key);




}

vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

51

desolé pour la mise en page
prend plutot ca

#include <tigcclib.h> // Main Function void _main(void) {      SCR_RECT ECRAN = {{0, 0, 159,99}} ;      int APDTIM = OSTimerCurVal(APD_TIMER);      short key;   //int REPKE, REPK; MyLabel:                  clrscr();      ST_busy(3);      DrawLine (0, 93, 160, 93, A_NORMAL) ;      ST_helpMsg("Protools 1.0 developpé par Vodoo93");      ScrRectFill(&(SCR_RECT){{0, 10, 8, 93}}, &ECRAN ,A_NORMAL) ;      ScrRectFill(&(SCR_RECT){{0, 0, 160, 10}}, &ECRAN ,A_NORMAL) ;      FontSetSys(F_4x6);      DrawStr (10, 3, "--------ProTools 1.0 by Vodoo93--------", A_REVERSE);      DrawStr (10, 15, "1-Reset calculatrice    /!\  \0", A_REVERSE);      DrawStr (10, 25, "2-Activer Break       (active ON)", A_NORMAL);      DrawStr (10, 35, "3-Desactiver Break (desactive ON)", A_NORMAL);      DrawStr (10, 45, "4-APD", A_NORMAL);   DrawStr (10, 55, "5-Reglage du contraste", A_NORMAL);   DrawStr (10, 65, "*6-Clavier", A_NORMAL);      DrawStr (10, 73, "* = indisponible  \0", A_REVERSE);      DrawStr (10, 86, "9-Credits", A_NORMAL); //MyLabel1:            do         {           switch(key=ngetchx())                                //switch 2             {               case '1':                      OSReset();                 break;               case '2':                       OSClearBreak() ;                                        OSEnableBreak() ;                                        OSSetSR(0x0000) ;                 goto MyLabel;               case '3':                       OSClearBreak() ;                                              OSDisableBreak() ;                                              OSSetSR(0x0700) ;                 goto MyLabel;               case '4':                         APDTIM = APDTIM/20+1;                                              clrscr();                                              printf("Valeur actuelle de l'APD:%i", APDTIM);                                              printf("\nValeur de l'APD:");                                               scanf("%i", &APDTIM);                                              printf("\nAPD reglé a:%i", APDTIM);                                              printf("seconde(s)");                                              ngetchx();                                              OSFreeTimer(APD_TIMER) ;                                               OSRegisterTimer(APD_TIMER, 20*APDTIM) ;               goto MyLabel;                   case '5':                                           clrscr();                                              printf("Appuyez sur + pour augmenter le contraste.\nAppuyez sur - pour diminuer le contraste.");                                                                                       do                                                 {                                                                                                                                                              switch(key=ngetchx())               //switch 2                                                                                             {                                                                                                    case 45:                                                                                                                     OSContrastDn() ;                                                                                                                                      //revenir switch 2                                                                                                                         case 43:                                                                                                                     OSContrastUp() ;                                                                                                                                                                                                                                                                              //revenir switch 2                                                                                                                     case 264:                                                                                                                                      //revenir switch 1                                                                                                                   default:                                                                                                                               key = 0;                                                                                                  }                                                           } while(!key);                     goto MyLabel;                                                                                                           case 264:                 break;               default:                 key = 0;             }         } while(!key); }
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

52

mais je vais remplacer le switch 2 par des if et ca sera mieux je pense.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

53

./31> erf #honte#

vodoo93>

Ligne 12 :

12:MyLabel:
=>
12:do {

98:
=>
98:} while (key!=264);

et tu remplaces les 'goto MyLabel' par des 'break'.

Et penses à indenter proprement tes sources, c'est très important. Sous TIGCC, un truc qui peut t'aider à faire ça est le fait que qd tu appuies sur la touche TAB alors qu'un bloc de texte est sélectionné, ton texte s'indente automatiquement d'un cran en plus (Shift-Tab pour un cran en moins).

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

54

ok, merci, ca a regle 75% du pb
maintenant, regarde
69:                                                                                      switch(key=ngetchx())               //switch 2
70:                                                                                             {
71:                                                                                                    case 45:
72:                                                                                                                     OSContrastDn() ;
73:                                                                                                                                      //revenir switch 2
74:                                                                                                                         case 43:
75:                                                                                                                     OSContrastUp() ;
76:                                                                                                                                        
77:                                                                                                                                      //revenir switch 2
78:                                                                                                                     case 264:
79:                                                                                                                                      //revenir switch 1
80:                                                                                                                   default:
81:                                                                                                                               key = 0;
82:                                                                                                  }
83:                                                           } while(!key);
 

ci, ce qu'il me faut, c'est pour OSContrastDn ou Up il faut que je puisse appyer sur + ou - autant de fois qu'il faut pour regler le contrast comme on veut.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

55

oups j'ai oublié [ pre ] et [ /pre ] desolé
picol
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

56

bon je l'ai reindenter, si tu veut je te le reenvoie
c parti... #include <tigcclib.h> // Main Function void _main(void) {      SCR_RECT ECRAN = {{0, 0, 159,99}} ;      int APDTIM = OSTimerCurVal(APD_TIMER);      short key;      //int REPKE, REPK;           do            {                 clrscr();                ST_busy(3);                DrawLine (0, 93, 160, 93, A_NORMAL) ;                ST_helpMsg("Protools 1.0 developpé par Vodoo93");                ScrRectFill(&(SCR_RECT){{0, 10, 8, 93}}, &ECRAN ,A_NORMAL) ;                ScrRectFill(&(SCR_RECT){{0, 0, 160, 10}}, &ECRAN ,A_NORMAL) ;                FontSetSys(F_4x6);                DrawStr (10, 3, "--------ProTools 1.0 by Vodoo93--------", A_REVERSE);                DrawStr (10, 15, "1-Reset calculatrice    /!\  \0", A_REVERSE);                DrawStr (10, 25, "2-Activer Break       (active ON)", A_NORMAL);                DrawStr (10, 35, "3-Desactiver Break (desactive ON)", A_NORMAL);                DrawStr (10, 45, "4-APD", A_NORMAL);                DrawStr (10, 55, "5-Reglage du contraste", A_NORMAL);                DrawStr (10, 65, "*6-Clavier", A_NORMAL);                DrawStr (10, 73, "* = indisponible  \0", A_REVERSE);                DrawStr (10, 86, "9-Credits", A_NORMAL);                     do                     {                          switch(key=ngetchx())                                                         {                               case '1':                                         OSReset();                                    break;                               case '2':                                         OSClearBreak() ;                                         OSEnableBreak() ;                                         OSSetSR(0x0000) ;                                    break;                               case '3':                                         OSClearBreak() ;                                         OSDisableBreak() ;                                         OSSetSR(0x0700) ;                                    break;                               case '4':                                         APDTIM = APDTIM/20+1;                                         clrscr();                                         printf("Valeur actuelle de l'APD:%i", APDTIM);                                         printf("\nValeur de l'APD:");                                          scanf("%i", &APDTIM);                                         printf("\nAPD reglé a:%i", APDTIM);                                         printf("seconde(s)");                                         ngetchx();                                         OSFreeTimer(APD_TIMER) ;                                          OSRegisterTimer(APD_TIMER, 20*APDTIM) ;                                    break;                               case '5':                                               clrscr();                                         printf("Appuyez sur + pour augmenter le contraste.\nAppuyez sur - pour diminuer le contraste.");                                                                             do                                              {                                                   switch(key=ngetchx())                                                                  {                                                        case 45:                                                             OSContrastDn() ;                                                                                                                                                                                              case 43:                                                             OSContrastUp() ;                                                              case 264:                                                        default:                                                        key = 0;                                                        break;                                                   }                                              } while(!key);                                         break;                                                               case 264:                                                                        default:                                    key = 0;                                    break;                               }                     } while(!key);           } while (key!=264);  }     
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

57

Euh ça m'a l'air de marcher, non?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

58

Rising Sun
: On peut faire des gotos en C ??

Oui! Ce n'est pas du Java!
vodoo93 :
seulement, j'ai un probleme encore, et oui....
euh je rentre dans mon prog, je lance un switch puis si j' appuye sur 'o' par exemple, j'entre alors dans un ecran secondaire avec des options.
lorsque je fait 'ESC', je sors completement du prog, alors que je voudrait revenir a l'ecran principal.
J'essaye de chercher, mais pour l'instant je ne trouve aucune commande...
break me sors du prog return aussi

Un petit goto est idéal pour ça. Je les utilise aussi pour des trucs comme ça dans mes programmes.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

59

ok je pense qu'il y a pas d'autres solutions.
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away

60

Petit pb..
vodoo93
I still believe in your eyes;
I just don't care what you have done in your life.
Baby i'll always be here by your side;
Don't leave me waiting too long, please come by!
I, still believe in your eyes;
There is no choice, I belong to your life.
Because I will live to love you someday;
You'll be my baby and we'll fly away