30

La clé 0108 n'est pas présente dès l'installation dans une V200, il faut installer un certificat développeur pour l'avoir. Les FlashApps pour V200 doivent donc être effectivement signées avec 0101.
En revanche, les 89T disposent de 0109 out of the box.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

31

Et ce certificat développeur, en quoi est-ce qu'il consiste?
Je me souviens
Ad mari usque ad mare

GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.

32

Mis à part ça, j'ai donc commencé à coder sur ma zolie TI ^^

Premier essai : ngetchx();

Bon c'est cool, ça fonctionne, mais ça stoppe le jeu le temps de la détection de la touche. Donc j'ai fouillé un peu et j'ai fini par trouver
short GKeyDown(void)

Donc je suis tout content, je teste, avec :

void _main() {
  short key = GKeyDown();

  //Printf àlakon
}


Ca ne marche toujours pas. Donc je passe à ça :
void _main() {
  short key = 0;
  while(key == 0) 
  {
    short key = GKeyDown();
  }

  //Printf àlakon, restore screen itou itou
}


Idem, rien du tout

Donc je fous le printf dans le while et j'ai une boucle infinie de malade, même en pressant une touche. Inarrêtable.

Des lumières ? J'ai un peu de mal à comprendre la docu de TIGCC sur cette fonction.

Merci, et bonne journée, j'vais en cours x)

33

Regarde du côté de kbhit, mais c'est lent. Mais le mieux est la lecture bas niveau, si tu veux lire en continu pour un jeu. (voir du côté de rowread)

34

Hum t'as pas un warning avec ca ?
Tu redéfinis la variable key dans ta boucle !
Essaie avec un truc comme ca :
void _main()
{
  short key = 0;
  while(key == 0) 
  {
    key = GKeyDown();
  }
}
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

35

bobti89 (./34) :
Hum t'as pas un warning avec ca ?
Tu redéfinis la variable key dans ta boucle !
Essaie avec un truc comme ca :
void _main()
{
  short key = 0;
  while(key == 0) 
  {
    key = GKeyDown();
  }
}



J'ai déjà tenté, marche pas, donc j'ai redéf la variable et pas d'warning ^^
Folco (./33) :
Regarde du côté de kbhit, mais c'est lent. Mais le mieux est la lecture bas niveau, si tu veux lire en continu pour un jeu. (voir du côté de rowread)


Ok merci, vais voir ça x)

36

Bon merci bolco avec kbhit() c'est super mais c'est un poil trop rapide.

Donc je pense faire
#define KB_AUTOREPEAT (1<<11)

Ou alors
unsigned char OSFastArrows;

Le seul problème, c'est que je sais pas trop laquelle choisir (j'me suis lancé dans un Pong, classique quoi x) )

37

Ça peut être une bonne chose d’apprendre à utiliser kbhit voire mieux, _rowread, ainsi que les techniques de synchro pour avoir un framerate constant.
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. »

38

Sans oublier kbd_queue et OSdequeue.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

39

FireHunter (./36) :
Bon merci bolco

C'est qui ce mec encore ? grin

40

Sasume (./37) :
Ça peut être une bonne chose d’apprendre à utiliser kbhit voire mieux, _rowread, ainsi que les techniques de synchro pour avoir un framerate constant.


Ouaip, parce que j'ai un refresh du tonerre grin. Sinon là ça marche vraiment nickel.
Lionel Debroux (./38) :
Sans oublier kbd_queue et OSdequeue.


Ok, vais voir ça x)
Folco (./39) :
FireHunter (./36) :
Bon merci bolco

C'est qui ce mec encore ? grin


Désolé, connais pas triso

Bon en fait je comprends pas comment appliquer OSFastArrows() .... Je mets quoi comme argument ? x(

41

FireHunter (./40) :
Bon en fait je comprends pas comment appliquer OSFastArrows()

C'est une variable, pas une fonction. N'y touche pas en plus, regarde la doc, tu devrais t'en foutre (c'est pour les fonctions bloquantes de lecture clavier apparemment).

42

Ok, en plus j'ai regardé, en fait, la boucle while ne remettait pas à 0 la valeur de key du coup c'est comme si la touche était toujours virtuellement enfoncée.

Bon et aussi si ça fonce, c'est parce que j'ai aucune autre instruction grin

43

Alors normalement, pour un pong évolué, tu dois réguler ta vitesse de jeu et de lecture clavier sur une interruption, qui peut en plus elle-même tenir compte de l'affichage à l'écran. Avec ça, tu obtiens le meilleur ratio affichage/jouabilité. Mais commence déjà par la régulation de la vitesse des touches.

L'idéal est de combiner l'usage de rowread avec la réécriture de l'auto int 5 et la redirection de l'auto int 1 vers rien du tout.

44

Ça se complique quoi... Mais bon, bolco et les autres sont là pour te donner plus de détails si tu as besoin.
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.

45

Bon, j'vais essayer de trouver une docu de TIGCC en fichier HibView ^^. Merci bolco (classe le surnom triso).
Autre problème : comment définir le mouvement de la balle, sans s'embêter des effets qui entraînent des paraboles ? Je veux dire, va falloir calculer chaque coordonnée, donc je vais devoir faire une fonction qui se modifiera à chaque impact sur une raquette ou un bord haut/bas.
Aussi, l'IA du jeu : comment la faire se déplacer ? Pour l'instant j'l'ai faite se déplacer en random, histoire de bien comprendre le fonctionnement de kbhit.

