Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tout sur les TI !

Besoin d'aide ?

    16 mars 2013 à 15:29:06

    Bonjour! Je programme un serpent sur ti 83+  avec l'écran graphique, j'utilise les point carrés (3*3 pixels, avec un pixel éteint au milieu) et j'ajoute : vertical 0 ; vertical 94 ; horizontal 0 ; horizontal 62.

    Comment faire pour dire que, dès que le serpent touche un pixel allumé, la partie s'arrête?

    Merci d'avance!

    • Partager sur Facebook
    • Partager sur Twitter
      31 mars 2013 à 13:32:13

      Bonjour,

      J'ai une Dliste constituée de 1 et de 0. Cependant je voudrais différencier les listes {0 0 1 1}et {0 1 0 1} qui ont le même nombre de 0. Mais dans le premier cas la liste d'origine avait 3 nombres identiques consécutifs alors que dans le 2ème cas il y avait 2 * 2  nombres identiques. Mais je n'arrive pas à trouver un algorithme permettant de différencier ces 2 cas car je n'arrive pas à compter le nombre de 0 consécutifs dans la DListe.

      Bon week-end !

      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2013 à 13:33:22

        -- Désolé doublon du sujet "[Ti]Dliste"

        -
        Edité par victor2 31 mars 2013 à 14:42:45

        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2013 à 14:00:37

          Bonjour,

          D'autres personnes auront sûrement une méthode plus efficace, mais tu peux toujours faire:

          Liste -> L2

          TriCroi(L2

          if prod(L2 = Liste

          Then

          //On est dans le cas d'une liste {0 0 1 1}

          Else

          //On est dans le cas {0,1,0,1

          End

          En espérant t'avoir aidé ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 avril 2013 à 16:34:04

            Salut, m@thieu41 : sujet déjà résolu ici. Ton code (en plus d'être plutôt tiré par les cheveux :p ) n'est pas très fiable (ni adaptable) : il ne permet par exemple pas de différencier {0,0,1,1} de {0,1,1,1}, {1,1,1,1}, {0,0,0,1} ou encore de {0,0,0,0} (en fait, de n'importe quelle liste déjà triée par ordre croissant). Et dans le else, on ne sait pas si on est dans le cas {0,1,0,1} ou bien {0,1,1,0} ou n'importe quelle liste non triée.

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2013 à 20:16:16

              Je ne savais pas qu'il y avait un autre sujet :D

              En fait, j'avais compris qu'il n'y avait que 2 cas à gérer :lol:

              Par contre, du coup, tu peux réduire le code "If sum(L1={0,0,1,1})=4" en "If prod(L1={0,0,1,1" (je ne sais pas si c'est plus rapide, mais ça peut faire économiser de la place.

              Bon ben tant pis, à plus et bon courage! ;)



              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                7 avril 2013 à 11:36:19

                Ben il le dit juste au dessus de ton message... Effectivement, bien vu, le prod est plus court, mais je ne ne sais pas non plus si il y en a un qui est plus rapide qu'un autre. De toute façon, pour une telle longueur de liste, ça ne doit pas changer grand chose. ^^

                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2013 à 14:06:09

                  p162 de ce forum, j'ai demandé comment changer les dimensions d'une matrice sous Ti89. Melepe m'a proposé des solutions alternatives qui m'ont bien aidées, mais nous n'avons pas trouvé comment changer les dimensions d'une matrice. Après de loooooongues recherches, j'ai trouvé comment: il faut utiliser la fonction:

                  augmente(matrice,[[y][x]])->matrice

                  Voilà, petite astuce :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  S SI -> 1° année -> Je passe en 2° année d'IUT Info !
                    19 mai 2013 à 16:49:42

                    Petite question: Y a-t-il un moyen de vérifier si une touche est maintenu sous Ti-89 ?

                    Je m'explique: avec la fonction codtouch/getkey, on peut vérifier l'appui sur une touche. Mais si l'utilisateur ne relache pas la touche et que l'on redemande si la touche est maintenu la réponse est négative. Je n'ai pas trouvé de moyen de contourner ce problème, même en passant les cours de physique à chercher...

                    Help me, please

                    • Partager sur Facebook
                    • Partager sur Twitter
                    S SI -> 1° année -> Je passe en 2° année d'IUT Info !
                      16 août 2013 à 19:14:25

                      Re tout le monde, ça faisait longtemps :)

                      Je vous demande ça en dernier recours, sans trop d'espoir : y'a-t-il un moyen en Axe de connaître l'espace libre restant en RAM ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 août 2013 à 12:39:29

                        En axe ça doit être difficile.

                        Par contre j'ai un code en hexadécimal(que tu peux facilement introduire dans un programme axe avec " Asm( " ) qui stocke l'espace libre restant de la RAM dans la variable "A" de la calculatrice, mais pas dans la variable "A" de l'axe attention:

                        EFE5
                        42EF
                        9247
                        EF56
                        41EF
                        BA43
                        EFC5
                        4121
                        4100
                        2279
                        84EF
                        D44A
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 août 2013 à 13:39:26

                          Merci, je n'attendais pas mieux !

                          Ton code fonctionne très bien, par contre je n'arrive pas afficher la valeur en Axe. La variable A (du Ti-OS) est bien modifiée (même si la valeur semble approximative mais ça me suffira) mais le code du tuto pour afficher une vraie variable ne fonctionne pas :

                          :Asm(TONCODE)
                          :GetCalc("varA")→P
                          :float{P}→A
                          :Disp A►Dec

                          Provoque une erreur ERR:INVALID DIM. J'ai rarement vu ça en Axe...

                          -
                          Edité par mogolecho 19 août 2013 à 13:40:08

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 août 2013 à 12:38:55

                            Là pour l'erreur, je pourrai pas vraiment te répondre.:euh:

                            Pour la valeur approximative c'est normal, car quand tu exécutes ton programme , celui-ci n'est plus dans la RAM, et du coup ça affiche un peu moins que la réalité, je crois.

                            Sinon on pourrait peut-être trifouiller un peu le code hexa pour que la valeur soit enregistrée dans le registre hl (je sais pas si tu fais de l'assembler), et après on pourrait facilement récupérer la valeur en axe sans la variable du tiOS.

                            J'ai essayé mais sans succès...:(

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 août 2013 à 23:40:05

                              Bonjour!

                              J'ai un problème avec les sprites en Grammer...voilà mon code :

                              :.0:

                              :ClrDraw

                              :3C42A581A599423C->Str1   // Un smiley qui sourie, stocké dans la Chaine1

                              :Tile(08,Str1,31,5,,,

                              :DispGraph

                              :Pause 100

                              :Stop

                              Bon voilà, l'intérêt est simplement d'afficher un sprite au centre de l'écran (c'est un bon petit début ^^'). Problème : il affiche bien un sprite, mais pas celui que j'avais codé. Après j’ai tout essayé : enlever les virgules à la fin de "Tile(", enlevé et déplacé le "8" (qui permet d'indiquer que le sprite est codé en hexa), écrit le sprite directement dans "Tile("....rien à faire, ça change pas grand chose :(

                              HELP!

                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 août 2013 à 23:25:25

                                mogolecho a écrit:

                                Merci, je n'attendais pas mieux !

                                Ton code fonctionne très bien, par contre je n'arrive pas afficher la valeur en Axe. La variable A (du Ti-OS) est bien modifiée (même si la valeur semble approximative mais ça me suffira) mais le code du tuto pour afficher une vraie variable ne fonctionne pas :

                                :Asm(TONCODE)
                                :GetCalc("varA")→P
                                :float{P}→A
                                :Disp A►Dec

                                Provoque une erreur ERR:INVALID DIM. J'ai rarement vu ça en Axe...

                                -
                                Edité par mogolecho le 19 août 2013 à 13:40:08


                                Lol, tu es en train de récupérer la valeur de la variable A de l'OS, ce qui n'a strictement rien à voir avec le registre A.

                                Il faut donc ajouter au code asm :

                                B_CALL _SetXXOP1

                                B_CALL _StoX

                                Soit en hexadécimal :

                                EF8C47EFD14A

                                (Code non testé) Le nombre voulu devrait être dans la variable X TI-OS.

                                EDIT : Ou sinon :

                                LD L,A 

                                LD H,0

                                Soit en hexadécimal : 6F2600. Le résultat est donc dans HL.

                                ****Fant0me**** a écrit:

                                Bonjour!

                                J'ai un problème avec les sprites en Grammer...voilà mon code :

                                :.0:

                                :ClrDraw

                                :3C42A581A599423C->Str1   // Un smiley qui sourie, stocké dans la Chaine1

                                :Tile(08,Str1,31,5,,,

                                :DispGraph

                                :Pause 100

                                :Stop

                                Bon voilà, l'intérêt est simplement d'afficher un sprite au centre de l'écran (c'est un bon petit début ^^'). Problème : il affiche bien un sprite, mais pas celui que j'avais codé. Après j’ai tout essayé : enlever les virgules à la fin de "Tile(", enlevé et déplacé le "8" (qui permet d'indiquer que le sprite est codé en hexa), écrit le sprite directement dans "Tile("....rien à faire, ça change pas grand chose :(

                                HELP!

                                Je pense qu'il manque des guillemets :


                                :"3C42A581A599423C"->Str1

                                -
                                Edité par Codoscope 22 août 2013 à 23:42:38

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 août 2013 à 10:30:25

                                  mdr1 a écrit:

                                  Lol, tu es en train de récupérer la valeur de la variable A de l'OS, ce qui n'a strictement rien à voir avec le registre A.

                                  La valeur de la RAM n'est pas enregistrée dans le registre A attention, mais bien dans la variable A du ti OS. Si tu veux, teste le programme!

                                  Ce qu'il faudrait, au contraire, c'est supprimer la partie du code qui enregistre la valeur dans la variable A du ti OS et enregistrer cette valeur dans le registre hl.

                                  Ensuite il suffirait juste de faire en axe:

                                  :Asm(code hexa)→A

                                  Et la valeur serait alors enregistrée dans la variable A de l'axe.:magicien:

                                  EDIT:

                                  Ton edit n'est pas non plus vraiment la solution car tu récupère ta valeur à partir du registre A et la valeur recherchée n'est pas enregistrée dans ce registre.

                                  -
                                  Edité par NorbertD 23 août 2013 à 10:39:28

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    23 août 2013 à 10:56:46

                                    Merci de vos réponses :)
                                    Alors, NorbertD, quelle serait la partie hexadécimale à enlever quand tu parles de "la partie du code qui enregistre la valeur dans la variable A du ti OS" ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 août 2013 à 12:56:46

                                      Merci mdr1! C'était tout con, mais ils ne l'ont pas indiqué dans le tuto...bon merci beaucoup :)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 août 2013 à 17:13:20

                                        Si tu sais toujours pas tester si un pixel est allumé ****Fant0me****, PxlTest(X;Y)=1 si le pixel (X;Y) est allumé et 0 sinon

                                        Attention: X c'est la hauteur comptéd'en haut, et Y la largeur de gauche

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Yes we can!
                                          23 août 2013 à 18:56:15

                                          En fait, le code que NobertD a donné convertit déjà de HL vers OP2 pour ensuite mettre dans la variable TI-OS A. Donc plutôt que de faire un code immensément longuement inutile, je propose d'utiliser ce qui suit :

                                          EFE542 (B_CALL _MemChk)

                                          Stocke la mémoire RAM restante dans HL. Par exemple, le code assembleur suivant l'affiche :

                                          :AsmPrgm

                                          :EFE542

                                          :EF0745 (B_CALL _DispHL)

                                          :C9

                                          Donc tu peux faire en Axe : Asm(EFE542)->truc.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            23 août 2013 à 19:09:46

                                            C'est bon efi007, je sais l'utiliser, merci quand même :)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              25 août 2013 à 0:40:50

                                              Esqu'il y a un moyen de faire des sprites sur lla TI-89 autre qu'avec nouvImg(newPic)?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Yes we can!
                                                15 septembre 2013 à 19:38:45

                                                Bonjour je suis nouveau et je viens de fair l'acquisition d'une TI-Nspire CX CAS et ce n'est pas du tout la meme chose que les Ti classique 82 etc

                                                et j'aimerais savoir si qqun pourrais m'aider a programmer ce petit algorithme :

                                                Entrée

                                                Saisir n(n entier,n(supérieur ou égal à)2)

                                                Initialisation

                                                x prend la valeur 1

                                                y prend la valeur 1

                                                Traitement

                                                Pour i de 1 jusqu'à n-1

                                                 z prend la valeur de x+y

                                                 x prend la valeur de y 

                                                 y prend la valeur de z

                                                FinPour

                                                Sortie 

                                                Afficher y

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  15 septembre 2013 à 19:56:20

                                                  Bonjour je suis nouveau et je viens de fair l'acquisition d'une TI-Nspire CX CAS et ce n'est pas du tout la meme chose que les Ti classique 82 etc

                                                  et j'aimerais savoir si qqun pourrais m'aider a programmer ce petit algorithme :

                                                  Entrée

                                                  Saisir n(n entier,n(supérieur ou égal à)2)

                                                  Initialisation

                                                  x prend la valeur 1

                                                  y prend la valeur 1

                                                  Traitement

                                                  Pour i de 1 jusqu'à n-1

                                                   z prend la valeur de x+y

                                                   x prend la valeur de y 

                                                   y prend la valeur de z

                                                  FinPour

                                                  Sortie 

                                                  Afficher y

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    24 septembre 2013 à 12:49:19

                                                    request "",n
                                                    
                                                    1->x
                                                    1->y
                                                    
                                                    for(i,1,n-1)
                                                    x+y->z
                                                    y->x
                                                    z->y
                                                    endfor
                                                    
                                                    disp y
                                                     je crois que c'est un truc dans ce genre....
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Yes we can!
                                                      9 novembre 2013 à 16:46:42

                                                      Salut tout le monde !

                                                      Ma sœur rencontre un problème avec sa vieille Ti-83 (juste récupérée, c'est une occasion). Les touches CLEAR et VARS ne fonctionnent plus (même en appuyant comme un bourrin). J'ai démonté toute la calculatrice afin d'accéder à la carte mère côté clavier, pour constater que ça ne sont pas des boutons poussoirs mais des capteurs de pression électroniques, imprimés sur la carte, derrière un support en plastique qui donne l'effet de pression. Ces résistances ne me semblent pas abîmées, le circuit l'air en bon état. J'ai tout remonté, toujours le même problème. Savez-vous s'il y a quelque chose à faire pour réparer ces deux touches tout de même bien pratiques ?

                                                      Merci

                                                      -
                                                      Edité par mogolecho 9 novembre 2013 à 16:48:36

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        9 novembre 2013 à 19:47:22

                                                        Moi j'ai démonté une fois ma ti-89 mais à mon avis ce serait le même système sur tout les ti.

                                                        En tout cas sur la mienne le truc est qu'il y a deux courants qui passent à côté sans se toucher et en activant le bouton on les met en contact et le signal passe. (Tu peux le vérifier en touchant les deux courants avec quelquechose qui conduit et regarer s'il y a quelquechose qui se passe.). A mon avis c'est le truc qui met les deux courants en contact qui est abimé. Si tu a le même système alors redémonte la calto (Attention de ne pas perdre de boutons, j'ai de la mauvaise expérience.....) et colle un bout de papier alu sur la partie qui devrait connecter les deux courants.

                                                        Laisse moi savoir si ça a marché.....

                                                        En éspérant de t'avoir aidé

                                                        Efi007

                                                        -
                                                        Edité par efi007 9 novembre 2013 à 19:54:46

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Yes we can!
                                                          15 novembre 2013 à 7:54:33

                                                          Bonjour ! J'ai pour projet de faire un jeu de type shut em up sur calculatrice je fait des etape dans le programme et je ne me suis pas encore interressé au graphisme j'ai un vaissaux constitué d'un O et d'un + il tir avec la touche 5 quand le tir (-) arrive au meme coordonnée X que l'obstacle (O) on gagne,  le mouvement n'est que horizontale le "vaisseau" est sur la meme ligne que l'ennemi (O), le tir part normalement quand j'appui sur la touche 5 mais une fois sur deux il traverse l'ennemi sans afficher "you win" voici le code de la boucle principale:

                                                          :clrhome

                                                          :0->K

                                                          :0->L

                                                          :0->V

                                                          :While 1 \\debut de la boucle du jeu

                                                          :output(4,14-F,"O") \\affichage de l'ennemis qui se deplace de la doite vers la gauche

                                                          :output(4,15-F," ") \\(F s'incremente a chaque tour de boucle)

                                                          :getkey->g

                                                          :if G !=0 : g->K

                                                          :If K=83:Goto 1 \\si la touche 5 est pressée aller a l'etiquette 1

                                                          :Goto B

                                                          :lbl 1 \\ etiquette du tir

                                                          :output(4, 4+V,"-")\\ tir par de la case 4 et se deplace de la gauche vers la droite

                                                          :output(4, 3+V," ")

                                                          : lbl B

                                                          :if 4+V=14-F:goto A0 \\ si  la coordonnée du tir est la meme que celle de l'ennemis aller a l'etiquette A0 vous avez gagne

                                                          :if 14-F=2: Goto 0 \\ si la coordonnée X du tir est la meme que celle du vaisseau aller a l'etiquette 0 vous avez perdu

                                                          :F+1->F

                                                          :if K=83: 1+V->V \\ si la touche 5 est pressée la variable V commence a s'incrementer

                                                          :End

                                                          Si vous pouviez m'aider merci beaucoup!!!

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            15 novembre 2013 à 11:29:38

                                                            L'association Goto/Lbl est à bannir si tu veux éviter que ton jeu lague (même si ici ça ne dérange pas trop, ce n'est pas très judicieux): http://tout82.free.fr/forum/sujet.php?sujet=2757

                                                            Beaucoup d'optimisations à faire (parenthèses et guillemets fermants facultatifs en fin de ligne): http://tout82.forumactif.org/t50-candide-ou-l-optimisation

                                                            Concernant le code:

                                                            La variable F doit être initialisée.

                                                            Ton code est étrange: si on appuye sur une autre touche que 5 le missile s'arrête (il faudrait utiliser une variable qui sauvegarde si on a déjà appuyé sur 5, et donc si un missile est envoyé).

                                                            De plus on a pas de vaisseau?

                                                            Et c'est normal que des fois tu ne puisse pas gagner: si le missile est en case 7 et l'ennemi en case 8, au tour suivant le missile sera en case 8 et l'ennemi en case 7, donc jamais à la même case. Il faut donc tester si les 2 sont à la même case ou si le missile est une case après l'ennemi.

                                                            Voici le code corrigé d'après ce que je t'ai dit:

                                                            :clrhome

                                                            :0->K

                                                            :0->L //Puisque tu n'utilise pas cette variable je m'en sert pour savoir si le tir est parti

                                                            :0->V

                                                            :0->F

                                                            :Repeat 14-F=2 or L and (4+V=14-F or 3+V=14-F \\debut de la boucle du jeu //Les boucle infinies sont à éviter si tu peux faire autrement // Tant qu'on a pas perdu (14-F=2) peut aussi s'écrire F=12 // Tant qu'on a pas gagne (L and (4+V=14-F or 3+V=14-F)) peut aussi s'écrire: L(V=10-F or V=11-F

                                                            :output(4,14-F,"O \\affichage de l’ennemi qui se déplace de la droite vers la gauche //Fermetures de guillemets/parenthèses facultatives en fin de ligne

                                                            :output(4,15-F,"  \\(F s’incrémente a chaque tour de boucle)

                                                            :getkey->K

                                                            :If K=83

                                                            :1->L //Le tir part

                                                            :If L //Équivaut à If L!=0 // Si le tir est parti

                                                            :Then

                                                            :V+1->V //Le tir se déplace

                                                            :output(4,4+V,"-\\ tir par de la case 4 et se déplace de la gauche vers la droite

                                                            :output(4, 3+V,"

                                                            :End

                                                            :F+1->F // L'ennemi se déplace

                                                            :End //Fin de la boucle principale

                                                            :If 14-F=2 //Si on a perdu // Ca revient à tester If F=12

                                                            :Then

                                                            :Pause "VOUS AVEZ PERDU

                                                            :Else

                                                            :Pause "ENNEMI DETRUIT

                                                            :End

                                                            je n'ai pas testé mais ça devrait marcher comme ça ;)

                                                            Continue comme ça.

                                                            Si tu as d'autres questions n'hésites pas.


                                                            PS: Tu n'as pas précisé ton modèle, mais si tu as une TI 82/82stats/82stats.fr/83 je te conseille ce forum: http://tout82.forumactif.org/forum

                                                            -
                                                            Edité par m@thieu41 15 novembre 2013 à 11:30:38

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              17 novembre 2013 à 14:05:10

                                                              Merci !! ça marche !

                                                              j'ai une TI 83+

                                                              donc est-ce que pour deplacer le vaisseau il suffi de rajouter 

                                                              :if K=15

                                                              :then

                                                              :Y vaisseau +1 ->Yvaisseau

                                                              etc...

                                                              K=24

                                                              Y-1->Y

                                                              ?? 

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Tout sur les TI !

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown