Poster un nouveau sujet Poster une réponse Page: 1,      >>
Snake, by Polymorph
Auteur Message
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 13 Nov 2011, 14:37   Citer 

J'ai pas vraiment trouvé de règlement sur ce forum, mais s'il est comme la plupart, il semblerait que mon code étant incomplet, je doive ouvrir un nouveau post pour les diverses questions... crazy.gif

Bonjour bonjour!

J'ai récemment commencé à coder mon propre snake, et je retrouve une erreur dans mon Pixel-test, me permettant de savoir si notre ami le serpent percute un obstacle. Donc, je viens vous montrer mon code, en espérant que quelqu'un sache d'ou ça vient, merci !

Pour le moment, j'ai un snake qui ne s'efface pas (je ferais ça avec les listes, dès que mes problèmes de collision seront réglé, n'ajoutons pas des emmerdes aux emmerdes!)


Code

Fonctoff
Effdessin
AxesNAFF //on enlève toutes les fioritures qui pourraient nous embêter sur l'écran
-47=>Xmin:47=>Xmax //j'ai du mal avec 0,94, et quand j'ai commencé le code, j'ignorais que Pxl-test prenait en compte les coordonées texte
-31=>Ymin:31=>Ymax //pareil
2=>L //L=lives, soit le nombre de vie
Lbl A //L'emplacement où on revient lorsqu'on perd
0=>A:0=>D //A le getkey, D la direction
0=>X:0=>Y //les coordonnés du Snake
3entAléat(-15,15)=>U
3entAléat(-10,10)=>V //Les coordonnées du point à manger. Ils sont de la forme 3q parce que mon snake avance de trois case, donc je veux qu'ils restent mangeables
RappelImage 1 //Flemme de faire le premier niveau à la main (y'a qu'un niveau pour le moment)

While A =/= 105
codeTouche => A //105 pour pouvoir l'arrêter facilement pendant les test, je le remplacerait par while 1 après
If A=24:1=>D
If A=25:2=>D
If A=26:3=>D
If A=34:4=>D //je donne juste un numéro à la direction

If D=1:X-3=>X
If D=2:Y+3=>Y
If D=3:X+3=>X
If D=4:Y-3=>Y //Je déplace le snake, je ferais probablement ça avec des boléens plus tard, mais c'est plus clair comme ça

If X=U et Y=V //Si je mange le point
Then
Pt-off(U,V
3entAléat(-15,15)=>U
3entAléat(-10,10)=>V //C'est reparti pour un point
End

*/Attention, ici ça bloque /*
-Y+31=>S
X+47=>T //Je transforme les coordonnées de X et de Y en coordonnées Texte
S -(D=1)+ 2(D=2)+(D=3)- 2(D=4)=>S
T - 2(D=1)-(D=2)+ 2(D=3)+(D=4)=>T //Le principe est de Tester le coin du carré pour qu'il soit négatif sur la croix à manger, mais positif sur toute autre surface (voir image après le code)

If Pxl-test(S,T //Si y'a quelque chose devant Snaky
Then
Ombre (-31,31) //Fais un semblant de Game over
EffDessin
If L=0 // Si tu n'as plus de vies
Then:Stop //Je mets le Then pour avoir le Else
Else
L-1=>L
Goto A //C'est reparti pour un tour
End
End

Pt-on(X,Y,2
Pt-on(U,V,3 //J'ai mis les points On à la fin pour qu'ils soient après le test.
End



Chaque case de mon snake ressemble à ça et je teste la case rouge en fonction de la direction


Et le point à manger ressemble à ça


Le résultat est qu'en horizontal ça marche très bien, mais dès que je me déplace en vertical, Badaboum, Game Over.

Si vous pouvez m'aider, vous rendrez un grand service à la nation! minied.gif

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 13 Nov 2011, 14:51   Citer 

J'ai encore du mal à trouver l'erreur.
Mais je te propose une méthode à employer à l'avenir. C'est ma préférée mais choisit la tienne (de préférée).


Code
0->Xmin
94->Xmax
0->Ymax
-62->Ymin
30->Y
50->X
40->A
40->B
pxl-Test(Y,X
pxl-On(Y,X
Texte(Y,X,"SCORE"
pt-On(X,-Y,2
Ligne(X,-Y,A,-B
  // Ces fonctions sont plutôt bien compatibles ainsi
  // Il s'agit seulement d'un exemple pour les coordonnées



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 13 Nov 2011, 14:59   Citer 

J'y avais réfléchis, et ça demandais pas mal de changements, et j'avais des bugs.
Je vais réessayer, ce sera déja plus lisible ^^
J'édite mon post, dès que j'ai fini.

Par contre, j'ai pas compris le principe du Pxl-on + Pt-on...

EDIT : ça m'envoie un game over dès le début, à la deuxième vie, snake bouge horizontalement, mais toujours game over quand je bouge verticalement.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 13 Nov 2011, 15:03   Citer 

pxl-on utilise les coordonnées des pixels (comme les textes).
pt-on utilise les coordonnées du graphique.

Mon post met en valeur les conversions qui permettent d'utiliser ces fonctions dans un même programme et avec le moins de tracas possibles.

Je soupçonne les coordonnées du graphique pour ton problème. Je cherche encore...

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 13 Nov 2011, 15:08   Citer 

Okay, pas de soucis, mais dans le cas présent, je comprends pas l'utilité du texte et de la ligne... qui ne forme qu'un seul point o.o

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Dim 13 Nov 2011, 15:26   Citer 

C'est juste un petite conseil pour le programme : avant de commencer, glisse un SauveBDG 0 et a la fin un RappelBDG 0, c'est plus pratique.
Après, quand t'as besoin de ton grpah t'es pas obligé de refaire FonctOn AxesAff Zoom6 et autres bref crazy.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 13 Nov 2011, 15:29   Citer 

Place Pt-Off(0,0) juste après EffDessin pour voir...
Il y a peut-être un rapport avec CECI.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 13 Nov 2011, 15:29   Citer 

Okay, merci, mais je pense fignoler les détails plus tard ^^

Apparamment après test, le jeu reconnais les coordonnées de Snaky comme étant tout en haut de l'écran, soit Y=0...

Quelqu'un a une idée de... pourquoi? >.<

EDIT : Trop lent. Apparemment c'est ça. Je vais essayer d'initialiser X et Y après avoir effacé l'écran.

EDIT 2 : J'initialise déja après avoir effacé l'écran. RappelImage peut-être? Je vais l'enlever pour tester...

EDIT 3 : Nan, ça marche toujours pas, et en enlevant la collision, il veut même plus manger le point.

EDIT 4 : D'après ce que j'ai lu, je vais remplacer X et Y par W et Z, on va voir si ça marche °°.

EDIT 5 : Rien de nouveau à signaler, c'est toujours aussi bloqué °°.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 13 Nov 2011, 15:46   Citer 

Puisque le problème semble cerné, il suffit d'ajoûter Pt-Off(0,0) juste après EffDessin.
La seconde étape peut alors être une amélioration des coordonnées.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 13 Nov 2011, 15:50   Citer 

Ben, non justement le problème n'est pas réglé

Comment tu peux améliorer les coordonnées après? (sachant que j'ai fait le change pour 0,94/-62,0)

EDIT : apparemment c'est mon boléen qui fait tout foirer, je vais le remplacer par des conditions.

EDIT 2 : Rien de nouveau, ça ne marche toujours pas. Snaky se déplace HORIZONTALEMENT, mais pas VERTICALEMENT. C'est complètement incompréhensible.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 13 Nov 2011, 16:18   Citer 

Donc reprendre ton ancien code et ajoûter Pt-Off(0,0) ne marche pas.
Je vais chercher ce qui cloche dans le code déjà posté.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 13 Nov 2011, 16:28   Citer 

nop'

De même, après test, il semblerait que le pixel testé lorsque je vais à gauche ait une ordonnée de 90...

Etrange oô

EDIT : fausse manip, l'ordonnée à 90 est fixée, mais on est pas avancé...

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 20 Nov 2011, 13:47   Citer 

Pwêt.
Ma version actuelle. Plutôt rapide et fluide, malheureusement, je n'ai pas réussi à fixer le problème du Pxl-Test.

Pour le moment c'est expérimental, y'a qu'un seul niveau, mais j'aimerai votre avis pour l'optimiser ^^


Code
//Snake
0=>Xmin:94=>Xmax
-62=>Ymin:0=>Ymax
FonctOff
AxeNAFF
PrgmSELECTOR
EffDessin
RappelImage 1 //Flemme de faire le premier niveau à la main (y'a qu'un niveau pour le moment)
Lbl A
0=>A:0=>D:1=>B:5=>N //A le getkey, D la direction, B l'avant du snake, N l'écart entre l'avant et l'arrière
48=>W:-30=>Z //les coordonnés de début du Snake, J'ai utilisé W et Z, puisqu'apparemment, X et Y risquent de bugger...
EffaceListe L1, L2
3entAléat(1,29=>U
3entAléat(-18,-1=>V //Les coordonnées du point à manger. Ils sont de la forme 3q parce que mon snake avance de trois case, donc je veux qu'ils restent mangeables
Pt-on(U,V,3
While 1
codeTouche => A //105 pour pouvoir l'arrêter facilement pendant les test, je le remplacerait par while 1 après
W=>L1(B
Z=>L2(B
Pt-on(L1(B), L2(B), 2
B+1=>B
If B>5
Pt-off(L1(B-N), L2(B-N), 2
If A>=24 et A=<26
A-23=>D          //je donne juste un numéro à la direction
If A=34:4=>D
W-3(D=1)+3(D=3=>W
Z-3(D=4)+3(D=2=>Z
If W=U et Z=V //Si je mange le point
Then
Pt-off(U,V
3entAléat(1,18=>U
3entAléat(-17,-1)=>V //C'est reparti pour un point
N+1=>N //On agrandit le Snake
Pt-on(U,V,3
End
If Pxl-Test(-Z,W
Goto 0
End

Lbl 0
Ombre(-62,0
EffDessin:EffEcran
Output(3,4,"GAME  OVER
Output(6,5,"SCORE
Output(6,12,N-5




Code
//SELECTOR
EffDessin
Texte(30,17,"JOUER
Texte(30,46,"QUITTER
Texte(40,35,"V 1.1
Texte(50,22,"BY POLYMORPH
12=>C
Repeat K=105
Ligne(C,-28,C+30,-28
Ligne(C+30,-28,C+30,-37
Ligne(C+30,-37,C,-37
Ligne(C,-37,C+30,-28
Codetouche=>K
If (C<32 et K=26) ou (C>12 et K=24)
Then
Ligne(C,-28,C+30,-28,0
Ligne(C+30,-28,C+30,-37,0
Ligne(C+30,-37,C,-37,0
Ligne(C,-37,C+30,-28,0
C+32(K=26)-32(K=24)=>C
End
End
If C=12:Return
If C=44
Then
EffDessin
EffEcran
Output(1,1,"
Stop:End



Qu'on soit clair, Je ne CHERCHE PAS à optimiser le Selecteur, je ferais ça plus tard, quand j'en aurai la foi, pour le moment, il marche comme il est et ça suffit.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 20 Nov 2011, 17:14   Citer 

La direction vers le bas (touche 34) n'est pas prise en compte par :
Code
If A>=24 et A=<26
A-23=>D

Essaie un de ces codes
Code
A-23-5(A=34=>E
If max(E={1,2,3,4
E->D


Code
max({1,2,3,4}(A={24,25,26,34->E
If E
E->D



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 20 Nov 2011, 17:55   Citer 

J'avais loupé une ligne dans le recopiage de mon code, sorry, c'est édité.

Je comprends pas bien comment marche le max dans ce code ...

Code
max({1,2,3,4}(A={24,25,26,34->D


tu peux m'éxpliquer?

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 20 Nov 2011, 19:37   Citer 

Je peux t'envoyer dans mon article sur les tests mais une explication directe demeure plus claire.

J'effectue un produit de listes. En détails :

A={24,25,26,34
donne {0,1,0,0} si A=25
donne {0,0,1,0} si A=26
donne {0,0,0,0} si A ne vaut aucune des valeurs indiquées.

{1,2,3,4}(A={24,25,26,34
donne {0,2,0,0} si A=25
donne {0,0,3,0} si A=26
donne {0,0,0,0} si A ne vaut aucune des valeurs indiquées.

max({1,2,3,4}(A={24,25,26,34
donne 2 si A=25
donne 3 si A=26
donne 0 si A ne vaut aucune des valeurs indiquées.

max revient ici à effectuer une somme
D'ailleurs je viens de me rendre compte qu'il faudrait un test pour ne pas annuler D.
J'édite mon code pour ce détail.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 20 Nov 2011, 19:38   Citer 

{1,2,3,4}(A={24,25,26,34 est le prouit de 2 listes (on pourrait aussi écrire : {1(A=24),2(A=25),3(A=26),4(A=36} en sachant que (A=X) revoie 1 si vrai et 0 si faux
Comme A ne peut prendre qu'une seule valeur, il y aura soit que des 0 (si A prend aucune des 4 valeurs) ou un chiffre de 1 à 4 et le reste des 0.

Le max permet donc de récupérer 0 si A ne vaut aucune des 4 valeurs, et sinon de récupérer 1 ou 2 ou 3 ou 4.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Lun 21 Nov 2011, 18:52   Citer 

Away d'ac, tu multiplie une liste, par une liste de boléen, d'après ce que j'ai compris, mais par contre, faudrait annuler pour 0.
ça marche ça?


Code
If max ({1,2,3,4}(A={24,25,26,34
Rep->D



----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 21 Nov 2011, 19:06   Citer 

oui, je crois que tu as raison, sinon quand on apuye sur une touche non fléchée, ça risque de buguer (enfin sauf si on inclue une commande quand ça vaud 0 ou alors que ça n'execute plus rien (donc équivalent de pause))

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Lun 21 Nov 2011, 19:10   Citer 

Bon, ce que j'ai écris au-dessus ne marche pas, mais j'ai trouvé autre chose, sauf que ça ralenti le code ! Pourtant je zappe l'utilisation de 2 conditions, savez vous pourquoi?


Code
max ({1,2,3,4}(A={24,25,26,34
D-(Rep!=0)D+Rep=>D



----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 21 Nov 2011, 19:17   Citer 

T'es sur de toi, si D vallait 3 et que l'on appuye sur bas, on obtient 7 !!!
ce ne serrait pas simplement
Rep (Rep=!=0) + D non(Rep) -> D ???

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Mar 22 Nov 2011, 15:11   Citer 

Je crois que (Rep!=0)Rep+(Rep=0)D=>D est juste.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 22 Nov 2011, 15:41   Citer 

Salut, je n'ai pas lu le début de la conversation, je ne suis pas au courant de ce qui se passe, donc je vais peut être dire une énorme bêtise, mais bon...

(Rep!=0)Rep+(Rep=0)D=>D

ça peut s'écrire

Rep+Dnon(Rep->D il me semble...

 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Mar 22 Nov 2011, 19:35   Citer 

Euh, j'vais tester!... : D

EDIT : ça marche, mais j'ai pas l'impression que ça accélère... normal?

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Mer 21 Déc 2011, 23:31   Citer 

Up!

De retour, pour vous jouer un mauvais tour : D
Snake, fonctionnel, pour le moment un seul niveau, mais aucun bug, et un menu pause assez sympathique ^^


Code
//Snake
0=>Xmin:94=>Xmax
-62=>Ymin:0=>Ymax
FonctOff
AxeNAFF
PrgmSELECTOR
EffDessin
Ligne(0,0,93,0
Ligne(1,-1,93,-1
Ligne(0,0,0,-60
Ligne(1,-1,1,-59
Ligne(93,0,93,-60
Ligne(92,-1,92,-59
Ligne(93,-60,0,-60
Ligne(92,-59,-1,-59
Lbl A
0=>A:4=>D:1=>B:5=>N
48=>W:-30=>Z
EffaceListe L1, L2
3entAléat(1,29=>U
3entAléat(-18,-1=>V
Pt-on(U,V,2
Pt-off(U,V,3
Pt-on(U,V
Lbl J
Repeat A=105 //Pour mettre le jeu en pause
codeTouche => A
W=>L1(B
Z=>L2(B
Pt-on(L1(B), L2(B), 2
B+1=>B
If B>5
Pt-off(L1(B-N), L2(B-N), 2
If A>=24 et A=<26
A-23=>D
If A=34:4=>D
W-3(D=1)+3(D=3=>W
Z-3(D=4)+3(D=2=>Z
If W=U et Z=V
Then:Pt-off(U,V
3entAléat(1,18=>U
3entAléat(-17,-1)=>V
N+1=>N
Pt-on(U,V,2
Pt-off(U,V,3
Pt-on(U,V
End
If Pxl-Test(-Z-(D=4)+(D=2),W+(D=1)-(D=3
Goto 0
End
SauveImage 2
EffDessin
RappelImage 1
Texte(10,39,"PAUSE
Texte(29,31,"REPRENDRE
Texte(38,35,"QUITTER
29=>I
Texte(I,26,">
Repeat K=105
Codetouche=>K
If K=25 et I>29
Then:Texte(I,26,"      //3 espaces
I-9=>I
Texte(I,26,">
End
If K=34 et I<38
Then:Texte(I,26,"       //3 espaces
I+9=>I
Texte(i,26,">
End
End
EffDessin
If I=29:Then
RappelImage 2
GotoJ:End
If I=38:Then
EffEcr
Output(1,1,"
Stop:End
Lbl 0
For(F,31,0,-1
Horizontale -31-F
Horizontale F-31
End
EffDessin:EffEcran
Output(3,4,"GAME  OVER
Output(6,5,"SCORE
Output(6,11,N-5




Code
//SELECTOR
EffDessin
RappelImage 0
Texte(30,17,"JOUER
Texte(30,46,"QUITTER
Texte(40,35,"V 1.1
Texte(50,22,"BY POLYMORPH
12=>C
Repeat K=105
Ligne(C,-28,C+30,-28
Ligne(C+30,-28,C+30,-37
Ligne(C+30,-37,C,-37
Ligne(C,-37,C+30,-28
Codetouche=>K
If (C<32 et K=26) ou (C>12 et K=24)
Then
Ligne(C,-28,C+30,-28,0
Ligne(C+30,-28,C+30,-37,0
Ligne(C+30,-37,C,-37,0
Ligne(C,-37,C+30,-28,0
C+32(K=26)-32(K=24)=>C
End
End
If C=12:Return
If C=44
Then
EffDessin
EffEcran
Output(1,1,"
Stop:End



Les images 1 et 0 sont les suivantes :
Image 0

Image 1 (sans le texte, hein, c'est juste pour fournir un aperçu)


Sinon, si vous m'expliquiez comment on fait un .83p avec wabbitemu, ce serait sympa minied.gif

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 22 Déc 2011, 1:20   Citer 

Le menu calculator\variables donne un aperçu des variables en mémoire et permet de les extraire.
Cependant il ne fonctionne pas avant la ti83plus.
Il te faut un autre émulateur ou bien renommer un 8xp en 83p. (parfois renommer fonctionne, parfois non)

Tu manipules les listes avec un pointeur (B) ce qui est une qualité. bigmouth.gif

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 22 Déc 2011, 10:44   Citer 

Si j'peux me permettre une remarque ... minied.gif (ou deux)

La routine n'intervient qu'à un seul endroit du programme, pourquoi ne pas l'intégrer directement ? winkle.gif
Sinon euh ... un petit conseil pour ceux qui recopient le programme sans trop s'y connaitre en calculatrice : je propose un SauveBDG1 / RappelBDG1 (une fois j'ai filé un programme en graphique à un ami comme ça, il s'y connaissait pas trop, il a réinitialisé sa calculatrice pendant le contrôle moyen crazy.gif ).

Par ailleurs une belle réussite, un beau snake, que je ne serais pas capable de créer winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Jeu 22 Déc 2011, 12:55   Citer 


Citer

Le menu calculator\variables donne un aperçu des variables en mémoire et permet de les extraire.
Cependant il ne fonctionne pas avant la ti83plus.
Il te faut un autre émulateur ou bien renommer un 8xp en 83p. (parfois renommer fonctionne, parfois non)


J'ai du mal à bien comprendre. De plus, je n'ai pas la moindre idée de l'utilité d'un .8xp, j'ai juste vu que lorsqu'on nous filait un .83p, on pouvait directement le mettre dans la calto.
Bref, la vraie question est : quelle est la démarche à suivre pour vous filer un fichier que vous pourrez tester sur émulateur sans avoir à faire de manipulation?


Citer
Tu manipules les listes avec un pointeur (B) ce qui est une qualité.


Un pointeur, c'est une adresse dans la mémoire, non? Mais, un emplacement d'une liste aussi? C'était purement intuitif, et je suis toujours aussi faché avec les pointeurs (enfin en C, en Ti-Basic, je les utilise sans m'en rendre compte xD)


Citer
La routine n'intervient qu'à un seul endroit du programme, pourquoi ne pas l'intégrer directement ?


Explique.
Je vois pas réellement ce qu'est une routine...


Citer

Sinon euh ... un petit conseil pour ceux qui recopient le programme sans trop s'y connaitre en calculatrice : je propose un SauveBDG1 / RappelBDG1 (une fois j'ai filé un programme en graphique à un ami comme ça, il s'y connaissait pas trop, il a réinitialisé sa calculatrice pendant le contrôle moyen crazy.gif ).


Merci de me rappeler ça! J'avais complètement oublié, et vu que j'ai l'intention de faire circuler mon programme dès la rentrée, faut que je fasse ça. J'effacerait également L1 et L2 à la fin du programme, parce que quand on joue BEAUCOUP, ça peut faire des ERR:Memory... minied.gif


Citer

Par ailleurs une belle réussite, un beau snake


Tu l'as essayé (auquel cas c'est chouette) ou tu dis ça d'après ce que j'ai dis (auquel cas, c'est juste sympa de ta part)?


Citer
que je ne serais pas capable de créer winkle.gif




C'est vraiment pas très compliqué en fait, si tu veux en savoir plus, tu me demande hein, mais je suis pratiquement sûr que tu as le niveau ^^.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 22 Déc 2011, 13:33   Citer 

Il y a plus simple que l'émulateur pour créer un 83p mais ta question portait sur l'émulateur wabbitemu.
Tu as déjà eu le courage de recopier ton code donc il reste à l'écrire dans un éditeur pour créer un programme.

J'ai l'intention de m'en occuper.
Seulement tu n'as pas employé de syntaxe d'éditeur donc cela me prendra du temps de remplacer des caractères.

--

ti82 : 82p
ti82stat(fr)/ti83 : 83p
ti83+/ti84+ : 8xp

Comme l'émulation d'une 83 ne permet pas d'extraire de 83p via wabbitemu (jusqu'à preuve du contraire car cela ne fonctionne pas chez moi), je te propose :
-d'émuler une 83+ puis d'extraire un 8xp puis de le renommer en 83p
-d'émuler une 83 dans un autre émulateur (vti a l'avantage d'être très polyvalent tant au niveau des roms que des skin et de la mémoire.)

----

routine : procédure annexe à un programme qui peut être appelée à tout moment.
Ce terme est employé dans des languages plus puissants que le Ti-Basic et dans lesquels on définit une fonction au début du programme via des define ou des include.
En Ti-Basic il est impossible de définir une fonction de cette manière et elles ne peuvent avoir d'arguments. On se contente de "prgmXXX"
Certains ne savent plus distinguer les languages dans leur vocabulaire.

Il te propose d'intégrer SELECTOR au programme principal.
Je répondrai NON car ce programme est destiné à être enrichi et sa séparation permet d'accélérer le programme.

Sinon j'ai un autre plan en tête, qui a très bien fonctionné pour vibra.
Le programme principal servirait à initialiser, à générer des niveaux et un second programme ne contiendrait que la boucle de déplacement/nourriture avec éventuellement le game over et la pause.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 22 Déc 2011, 14:07   Citer 

Le fait est juste que je ne vois pas l'architecture générale d'un snake, et que les jeux ne sont pas mon fort crazy.gif Donc pour moi si c'est un peu dur bigmouth.gif

Une routine est un sous-programme ... le tien n'intervenant qu'une fois dans le programme principal je propose de directement l'intégrer.

Enfin si je l'ai essayé ben en fait non ^^' mais si tu me met un petit 83p ou 8xp la oui winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Jeu 22 Déc 2011, 16:28   Citer 

Ok, je vais essayer Vti pour avoir un .83p!
Mais apparemment, on pouvait le faire avec Ti Programm Editor. Faudrait que j'essaie de le faire, mais j'arrive pas bien à faire marcher ce truc ^^


Citer
Sinon j'ai un autre plan en tête, qui a très bien fonctionné pour vibra.
Le programme principal servirait à initialiser, à générer des niveaux et un second programme ne contiendrait que la boucle de déplacement/nourriture avec éventuellement le game over et la pause.



J'y avais pensé, mais finalement, à part rendre le code plus clair, ça servait à rien. En plus, ça prend du temps, donc je l'ai pas fait ^^.

Comme vous n'avez pas encore essayé ce snake, je dois préciser que malheureusement, il est LENT. Donc, pour le moment, y'a aucun challenge, et c'est pas très intéressant... Quelqu'un a une idée de comment l'accélérer (la je touche vraiment aux limites du TI-Basic... je suis sûr qu'en Axe ou en Asm, il n'aurait pas le moindre soucis...)

PS : @The Key:

Citer

Le fait est juste que je ne vois pas l'architecture générale d'un snake, et que les jeux ne sont pas mon fort


L'architecture, elle est archi-simple:


Code
Définit les coordonnées du point à manger
While 1
Getkey => K
En fonction de la touche pressée, définit une variable (ici D) qui indique la direction
En fonction de la direction, fait évoluer les coordonnées.
Rentre les coordonnées dans deux listes à l'emplacement suivant
Teste si l'emplacement est occupé
Affiche le point des dernières coordonnées de la liste
Efface le point d'emplacement (dernier - Nombre de points mangés)
Ajoute 1 à la variable désignant l'emplacement dans la liste

+
Si les coordonnées du snake sont égales à celles du point à manger
Tu l'efface
Tu ajoute un au nombre de points mangés
Tu définit un nouveau point
Tu l'affiche

End



----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 22 Déc 2011, 18:30   Citer 

En fait il y a juste un détail qui me parait compliqué, c'est de rajouter un point a chaque fois que le snake se goinfre de pixels. j'ai vu que tu le faisais avec des listes, tout comme Ratuss, donc j'ai une petite idée, du moins avec quels outils le faire ... mais ensuite sad.gif

Quand à rendre le snake fluide euh ... je sais que le snake du sujet qui a 50k vues et 30 pages de réponses (celui de ratuss) est très fluide, pour l'avoir testé. Donc, tu peux éventuellement aller voir comment il a fait winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 22 Déc 2011, 19:08   Citer 

ratuss : snake extra fluide
vibra : snake 10 labyrinthes qui reste correctement fluide
(lien de téléchargement par titozzz)
Si tu veux un snake avec du challenge en basic regarde plutôt celui de vibra. C'est une version grandement améliorée de celui de ratuss mais bien plus longue à copier. Je m'en suis beaucoup servi.

Concernant les émulateurs, il y a de la doc et des téléchargements dans la rubrique articles.

J'ai uploadé tes programmes. Il me manque les images 83i alors tu devras enlever des guillemets dans les programmes aux lignes StorePic et RecallPic.
Et surtout tu pourras héberger la totalité des fichiers sur ton propre hébergeur ainsi je n'en aurai plus la charge.
http://www.mediafire.com/download.php?xwgo9qv61kxclsj
http://www.mediafire.com/download.php?8057x1n2wruf3k0

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Jeu 22 Déc 2011, 21:57   Citer 

Merci pour tout ! bigmouth.gif
J'ai jeté un coup d'oeil au snake de Ratuss, mais c'est bourré de Lbl et de goto, j'y comprends rien xD Je le recopierai probablement, si j'ai le courage (mais je suis courageux !)
Pour le snake de vibra, j'ai eu un bug sur le dimensionnement d'une liste (bug apparemment déja repéré, mais ils n'expliquent pas comment le régler...) et un autre du genre "hiéroglyphe", sauf que je pouvais pas ouvrir le fichier, donc trouver l'erreur et la régler.

Pom pom pom!
Ici joint les deux .83p et les deux images (merci les guides minied.gif )
https://www.box.com/s/jz1euxvn5eha5lkd11xm


----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 23 Déc 2011, 10:55   Citer 

Le snake de ratuss n'est pas si compliqué ... tous les labels B,C,D,E,F et G servent à faire les "décors", les cases où l'on peut mourir.
Le label A est le label qui permet de jouer ... et si tu remarques bien, après tous les lables, on a "Goto A" winkle.gif

(ps : l'image 0 est drôlement bien faite ... en aussi peu de lignes ? ahh.gif )

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Ven 23 Déc 2011, 12:22   Citer 

Ben je comprends pas plus en partant du label A, t'as un Théta, avec des parties décimales de listes, que si elles sont égales à 7812 tu les effaces... wtf? XD


Citer
(ps : l'image 0 est drôlement bien faite ... en aussi peu de lignes ? )



Nan mais crois pas, l'image 0 elle est faite à la main sur paint hein, et recopiée à la main sur calto après moodforlove.gif

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Sam 24 Déc 2011, 12:00   Citer 

Ah je me disais aussi godgrace.gif

Pour le snake de ratuss c'est bien parce qu'il est incompréhensible qu'il est rapide ... ! Si t'y passes un petit moment tu finiras pas comprendre je pense winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Dim 01 Jan 2012, 23:08   Citer 

Patatra! J'ai bien bossé pendant les vacances et voici la 1.6! bigmouth.gif

https://www.box.com/s/jz1euxvn5eha5lkd11xm

J'ai juste un petit soucis au niveau de Ti-Program Editor... Il ne reconnais pas le N que l'on trouve dans le menu variable, dans finance, et le remplace par un double S. Vous suffira de le remplacer par celui-là (ou n'importe quelle autre variable que vous n'utilisez jamais ^^) C'est pour la sauvegarde (oui, parce que maintenant, vous pouvez sauvegarder votre partie! Bien pratique quand le prof se met à dicter le cours ^^.

Preview :


----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Lun 02 Jan 2012, 9:53   Citer 

C'est à vitesse réelle ? happy.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Lun 02 Jan 2012, 13:18   Citer 

ouep.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 03 Jan 2012, 14:12   Citer 

Je doûte que le screen soit à vitesse réelle car je le trouve un peu lent.
Ou bien le rendu est moins bien que mon espérance.

Indique que le "1->N" utilise la variable finance en dehors de ton screen : j'ai posté une question là dessus avant d'éditer car je n'avais pas eu la patience de le regarder jusqu'au bout. Et je ne serai pas forcément le seul.

Je ne vois pas de procédure de chargement. Or j'immagine que le 1->N sert à cela.
Il vaut mieux se passer de variable finance et utiliser la liste pour cela aussi.

Ce serait bien d'utiliser une liste personnalisées pour stocker les données.
Pour cela dimensionne la liste au début du programme puis substitue la à la liste3 dans le code.
8->dim(lSNK
Pour la liste SNK. "l" désigne la dernière option du menu liste>ops.

Je suis adepte de l'économie de mémoire alors je n'aime pas trop les menus graphiques.
Et je déteste l'animation avec une jauge qui ralentit le programme innutilement.
(je supportais les menus de la v1.0 mais là c'est trop pour moi)

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Mar 03 Jan 2012, 19:40   Citer 

Navré, c'est vraiment pas destiné au programmer qui sent toute la mémoire perdu dans la pratique, mais à l'utilisateur lambda, qui trouve ça "Tr0Kl4sS" minied.gif


Citer
Je doûte que le screen soit à vitesse réelle car je le trouve un peu lent.



Erf, là désolé, c'est pas tout à fait à vitesse réelle, mais presque...


Citer
Je ne vois pas de procédure de chargement. Or j'immagine que le 1->N sert à cela.
Il vaut mieux se passer de variable finance et utiliser la liste pour cela aussi.



Je te renvoie à la partie du code s'occupant de cela


Code
If I=33:Then
8=>dim(L3
W=>L3(1):Z=>L3(2
U=>L3(3):V=>L3(4
L=>L3(5):N=>L3(6
D=>L3(7):B=>L3(8
1=>N



Je voulais au début faire une condition If dim(L3), mais ça marchait pas, alors j'ai essayé d'utiliser un boléen dont la valeur n'était jamais modifiée pour ça.
Si tu as une meilleure solution, je suis tout oui (parce que bien sûr, je la supprime la liste quand je reprend la sauvegarde pour prendre moins d'espace)

EDIT :
Citer
l ne reconnais pas le N que l'on trouve dans le menu variable, dans finance, et le remplace par un double S


J'avais déja précisé ^^.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 03 Jan 2012, 20:30   Citer 

Pour garrentir l'existance d'une liste dont on connait la taille, le plus simple est de faire:
longueur de la liste -> dim(nom de la liste)

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 03 Jan 2012, 21:50   Citer 

Je voulais demander de préciser hors du screen QUEL N est une variable de finance. Car ta description désigne N sans précision. (un N ? deux N ? tous les N ?)
Seul le screen m'a permi d'être sûr.

Tu sauvegardes des variables dans la liste avec la zone que tu cites mais il n'y a aucune procédure de chargement de cette liste dans les variables.
L3(1)->W:L3(2)->Z etc

Pour tester si une partie est déjà sauvegadée, il vaut mieux (à mon avis) utiliser une variable stockée dans la liste L3 et dont l'état 0 signifie "absence de sauvegarde".
En effet l'usage de X->dim(lSNK) remplit lSNK de zéros quand lSNK n'existait pas.
Si tu veux vraiment effacer la liste et effectuer des tests dessus, il faudra l'initialiser systématiquement au début et la supprimmer à la fin quand tu ne veux pas sauvegarder.
L'idée classique est d'écrire 9->dim(L3) au début.


Code
9->dim(lSNK
// menu de démarrage
If lSNK(1
prgmCHARGERPARTIE
// boucle de jeu
// pause et sauvegarde
{1,W,Z,U,V,L,N,D,B->lSNK  // cette ligne n'a pas besoin que lSNK existe avant
// fin du prog

// si on sélectionne dans un menu "quitter sans sauver" ou "effacer la sauvegarde" alors on écrit 0->lSNK(1)
La suppression sera assurée ci-dessous.

If not(lSNK(1
DelVar lSNK


ps : ma critique sur le graphique m'est très personnelle. Il en faut pour tous les goûts.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Mar 03 Jan 2012, 23:08   Citer 

Ah, pardon, le chargement est dans le selector ^^

EDIT : merci de la remarque, il est dans le selector de ma calculatrice, mais pas celui du programme que je vous ai fait suivre, merci de la remarque!


Code
//tout à la fin du selector
If N:then
L3(1=>W
L3(2=>Z
L3(3=>U
L3(4=>V
L3(5=>L
L3(6=>N
L3(7=>D
L3(8=>B


Je fais faire ce que vous dites, mettre un liste à 9 entrées ou la première sera un boléen, c'est une très bonne idée ^^. Mais je m'occupe de ça plus tard, là il est l'heure d'aller dormir crazy.gif

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Mer 04 Jan 2012, 23:01   Citer 

Petite mise à jour complète de mon snake, voici la 1.7 !

- Dorénavant, les version sont dans le programme Snake, donc vous pouvez considérer que le Selector est en version finale.
- Suite à un codage d'un deuxième snake pour essayer une technique différente (je donne plus de détails si ça intéresse quelqu'un) j'ai remis un peu en forme mon code, et il est plus rapide maintenant !
- Modification de la sauvegarde à l'aide du boléen dans la liste.

Je suis en attente sur le réglage de mon tout dernier bug : lorsque vous mangez un point et que les coordonnées du nouveau point se trouvent éxactement à l'emplacement de l'ancien, il n'est pas mangé une nouvelle fois et vous le traversez. Le point peut également apparaître sur la dernière case de votre queue.
(N.B. : Ces bugs ont chacun une probabilité d'1/522, si mes calculs sont justes, mais j'aimerai les régler quand même ^^)

https://www.box.com/s/jz1euxvn5eha5lkd11xm


Code
//SNAKE
StoreGDB 1
0üXmin:94üXmax
ú62üYmin:0üYmax
FnOff
AxesOff
ClrDraw
RecallPic 0
Text(30,17,"JOUER
Text(30,46,"QUITTER
Text(50,22,"BY POLYMORPH
Text(40,35,"V 1.7
prgmSELECTOR
If Lƒ(1):Then
ClrDraw
RecallPic 2
69!:69!:69!:69!
Goto J0:End
DelVar L
Lbl D
L+1üL
ClrDraw
prgmZDECORS
Lbl A
0üA:4üD:1üB:5üN
48üW:ú30üZ
ClrList L,L‚
Repeat not(pxl-Test(úV,U
3randInt(1,29üU
ú3randInt(1,18üV
End
Lbl J0
Pt-On(U,V,2
Pt-Off(U,V,3
Pt-On(U,V
Lbl J
Repeat A=105
Repeat A
WüL(B
ZüL‚(B
Pt-On(W,Z,2
B+1üB
If B>N
Pt-Off(L(B-N),L‚(B-N),2
W-3(D=1)+3(D=3üW
Z-3(D=4)+3(D=2üZ
If W=U and Z=V
Then:Pxl-Off(úV,U
Repeat not(pxl-Test(úV,U) or pxl-Test(1-V,U
3randInt(1,18üU
ú3randInt(1,17)üV
End
N+1üN
If N=20:Goto D
Pt-On(U,V,2
Pt-Off(U,V,3
Pt-On(U,V
End
If pxl-Test(úZ-(D=4)+(D=2),W+(D=1)-(D=3
Goto 0
getKeyüA
End
If Aù24 and A÷26
A-23üD
If A=34:4üD
End
StorePic 2
ClrDraw
RecallPic 1
Text(10,39,"PAUSE
Text(25,31,"REPRENDRE
Text(33,36,"SAUVER
Text(41,35,"QUITTER
25üI
Text(I,26,">
Repeat K=105
getKeyüK
If K=25 and I>25
Then:Text(I,26,"   "
I-8üI
Text(I,26,">
End
If K=34 and I<41
Then:Text(I,26,"   "
I+8üI
Text(I,26,">
End
End
ClrDraw
If I=25:Then
RecallPic 2
DelVar Pic2
69!:69!:69!
Goto J:End
If I=33:Then
9üdim(Lƒ
{1,W,Z,U,V,L,N,D,Bü
Text(28,25,"SAUVERGARDE
For(F,23,66
For(G,28,34
Pxl-Change(G,F
End
End
69!:69!
Text(36,29,"TERMINEE!
For(F,1,6
69!:End
ClrHome
ClrDraw
Output(1,1,"
Stop:End
If I=41:Then
DelVar Pic2
ClrHome
Output(1,1,"
RecallGDB 1
ClrList L,L‚
Stop:End
Lbl 0
For(F,31,0,ú1
Horizontal ú31-F
Horizontal F-31
End
ClrDraw:ClrHome
Output(3,4,"GAME  OVER
Output(6,5,"SCORE
Output(6,11,N-20+15L
ClrList L,L‚
RecallGDB 1




Code
//SELECTOR
12üC
Repeat K=105
Line(C,ú28,C+30,ú28
Line(C+30,ú28,C+30,ú37
Line(C+30,ú37,C,ú37
Line(C,ú37,C,ú28
getKeyüK
If (C<32 and K=26) or (C>12 and K=24)
Then
Line(C,ú28,C+30,ú28,0
Line(C+30,ú28,C+30,ú37,0
Line(C+30,ú37,C,ú37,0
Line(C,ú37,C,ú28,0
C+32(K=26)-32(K=24)üC
End
End
If C=12:Return
If C=44
Then
ClrDraw
ClrHome
Output(1,1,"
Stop:End
If Lƒ(1):Then
Lƒ(2üW
Lƒ(3üZ
Lƒ(4üU
Lƒ(5üV
Lƒ(6üL
Lƒ(7üN
Lƒ(8üD
Lƒ(9üB
{0ü




Code
//ZDECORS
Line(3,0,93,0
Line(4,ú1,92,ú1
Line(3,0,3,ú60
Line(4,ú1,4,ú59
Line(93,0,93,ú60
Line(92,ú1,92,ú59
Line(3,ú60,93,ú60
Line(4,ú59,92,ú59
If Lù2:Then
Line(17,ú11,79,ú11
Line(17,ú12,79,ú12
Line(17,ú13,79,ú13
Line(17,ú47,79,ú47
Line(17,ú48,79,ú48
Line(17,ú49,79,ú49
End
If Lù3:Then
Line(38,ú23,38,ú37
Line(39,ú23,39,ú37
Line(40,ú23,40,ú37
Line(56,ú23,56,ú37
Line(57,ú23,57,ú37
Line(58,ú23,58,ú37
End
If Lù4:Then
Line(14,ú25,14,ú5
Line(15,ú25,15,ú5
Line(16,ú25,16,ú5
Line(14,ú35,14,ú55
Line(15,ú35,15,ú55
Line(16,ú35,16,ú55
Line(80,ú25,80,ú5
Line(81,ú25,81,ú5
Line(82,ú25,82,ú5
Line(80,ú35,80,ú55
Line(81,ú35,81,ú55
Line(82,ú35,82,ú55
End
If Lù5:Then
Line(17,ú35,79,ú35
Line(17,ú36,79,ú36
Line(17,ú37,79,ú37
Line(17,ú23,79,ú23
Line(17,ú24,79,ú24
Line(17,ú25,79,ú25
Pt-Off(48,ú36,2
Pxl-Off(36,48
Pt-Off(48,ú24,2
Pxl-Off(24,48
Pt-Off(27,ú36,2
Pxl-Off(36,27
Pt-Off(27,ú24,2
Pxl-Off(24,27
Pt-Off(69,ú36,2
Pxl-Off(36,69
Pt-Off(69,ú24,2
Pxl-Off(24,69



Le tout prends 2ko de programme, + 1,5ko en image.

Preview:


----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 05 Jan 2012, 0:16   Citer 

Pour le rendre encore plus rapide il est possible d'extraire la boucle qui permet de jouer dans un programme à part. Selon ce qu'on extrait le résultat peut être grandement amélioré mais parfois dégradé.

Pour éviter que le point apparaisse n'importe-où, il est préférable d'effectuer un pixel-test à l'emplacement aléatoire, ce que tu as déjà fait il me semble.
Ajoûte un second pixel test ou modifie le premier décalé d'un ou deux pixels pour être sûr de détecter aussi bien les obstacles que le serpent.

La dernière nuance que j'ai en tête est qu'utiliser une liste personnalisée au lieu de L3 évite le risque que la liste L3 soit modifiée par un autre programme ou des calculs.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Jeu 05 Jan 2012, 17:30   Citer 

Sortir la boucle du programme, j'ai essayé, je n'ai pas vu de différence °°


Citer

Pour éviter que le point apparaisse n'importe-où, il est préférable d'effectuer un pixel-test à l'emplacement aléatoire, ce que tu as déjà fait il me semble.
Ajoûte un second pixel test ou modifie le premier décalé d'un ou deux pixels pour être sûr de détecter aussi bien les obstacles que le serpent.



J'ai déjà deux pixel-test ! Il m'en faudrait 4 pour éviter qu'il réapparaisse à l'exact même endroit :/ Mon problème, c'est que le déplacement se fait avant le test... est-ce que si je place le test avant, ça sera réglé?


Citer

La dernière nuance que j'ai en tête est qu'utiliser une liste personnalisée au lieu de L3 évite le risque que la liste L3 soit modifiée par un autre programme ou des calculs.


Ouais, je vais le faire ça. C'est juste que pour le moment, j'avais commencé un programme Poker ou je m'étais amusé à faire que des listes custom, et du coup, ma calto est bourrée de listes xD Mais je vais le faire pour le programme ici ^^.

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 05 Jan 2012, 18:33   Citer 

Le programme ne s'accélère pas par extraction : c'est très bon signe.
Cela signifie principalement qu'aucun Goto ni le poids ne ralentit radicalement le programme.

Je doûte de la signification de ceci. Je pense tout d'abord à une faute.
Code
Repeat A=105
Repeat A



Je vais potasser tes pixel-test. Mais :

Code
***  * *   ***
***   *    * *
***  * *   ***
mur pomme serpent

Je pense qu'il suffirait de tester les pixels des coins pour détecter n'importe quoi comme case invalide pour la nouvelle pomme. (c'est une des deux solutions que je proposais)

Si le problème du test vient de l'ordre des effacements dans la boucle, il serait effectivement utile de changer cet ordre.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Polymorph



Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Jeu 05 Jan 2012, 21:02   Citer 


Citer
Le programme ne s'accélère pas par extraction : c'est très bon signe.


Ouais, enfin ça signifie que j'ai atteint mon maximum quoi ^^.
Le faire accélère peut-être un micro chouilla, mais ça pose tous les problèmes d'étiquette liés aux goto...


Citer

Je doûte de la signification de ceci. Je pense tout d'abord à une faute.

Code
Repeat A=105
Repeat A



Pas du tout!
Le premier repeat englobe la boucle complète de jeu. Le second, c'est mon astuce perso pour l'accélérer! ^^ C'est le code "ligne droite", celui que tu répète tant qu'aucune touche n'est pressée, pour éviter de faire le test de direction à chaque tour. Ainsi, après le premier End, tu as les test de direction, suivis du second End. Mon code m'avait paru plutôt bien écrit, et pour ma part, je le trouve très compréhensible! minied.gif


Citer

Je pense qu'il suffirait de tester les pixels des coins pour détecter n'importe quoi comme case invalide pour la nouvelle pomme.


Pas bête du tout. Ainsi je fais rentrer un seul test au lieu de deux à quatre ^^. Mais ça ne règle toujours pas mon problème, qui ne vient pas du test, mais de l'ordre (le point n'apparait que tout devant ou tout derrière, jamais au milieu du snake [ce qui signifie que mon pixel-test est juste]. Tout derrière, il est partiellement effacé car le snake s'agrandit. Devant, à cause de l'ordre =) Je vais essayer de changer l'ordre pour voir si ça règle tout ça!

EDIT : changer l'ordre a permi d'éviter le bug d'arrivage devant. Et j'ai eu une vision pendant que je testais, car le bug à l'arrière est resté.
En fait, le point apparaît avant le dernier maillon du serpent, mais lorsqu'on mange le point, l'écart entre le point à tracer et celui à s'effacer s'étend d'un dans la liste, et donc on efface LE MÊME POINT 2 FOIS DE SUITE !
Il faudrait que j'enlève cette commande... des idées?

----------------------

Citer
Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter.


Polymorph, 23/11/2011
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Page générée en 6 requêtes