Autant de questions qui sont des défis, mais c'est la base de la programmation grin

46

FireHunter (./45) :
Autant de questions qui sont des défis, mais c'est la base de la programmation

Ben le jour où tu n'as plus de défi, autant dire que t'arrêtes de coder parce que tu te fais chier, c'est clair. grin

Pour ta balle, tu peux pas rajouter constamment un décalage horizontal et un décamage vertical ? Je vois pas trop le problème, tu bloques où ?

47

Pour un Pong, tu veux détecter des états (la touche est-elle actuellement enfoncée ou non) des touches, pas des appuis (la touche a été appuyée n fois). Donc va voir du côté de _keytest (et lis bien la documentation au sujet des interruptions à rediriger!).
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é

48

Folco (./46) :
FireHunter (./45) :
Autant de questions qui sont des défis, mais c'est la base de la programmation

Ben le jour où tu n'as plus de défi, autant dire que t'arrêtes de coder parce que tu te fais chier, c'est clair. grin

Pour ta balle, tu peux pas rajouter constamment un décalage horizontal et un décamage vertical ? Je vois pas trop le problème, tu bloques où ?


Je voulais donner un mouvement vectoriel à la balle et le modifier par collision

49

Comment le mouvement de la balle doit-il évoluer en fonction du temps ? (quelle est l'équation de son mouvement en fonction de t ?)
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. »

50

J'oubliais : j'suis une tanche en maths. grin

Bon merci pour l'aide, mais je suis parti sur une idée simple :

La balle percute le bord haut :
- Si elle vient de la gauche, elle part à droite, et vice versa.
- Jusqu'à la prochaine collision, à chaque instant de la boucle while, elle descend de 1px en X et 1px en Y.
Et similairement pour le bord bas.

Mes conditions pour la percution des raquettes :
- Si la coordonnée Y du centre de la balle est comprise entre celle des deux extrémitiés de la raquette
- Si le centre de la balle est à 4px (rayon de la balle) du bord de la raquette
Alors si c'est la raquette de droite, la balle part à gauche, et vice versa
Alors si la balle vient d'en haut, elle part en bas, et vice versa.

D'où ce bout de code :
if (xb=>xpl && xb<=xpl+15 && yb=6)
{
  dep_hori = 1;
  dep_verti *= -1;
}


Pareil pour la raquette de la TI.
Et pour les collisions pour les bords, même principe.

Sauf que ça marche pas :s

51

Bah, en général c'est comme en optique, angle d'entrée = angle de sortie. Pour une surface verticale, ça fait que tu inverses additivement (prends l'opposé, c'est-à-dire -x) la coordonnée horizontale (l'abscisse) du vecteur de déplacement, pour une surface horizontale, ce sera la coordonnée verticale (l'ordonnée).

Maintenant, la mécanique est un peu plus compliquée que l'optique, la balle pourrait par exemple avoir un "effet" (une rotation autour d'elle-même qui cause un mouvement de précession, c'est-à-dire que le déplacement est modifié par cette rotation, et qui influence aussi les rebonds), mais dans un Pong, on néglige en général cet effet. En revanche, certaines versions de Pong permettent au joueur d'influencer la direction de la balle avec leur raquette d'une manière ou d'une autre, par exemple en déplaçant la raquette pendant que la balle rebondit sur elle, ou en faisant rebondir la balle sur un endroit différent de la raquette (on simule une raquette courbée dans le sens convexe, plus la balle touche proche de l'extrémité, plus le rebond sera dans la direction de cette extrémité).

(Avis aux non-mathématiciens ici: essayez de lui expliquer ça en des termes moins scientifiques. hehe)
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é

52

(de toute façon ce n’est pas une mauvaise chose de savoir formaliser les problèmes, amha)
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. »

53

Bon bon ...
Mine de rien, pendant les cours, j'ai bidouillé un peu.

Un léger bug subsiste.... j'vais récupérer le fichier et j'l'up, mais là je suis occupé à installer mon imprimante. j'éditerais x)

En gros, la balle descends mais en "frappant" le bord inférieur, elle le suit. Ensuite elle reste coincée dans le coin inférieur droit.

AVIS : Ce code est extrêmement dégueulasse ^^

54

Fais gaffe de pas rendre GTC responsable d'un redoublement en fin d'année grin A l'époque, le TI-Basic m'avait trop occupé pendant les cours de maths et de physique... C'est bête de perdre un an à cause de cette activité fort passionnante au demeurant.
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.

55

La balle reste en bas certainement parce qu’elle n’a plus de vitesse verticale… Il suffit de lui donner la bonne valeur.
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. »

56

Hop, ça marche nickel, en fait je redéclarais la valeur d'ajout aux coordonnées futures de la balle à chaque exécution du while grin

57

Rah, ces débutants en C... embarrassed

dehors

58

J'ai perdu l'habitude, j'était habitué au
ttd.jpg
sur ordi grin

59

On retombe sur une erreur du même type que la précédente smile

Les variables se déclarent :

- une fois pour toute,
- en dehors de toute structure de contrôle,
- au début de la fonction,
- après les déclarations de types.

Après, pour des raisons de lisibilité, on peut déroger à ces conseils mais des bugs peuvent en découler 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.

60

+1 ./59.
La lisibilité et la portabilité du code, qui sont deux éléments de la maintenabilité, sont diminuées par le mélange de code et de déclarations (autorisé par C99).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.