Autorisation : Membre
Nb de messages : 25
Inscrit le : Lun 03 Déc 2012, 20:00
Posté le : Lun 03 Déc 2012, 20:04
Bonsoir a tous les amis!
commençant a avoir trop de programme de ma calculatrice, je me demandais comment faire pour créer un programme comportant un menu du style:
Jeux: -Snake
-Pong
-... etc
de sorte a se qu'il y est 3/4 programme dans un!
Merci
p.s. je suis tout nouveau en terme de programmation
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 03 Déc 2012, 20:12
Commande Menu() du menu prgm+C et label Lbl de prgm+9 et goto de prgm+0
Dans cet exemple j'ai pris les labels A,B,Q et M mais ils sont biensûr personnalisables.
Les labels sont toujours 1 ou 2 caractère(s) alphanumérique(s).
Code
Lbl M
Menu("TITRE","NOM1",A,"NOM2",B,"QUITTER",Q
Lbl A
// code du programme 1
Goto M
Lbl B
// code du programme 2
Goto M
Lbl Q
Faire ce regroupement est déconseillé voire impossible si les programmes inclus ont des lables identiques entre eux ou avec le programme de menu.
---------------------- 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)
---------------------- 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)
Autorisation : Membre
Nb de messages : 25
Inscrit le : Lun 03 Déc 2012, 20:00
Posté le : Lun 03 Déc 2012, 21:17
Alors... j'ai essayé
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"PONG",D,"SNAKE",E,"QUITTER",Q
:Lbl A
:entAléat(1,6)
:Goto M
:Lbl C
:entAléat(0,1)
:If Rép=0
:Disp "FACE"
:If Rép=1
:Disp "PILE"
:Goto M
Alors petit bémol ... le programme Pile ou face marche par accout je suis obligé de revenir au menu principal pour continuer le pile et face tandis que le dee de 6 quand a lui ne fonnctionne pas :S pas cool ...
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 03 Déc 2012, 23:36
Si le programme DEEDE6 causait un affichage parce que l'aléatoire était à la fin du programme, il faut maintenant ajoûter une fonction pour cet affichage.
Par exemple "Pause entAléat(1,6"
Place une Pause à la fin de PILEOUFACE pour pouvoir lire les résultats.
Tu peux créer une boucle autour du programme pour rester dans celui-ci aussi longtemps que désiré. (et plus besoin de pause)
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"PONG",D,"SNAKE",E,"QUITTER",Q
:Lbl A
:Pause entAléat(1,6
:Goto M
:Lbl C
:Repeat Rép-105 // quitte si touche pressée autre que Entrer
:entAléat(0,1
:If Rép=0
:Disp "FACE"
:If Rép
:Disp "PILE"
:Repeat Rép // attend une pression de touche
:codeTouche
:End
:End
:Goto M
EDIT : Le premier Rép du programme était un K avant une correction.
---------------------- 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)
Autorisation : Membre
Nb de messages : 25
Inscrit le : Lun 03 Déc 2012, 20:00
Posté le : Mar 04 Déc 2012, 22:00
J'ai essayé:
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"PONG",D,"SNAKE",E,"QUITTER",Q
:Lbl A
:Pause entAléat(1,6)
:Goto A
:Goto M
:End
:Lbl C
:Repeat K-105
:Pause entAléat(0,1)
:If Rép=0
:Disp "FACE"
:If Rép=1
:Disp "PILE"
:Goto C
:Goto M
sa a l'air de fonctionner me reste plus qu'a entrer les autres code programme.
Le seul hic notable c'est que je ne retourne pas au menu principal du programme... mais bon, ce n'es qu'un détail pour le moment. Je vous recontacte des que j'ai fini ma programation (que c'est long sans le cable ^^')
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 04 Déc 2012, 23:10
Ce que tu as écris est faux car
-tu ne referme pas la boucle Repeat.
-tu places un End innutile après DEUX Gotos dont le second aussi innutile
Même si cela semble correct, cela fera n'importe quoi quand tu ajoûteras des choses.
Quant à moi j'ai cafouillé entre K et Rép pour la détection des touches pressées. Remplaces K par Rép.
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"PONG",D,"SNAKE",E,"QUITTER",Q
:Lbl A
:Repeat Rép-105
:Disp entAléat(1,6
:Repeat Rép
:codeTouche
:End
:End
:Goto M
:Lbl C
:Repeat Rép-105
:entAléat(0,1
:If Rép=0
:Disp "FACE"
:If Rép
:Disp "PILE"
:Repeat Rép
:codeTouche
:End
:End
:Goto M
---------------------- 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)
J'ai une erreur domaine la ou j'ai indiquer quand je lance le snake, se qui est etrzange c'est qu'il sagit de la partie du pong . Tu peux encore m'aider? Le Codage est bon? Corrige moi linkakro si il le faut (sans sous entendu )
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 05 Déc 2012, 22:17
C'est parce qu'il y a conflit entre les labels des deux programmes originaux. Quand tu mets leurs codes dans un même programme, un seul Lbl est reconnu pour tous les goto portant son étiquette.
Tu dois changer des Goto et Lbl pour éviter le conflit.
C'est pour ça que j'ai dit plus tôt que c'est déconseillé de les rassembler.
rappel : les étiquettes sont deux caractères chiffre ou lettre
---------------------- 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)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 06 Déc 2012, 20:27
Non. Il faut changer les étiquettes.
L'étiquette reconnue parmi plusieurs identiques est toujours la première du programme dans le sens normal de lecture.
---------------------- 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)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 08 Déc 2012, 10:43
Par exemple dans la partie du PONG, remplace "Lbl 2" par "Lbl P2" et "Goto 2" par "Goto P2"
Ici j'ai remplacé l'étiquette "2" par "P2", dans la partie PONG bien sûr.
Ainsi il n'y a plus confusion entre "Lbl 2" du snake et "Lbl P2" du pong.
Il faut que chaque goto corresponde à un unique label (Lbl) , quelle que soit l'étiquette choisie. Il peut y avoir plusieurs gotos identiques mais il faut un seul Lbl par étiquette.
Pour info, "label" signifie "étiquette" en anglais.
---------------------- 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)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 09 Déc 2012, 21:02
Si tu compiles des programmes classiques de ce forum (ou d'ailleurs), pas besoin de tous les poster.
C'est utile si tu écris toi-même les programmes.
Tu t'es trompé parmi les virgules ou les guillemets. EDIT: maintenant on sait que c'est le nombre d'arguments suppérieur à 7.
---------------------- 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)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 12 Déc 2012, 18:50
Exact ! J'ai oublié de compter le nombre de sorties !
En effet la fonction Menu ne supporte que 7 choix. C'est ce que je reproche le plus au Basic d'ailleurs.
Je viens de remarquer que ton code Esquive est mon programme Cubefield. (aussi nommé Fly dans ses débuts)
Ton problème de record vient peut-être de "ent(O)" et d'une confusion entre la lettre O et le nombre 0.
---------------------- 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)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 16 Déc 2012, 18:46
"=!=" est un des codes utilisés pour écrire le égal barré qu'on ne peut pas écrire dans ce forum.
---------------------- 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)
Autorisation : Membre
Nb de messages : 25
Inscrit le : Lun 03 Déc 2012, 20:00
Posté le : Sam 29 Déc 2012, 16:52
Hello tous!
Voila je profite des vacances pour faire un tri dans ma ti (j'ai un peu lâché le programme JEUX je le réserve a quand j'aurais du temps libre en cours )
Donc mon pb cette fois ci c'est dans un programme imbriqué de 2 programme veille:
Code
:Lbl M
:0->Xmin
:94->Xmax
:0->Ymin
:62->Ymax
:AxesNaff
:Menu("VEILLE:","BOREALE",Z,"FLECHE",V
:Lbl Z
:EffDessin
:Lbl Z1
:For(A,1,94,2
:Ligne(94,0,A,62
:Ligne(0,62,94-A,0
:End
:For(A,0,95,2
:Ligne(94,0,A,62,0
:Ligne(0,62,94-A,0,0
:End
:Goto Z1
:EffDessin
:Goto M
Autorisation : Membre
Nb de messages : 30
Inscrit le : Mer 14 Déc 2011, 20:42
Posté le : Sam 12 Jan 2013, 23:31
C est normal, ça le programme ne passe qu une fois par le test :
tu le fait boucler autour du V1 et Z1, o les 2 tests sont en V et Z (j espère que tu comprend ce que je dis)
Voilà qui marche (selon moi) :
Code
:Lbl M
:EffvarXmin94->Xmax // ça peut sembler bizarre, mais ça marche et économise 2 octets
:EffvarYmin62->Ymax // ça peut sembler bizarre, mais ça marche et économise 2 octets
:AxesNaff
:Effdessin
:Menu("VEILLE:","BOREALE",Z,"FLECHE",V,"QUITTER",Q)
:Lbl Z
:Lbl Z1
:If codetouch=105:Stop //ici
:For(A,1,94,2
:Ligne(94,0,A,62
:Ligne(0,62,94-A,0
:End
:For(A,0,95,2
:Ligne(94,0,A,62,0
:Ligne(0,62,94-A,0,0
:End
:Goto Z1
:Lbl V
:Effdessin
:EffvarX1->Y // ça peut sembler bizarre, mais ça marche et économise 2 octets
:Lbl V1
:If codetouch=105:Stop //ici
:If X=1:1->Y
:If X=31:(-)1->Y
:X+Y->X
:For(A,47,94,X
:Ligne(A,0,A,62
:Ligne(94-A,0,94-A,62
:End
:For(A,31,62,X
:Ligne(0,A,94,A,0
:Ligne(0,62-A,94,62-A,0
:End
:Goto V1
:Lbl Q
:EffDessin
:EffEcr
:10->Xmax
:-Xmax->Xmin
:Xmin->Ymin
:Xmax->Ymax
:AxesAff
:Output(1,1,"") // a remplacer par Disp
Théoriquement, la dernière ligne servant à revenir dans l écran normal, tu peut la remplacer par Disp (ou même par ", mais je suis pas sur)
---------------------- Il y a 11 sortes de personnes. Ceux qui connaissent le unaire et ceux qui ne le connaissent pas.