1

bon, j'ai fait mon ptit joujou dla balle qui se ballade dans l'ecran (j'avais un peu oublié et jmy suis rmis, merci tous) et jme demandais comment kon pouvait faire pour ke la balle avance VITE quand on reste appuyé sur une touche ...
vala la source // C Source File // Created 09/11/2003; 16:57:16 #define USE_TI89              // Compile for TI-89 #define USE_TI92PLUS          // Compile for TI-92 Plus // #define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization #define MIN_AMS 100           // Compile for AMS 1.00 or higher #define SAVE_SCREEN           // Save/Restore LCD Contents #include <tigcclib.h>         // Include All Header Files unsigned char ball_sprite [] = {0b11111111,                                                                                 0b01111110,                                                                                  0b00111100,                                                                                 0b00011000,                                                                                 0b00011000,                                                                                 0b00111100,                                                                                  0b01111110,                                                                                   0b11111111};   // Main Function    void _main(void)  {                 int a;              short xpos=(LCD_WIDTH-1)/2;       short ypos=(LCD_HEIGHT-1)/2;              ClrScr ();       Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);              while (_keytest (RR_ESC)==FALSE)       {                                       a=ngetchx();                                           if (a==337)            {                 Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);                 ypos=ypos-1;            }                        else if(a==344)            {                 Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);                 xpos=xpos+1;            }                        else if(a==340)            {                 Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);                 ypos=ypos+1;            }                        else if(a==338)            {             Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);             xpos=xpos-1;            }                        if (xpos+8>(LCD_WIDTH-1)) xpos=-1;            if (xpos<0) xpos=1;            if (ypos+8>(LCD_HEIGHT-1)) ypos=-1;            if (ypos<0) ypos=1;                        Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);                   }  }
merci a tous et a toutes
++

2

Utiliser _keytest
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Je viens d'essayer le programme et j'ai pas vu de balle. confus
De plus tu utilise getchx qui attend l'appuye d'une touche prend une fonction qui scrute le clavier en permanence comme _keytest.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

4

ngetchx scrute le clavier en parmanence. _keytest ne scrute le clavier qu'une fois, et encore, pas tout le clavier...
Le problème, c'est que ngetchx introduit une temporisation entre deux répétitions.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

La lenteur de ngetchx n'a pas à voir avec la détection du clavier, mais avec les routines de link.

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

6

Ah ? Pourquoi ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

7

Parce que ngetchx réagit aussi au link, pas seulement au clavier.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

8

La lecture du clavier est assurée à 100% par l'auto-int 1, donc il suffit juste d'aller chercher les touches au bon endroit pour les lire. ngetchx/kbhit, en plus d'aller chercher le code de la touche éventuel, s'amuse à regarder si on envoie pas qqch par le link (c'est comme ça que fonctionne la connexion TI-PC), et ça ralentit beaucoup. L'auto-int 1, elle aussi, est lente, mais ce n'est rien comparé à ngetchx tongue

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

9

Il se passe quoi plus précisément ?
Mais je pense que la lenteur vient aussi et surtout du fait que le ngetchx impose un temps de répétition...

[edit] Pollux> cross-post
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

10

OK, donc l'AI1 lit le clavier et donne le n° de la touche pressée qqpart en mémoire.
Donc effectivement ngetchx n'a plus qu'à lire ça.

Comment se comporte ngetchx si on envoie qqch par le link ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

11

Ah oui, cross post cheeky

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

12

Et encore...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

13

./10> ben il décode les paquets, par exemple : réception de variables (donc ça peut modifier la VAT gni => les pointeurs vers des hdl non lockés et les HSym sont invalidés, donc ça doit faire un joli trou de sécurité pour pas mal de progs tongue), envoi de la liste des variables, etc...

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

14

Et j'allais oublier aussi que même les pointeurs vers des handles lockés sont invalidés, si le handle est le contenu d'un fichier en ROM devil (réception de FlashApps) Et ça peut être encore pire si le code d'installation de la FlashApp contient des trucs pas très catholiques (du genre, elle suppose que l'application en cours est Home). Mais je ne suis pas sûr que l'installation de FlashApp soit activée avec ngetchx(), en fait (ou alors, peut-être que la véritable installation de la flashapp se passe au prochain EV_loop, i.e. prochaine boîte de dialogue tongue Encore une raison de ne pas utiliser les boîtes de dialogue...)

./12> oué gni

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

15

Ce code est n'importe quoi:
1. tu mélanges _keytest et ngetchx. Ce n'est pas possible! Pour le premier, il faut obligatoirement rediriger les auto-interruptions n°1 et 5. Le deuxième a besoin de l'auto-interruption n°1.
2. (et c'est ça qui "ralentit"): tu utilises ngetchx n'importe comment. Utilisé comme ça, il attend un appui de touche. Il faut d'abord tester kbhit.
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é

16

Tu pourrais essayer d'être plus aimable, Kevin ? tu peux me parler comme ça, puisque je suis pas toujours gentil avec toi, mais VauDou débute et ne t'a rien fait roll
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.

17

(et c'est ça qui "ralentit")

Pas sûr, à mon avis ça accélère même plutôt (si on laisse la touche appuyée bien sûr tongue) : si la touche est déjà dans le buffer, alors kbhit() sera tout aussi lent que ngetchx(), mais on devra en plus se taper un ngetchx() pour vider le buffer -> 2x plus lent ; et si la touche n'est pas dans le buffer, ngetchx() attendra juste ce qu'il faut, alors qu'on sera obligé de faire des itérations supplémentaires de la boucle principale avec kbhit().
Evidemment, pour un "vrai" jeu mieux vaut utiliser kbhit/ngetchx que ngetchx tout seul, mais dans ce cas précis ngetchx tout seul devrait être plus rapide.

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

18

Dites je vois pas pkoi detecter le link ralentit tant que ca ngetchx... C'est juste un cmp.w #4,ReceiveBufferSize roll

19

utilise _rowread ca lit le clavier à bas niveau
avatar
Wenn ich morgen meinem Gott gegenübertrete, kann ich ihm sagen: "Ich bin unschuldig, ich hab' niemandem etwas getan - außer mir selben" Und das verzeiht er mir offentlich !
Falco - Hans Hölzel 1957 - 1998
RIP

20

cf ./2 roll
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

21

Quel est l'opérateur le plus rapide : "_rowread" ou "_keytest" ?
avatar
Orage Studio - http://oragestudio.free.fr -
Kya disponible dés le 28 novembre sur PS2 - http://www.eden-studios.com -
Star Wars sur ti 89/92+/v200 téléchargeable dés le 1er janvier 2004...
Orage Demo - Le site 100% paramétrable en cours de développement - http://oragedemo.free.fr

22

pour un _keytest simple, pas de différence, puisqu'il est traduit en _rowread. Pour un _keytest_optimised, il fait des trucs en plus pour éviter de refaire un _rowread inutilement
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

23

ok mci alors je vais remplacer _keytest smile
avatar
Orage Studio - http://oragestudio.free.fr -
Kya disponible dés le 28 novembre sur PS2 - http://www.eden-studios.com -
Star Wars sur ti 89/92+/v200 téléchargeable dés le 1er janvier 2004...
Orage Demo - Le site 100% paramétrable en cours de développement - http://oragedemo.free.fr

24

Une alternative à ngetchx est OSDequeue, vraiment plus rapide. Il faut juste savoir que cette fonction ne stoquera rien dans l'entier passé en référence si aucune touche n'a été appuyée.
Le code de la touche résultant est identique à ngetchx, donc pas de problème.
=top_estack; return GetIntArg(argptr); }
Question lenteur on peut encore faire pire:short AttendTouche()		{
	GKeyFlush();
	while (!kbhit())/* idle()*/;
	push_getkey();
	ESI argptr
Ca permet d'avoir des codes de touches compatibles entre 89/92 sans avoir a tester inutilement sur laquelle des deux le prog tourne (uniquement #define USE_TI89)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741