Forum

Catégorie : Support
Forum : TI-82 STATS.fr
Vues : 2779
Réponses : 30
Type : discussion
Etat : réponses autorisées

Menu Jeux :D

dragmazik le 03/12/2012 à 20:04
Bonsoir a tous les amis! godgrace.gif

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 bigmouth.gif
p.s. je suis tout nouveau en terme de programmation eyeonly.gif

EDIT:Ajout "Mario" + Le Juste Prix
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"MARIO",U,"PONG",Z,"SNAKE",Y,"LE JUSTE PRIX",J,"QUITTER",QQ
: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=1
:Disp "PILE"
:Repeat Rép
:codeTouche
:End
:End
:Goto M
:
:Lbl Z
:Repeat Rép-105
:EffEcr
:0->W
:0->S
:7->A
:8->C
:7->D
:-1->E
:1->F
:Lbl 0
:If D=8:Goto 1
:EffEcr
:Output(8,A,"----
:Output(D,C,"O
:CodeTouche->K
:If K=24 et A-1>0
:A-1->A
:If K=26 et A+3<16:A+1->A
:If K=105:Pause
:C+F->C
:D+E->D
:If D=1:1->E
:If D=7 et C=A ou D=7 et C=A+1 ou D=7 et C=A+2 ou D=7 et C=A+3
:Goto P2
:If C=1:1->F
:If C=16:-1->F
:Goto 0
:Lbl P2
:-1->E
:S+1->S
:Goto 0
:Lbl 1
:Output(8,1,"SCORE:"
:Output(8,7,S
:Pause
:EffEcr
:Output(1,1,""
:End
:Goto M
:
:Lbl Y
:EffDessin
:0=>Xmin
:94=>Xmax
:(-)62=>Ymin
:0=>Ymax
:AxesNAff
:FonctOff
:6=>A:8=>B:44=>C:77=>D:1=>E:2=>N:0=>O
:1=>dim(Liste6
:If .7349=partDéc(Liste6(1:Liste6(1=>O
:EffListe Liste4
:EffListe Liste5
:99=>dim(Liste4
:99=>dim(Liste5
:For(ø,1,6,1.4
:Ligne(88,(-)ent(ø),6,(-)ent(ø)
:End
:Ligne(6,(-)57,88,(-)57
:Ligne(88,(-)56,88,(-)6
:Ligne(6,(-)6,6,(-)56
:Texte(0,13," SCORE:    " [4 ESPACES]
:Texte(0,53," HIGH : ",ent(O
:Lbl 5
:(-)8-5ent(NbrAléat10=>I
:8+5ent(NbrAléat16=>J
:If pxl-Test((-)I,J:Goto 5
:Ligne(J,I,J+2,I-2
:Ligne(J,I-2,J+2,I
:Goto 3
:Lbl 2
:6+50partDéc((A+C)/50=>A
:8+80partDéc((B+D)/80=>B
:If pxl-Test(A+2,B:Goto 4
:Texte(A,B,"º
:Lbl 3
:arrondi(1+NpartDéc(E/N),0=>E
:Texte(Liste4(E),Liste5(E),"[4 espaces]
:A=>Liste4(E:B=>Liste5(E
:codeTouch->K
:If K=0:Goto 2
:If K=105:Pause
:If D=72:Then
:If K=24:67=>D
:If K=26:77=>D
:If 1=abs(K-25:44=>C
:Goto 2:End
:If C&#8800;44:Goto 2
:If K=25:39=>C
:If K=34:49=>C
:If K=25 ou K=34:72=>D
:Goto 2
:Lbl 4
:Texte(A,B,"º
:Ligne(B+1,(-)A-3,B+2,(-)A-2
:If (-)I&#8800;A+2 ou J&#8800;B ou N=99:Goto Q
:N+1=>N
:Texte(0,38,N+1
:Goto 5
:Lbl Q
:If N+1>O:N+1.7349=>Liste6(1
:Pause
:EffDessin
:-10->Xmin
:10->Xmax
:-10->Ymin
:10->Ymax
:Pause
:Texte(20,30,"GAME OVER")
:Texte(30,20,"YOU'RE A LOOSER!")
:Pause
:AxesAff
:FonctOn
:EffEcr
:EffDessin
:End
:End
:Goto M
:
:Lbl B
:EffDessin
:1->Z
:0->A
:{8,16}->dim([A])
:60->N
:0->M
:8->X
:For(W,1,7
:Disp ""
:End
:Lbl 0
:If Z/50=partEnt(Z/50)
:N-10->N
:If M<15 et Z/30=partEnt(Z/30
:M+1->M
:Disp ""
:For(W,0,M
:1+partEnt(16NbrAléat->S
:Output(8,S,"X
:1->[A](8,S)
:End
:For(W,1,7
:permutLigne([A],W,W+1)->[A]
:End
:Output(1,X,"W
:For(W,0,N
:End
:For(W,1,16
:0->[A](8,W)
:End
:codeTouche->K
:X+(K=26 et X&#8800;16)-(K=24 et X&#8800;1)->X
:Z+1->Z
:If [A](1,X)=0
:Goto 0
:Pause
:EffEcr
:
:Lbl U
:EffEcr
:0-> thetha
:1->A
:7->Y
:14->X
:Lbl 2M
:Output(4,6,"PAUSE
:Pause
:Lbl 1M
:A+1->A
:If A=17
:1->A
:If X=2
:3->X
:EffEcr
:codeTouche->K
:If (K=25 et Y=7)
:Y-3->Y
:if Y<7
:Y+1->Y
:X+(K=26)-(K=24)->x
:Output(Y-2,X,"0
:Output(Y-1,X-1,"-I-
:Output(Y,X,"H
:Output(8,1,"----------------
:If A=16
:entAleat(2,3->E
:theta+1->theta
:If E=2
:Output(8,A," "
:If E=3
:Outuput(7,A,"=
:If(E=2 et Y=7 et(A=X ou A=X-1))
:Then
:EffEcr
:Output(4,5,"PERDU
:Output(5,4,"SCORE
:Output(5,10,theta
:Output(Y,X,"0
:Output(8,1,"----------------
:Output(8,A," "
:Output(Y+1,X-1,"-I-
:Stop
:end
:If(E=3 et Y=7 et A=X)
:Then
:EffEcr
:Output(4,5,"PERDU
:Output(5,7,theta
:Output(Y-2,X,"0
:Output(Y-1,X-1,"-I-
:Output(Y,X,"=
:Output(8,1,"----------------
:Stop
:End
:If K=105
:Goto 2M
:Goto 1M
:
:Lbl 9J
:Menu("LE JUSTE PRIX","JOUER",W0,"DIFFICULTE",W1,"QUITTER",W3
:Lbl W1
:Menu("DIFFICULTE :","EASY",WA,"NORMAL",WB,"HARD",WC
:Lbl WA
:entAleat(1,100->X:Goto 9J
:Lbl WB
:entAleat(1,500->X:Goto 9J
:Lbl WC
:entAleat(1,1000->X:Goto 9J
:Lbl W0
:EffEcr
:Repeat Y=X
:Input "DEVINEZ LE PRIX:",Y
:If Y>X
:Disp "MOINS
:If Y<X
:Disp "PLUS
:End
:Pause "BRAVO!
:EffEcr
:Lbl W3
:EffEcr:Goto M
:
:Lbl QQ
:EffEcr


Place dans la mémoire: 2142
linkakro le 03/12/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.
Samos le 03/12/2012 à 20:13
Tu peux copier le contenu d'un programme dans un autre en allant dans l'éditeur puis:
rappel + prgm + < + NOMPROGRAMME

EDIT: Salut godgrace.gif
linkakro le 03/12/2012 à 20:19
Oui, bonne idée l'explication du Rappel prgm.
https://tout82.pages-perso.fre[...].php?sujet=2614
dragmazik le 03/12/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 ...
linkakro le 03/12/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.
dragmazik le 04/12/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 ^^')

bigmouth.gif
linkakro le 04/12/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
dragmazik le 05/12/2012 à 21:47
Bonsoir!
Bon voila dernier ajout le pong et le snake. J'ai modifier comme tu me la indiquer Linkakro

Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"PONG",Z,"SNAKE",Y,"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=1
:Disp "PILE"
:Repeat Rép
:codeTouche
:End
:End
:Goto M

:Lbl Z
:Repeat Rép-105
:EffEcr
:0->W
:0->S
:7->A
:8->C
:7->D
:-1->E
:1->F
:Lbl 0
:If D=8:Goto 1
:EffEcr
:Output(8,A,"----

:Output(D,C,"O
Code
:CodeTouche->K
:If K=24 et A-1>0
:A-1->A
:If K=26 et A+3<16:A+1->A
:If K=105:Pause
:C+F->C
:D+E->D
:If D=1:1->E
:If D=7 et C=A ou D=7 et C=A+1 ou D=7 et C=A+2 ou D=7 et C=A+3
:Goto 2
:If C=1:1->F
:If C=16:-1->F
:Goto 0
:Lbl 2
:-1->E
:S+1->S
:Goto 0
:Lbl 1
:Output(8,1,"SCORE:"
:Output(8,7,S
:Pause
:EffEcr
:Output(1,1,""
:Goto M
:
:Lbl Y
:EffDessin
:0=>Xmin
:94=>Xmax
:(-)62=>Ymin
:0=>Ymax
:AxesNAff
:FonctNAff
:6=>A:8=>B:44=>C:77=>D:1=>E:2=>N:0=>O
:1=>dim(Liste6
:If .7349=partDéc(Liste6(1:Liste6(1=>O
:EffListe Liste4
:EffListe Liste5
:99=>dim(Liste4
:99=>dim(Liste5
:For(ø,1,6,1.4
:Ligne(88,(-)ent(ø),6,(-)ent(ø)
:End
:Ligne(6,(-)57,88,(-)57
:Ligne(88,(-)56,88,(-)6
:Ligne(6,(-)6,6,(-)56
:Texte(0,13," SCORE : 3
:Texte(0,53," HIGH : ",ent(O
:Lbl 5
:(-)8-5ent(NbrAléat10=>I
:8+5ent(NbrAléat16=>J
:If pxl-Test((-)I,J:Goto 5
:Ligne(J,I,J+2,I-2
:Ligne(J,I-2,J+2,I
:Goto 3
:Lbl 2
:6+50partDéc((A+C)/50=>A
:8+80partDéc((B+D)/80=>B
:If pxl-Test(A+2,B:Goto 4
:Texte(A,B,"º
:Lbl 3
:arrondi(1+NpartDéc(E/N),0=>E
:Texte(Liste4(E),Liste5(E),"[4 espaces]
:A=>Liste4(E:B=>Liste5(E
:codeTouch(=>K
:If K=0:Goto 2
:If D=72:Then
:If K=24:67=>D
:If K=26:77=>D
:If 1=abs(K-25:44=>C
:Goto 2:End
:If C&#8800;44:Goto 2
:If K=25:39=>C
:If K=34:49=>C
:If K=25 ou K=34:72=>D
:Goto 2
:Lbl 4
:Texte(A,B,"º
:Ligne(B+1,(-)A-3,B+2,(-)A-2
:If (-)I&#8800;A+2 ou J&#8800;B ou N=99:Goto Q
:N+1=>N
:Texte(0,38,N+1
:Goto 5
:Lbl Q
:If N+1>O:N+1.7349=>Liste6(1
:Pause
:EffDessin
:-10->Xmin
:10->Xmax
:-10->Ymin
:10->Ymax
:Texte(20,30,"GAME OVER")
:Texte(30,20,"YOU'RE A LOOSER!")
:Pause
:AxesAff
:FonctOn
:EffEcr
:EffDessin
:End
:End
:Goto M


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 cry.gif. Tu peux encore m'aider? Le Codage est bon? Corrige moi linkakro si il le faut (sans sous entendu winkle.gif )
linkakro le 05/12/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
dragmazik le 05/12/2012 à 22:23
Oui mais se qui est etrange c'est que c'est le programme pong qui embete joyeusement le programme snake...

Il n'y a pas un moyen pour bloquer ces etiquette pour chaque programme lors de leurs utilisation?
linkakro le 06/12/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.
dragmazik le 07/12/2012 à 23:02
Excuse moi ... minied.gif

Mais comment fait on pour changer les étiquettes? pour que mon programme puisse enfin fonctionner correctement? sil te plait happy.gif
linkakro le 08/12/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.
dragmazik le 08/12/2012 à 21:53
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"PONG",Z,"SNAKE",Y,"QUITTER",QQ
: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=1
:Disp "PILE"
:Repeat Rép
:codeTouche
:End
:End
:Goto M
:
:Lbl Z
:Repeat Rép-105
:EffEcr
:0->W
:0->S
:7->A
:8->C
:7->D
:-1->E
:1->F
:Lbl 0
:If D=8:Goto 1
:EffEcr
:Output(8,A,"----
:Output(D,C,"O
:CodeTouche->K
:If K=24 et A-1>0
:A-1->A
:If K=26 et A+3<16:A+1->A
:If K=105:Pause
:C+F->C
:D+E->D
:If D=1:1->E
:If D=7 et C=A ou D=7 et C=A+1 ou D=7 et C=A+2 ou D=7 et C=A+3
:Goto P2
:If C=1:1->F
:If C=16:-1->F
:Goto 0
:Lbl P2
:-1->E
:S+1->S
:Goto 0
:Lbl 1
:Output(8,1,"SCORE:"
:Output(8,7,S
:Pause
:EffEcr
:Output(1,1,""
:End
:Goto M
:
:Lbl Y
:EffDessin
:0=>Xmin
:94=>Xmax
:(-)62=>Ymin
:0=>Ymax
:AxesNAff
:FonctOff
:6=>A:8=>B:44=>C:77=>D:1=>E:2=>N:0=>O
:1=>dim(Liste6
:If .7349=partDéc(Liste6(1:Liste6(1=>O
:EffListe Liste4
:EffListe Liste5
:99=>dim(Liste4
:99=>dim(Liste5
:For(ø,1,6,1.4
:Ligne(88,(-)ent(ø),6,(-)ent(ø)
:End
:Ligne(6,(-)57,88,(-)57
:Ligne(88,(-)56,88,(-)6
:Ligne(6,(-)6,6,(-)56
:Texte(0,13," SCORE:    " [4 ESPACES]
:Texte(0,53," HIGH : ",ent(O
:Lbl 5
:(-)8-5ent(NbrAléat10=>I
:8+5ent(NbrAléat16=>J
:If pxl-Test((-)I,J:Goto 5
:Ligne(J,I,J+2,I-2
:Ligne(J,I-2,J+2,I
:Goto 3
:Lbl 2
:6+50partDéc((A+C)/50=>A
:8+80partDéc((B+D)/80=>B
:If pxl-Test(A+2,B:Goto 4
:Texte(A,B,"º
:Lbl 3
:arrondi(1+NpartDéc(E/N),0=>E
:Texte(Liste4(E),Liste5(E),"[4 espaces]
:A=>Liste4(E:B=>Liste5(E
:codeTouch->K
:If K=0:Goto 2
:If K=105:Pause
:If D=72:Then
:If K=24:67=>D
:If K=26:77=>D
:If 1=abs(K-25:44=>C
:Goto 2:End
:If C&#8800;44:Goto 2
:If K=25:39=>C
:If K=34:49=>C
:If K=25 ou K=34:72=>D
:Goto 2
:Lbl 4
:Texte(A,B,"º
:Ligne(B+1,(-)A-3,B+2,(-)A-2
:If (-)I&#8800;A+2 ou J&#8800;B ou N=99:Goto Q
:N+1=>N
:Texte(0,38,N+1
:Goto 5
:Lbl Q
:If N+1>O:N+1.7349=>Liste6(1
:Pause
:EffDessin
:-10->Xmin
:10->Xmax
:-10->Ymin
:10->Ymax
:Pause
:Texte(20,30,"GAME OVER")
:Texte(30,20,"YOU'RE A LOOSER!")
:Pause
:AxesAff
:FonctOn
:EffEcr
:EffDessin
:End
:End
:Goto M
:
:Lbl B
:EffDessin
:1->Z
:0->A
:{8,16}->dim([A])
:60->N
:0->M
:8->X
:For(W,1,7
:Disp ""
:End
:Lbl 0
:If Z/50=partEnt(Z/50)
:N-10->N
:If M<15 et Z/30=partEnt(Z/30
:M+1->M
:Disp ""
:For(W,0,M
:1+partEnt(16NbrAléat->S
:Output(8,S,"X
:1->[A](8,S)
:End
:For(W,1,7
:permutLigne([A],W,W+1)->[A]
:End
:Output(1,X,"W
:For(W,0,N
:End
:For(W,1,16
:0->[A](8,W)
:End
:codeTouche->K
:X+(K=26 et X&#8800;16)-(K=24 et X&#8800;1)->X
:Z+1->Z
:If [A](1,X)=0
:Goto 0
:Pause
:EffEcr
:
:Lbl QQ
:EffEcr


Et voila, ma toute première contribution enfin achever bigmouth.gif
Merci a moi glasses.gif et surtout a Linkakro pour m'avoir conseillé dans cette programmation

Bon Usage a tous minied.gif
dragmazik le 09/12/2012 à 20:13
Hello bigmouth.gif

Edit, d'un mario et d'un juste prix ... sauf que j'ai une erreur argument qui s'est invitée sans y etre convier juste ici:
Code
:Lbl M
:Menu("JEUX:","DEE DE 6",A,"ESQUIVE",B,"PILE OU FACE",C,"MARIO",U,"PONG",Z,"SNAKE",Y,"LE JUSTE PRIX",J,"QUITTER",QQ


quelqu'un peut m'aider?
linkakro le 09/12/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.
dragmazik le 12/12/2012 à 18:37
Citation
Tu t'es trompé parmi les virgules ou les guillemets.

Je ne pense pas, non

pour essayer, j'ai supprimer "QUITTER", QQ et l'erreur a disparu, je pense que le programme n'accepte que 7 choix de possibilité dans un menu.

j'ai une erreur aussi sur le snake, le high score ne s'affiche pas... décidement ^^'
linkakro le 12/12/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.
dragmazik le 12/12/2012 à 19:56
effectivement l'erreur venait bien de là. Merci!

Oui le programme vient peut etre de toi, je les ai pris sur ce site. je remercie par la meme occasion les createur des programme que j'ai "emprunté"
dragmazik le 16/12/2012 à 18:34
Reuh a tous happy.gif

Nouveau petit problème dans la programmation d'un bowling, j'ai une erreur juste apres mon !

:-1 -> [L des liste]BOL(1
:If -1=max([L des liste]BOL
:-1 -> [L des liste]BOL(2
:{0 -> Liste2
:Menu("NIVEAU","TRES FACILE",1,"FACILE",2,"MOYEN",3,"DIFFICILE",4,"TRES DIFFICILE",5,"QUITTER",Q
:Lbl 1
:25 -> Y
:Goto 6
:Lbl 2
:20 -> Y
:Goto 6
:Lbl 3
:15 -> Y
:Goto 6
:Lbl 4
:10 -> Y
:Goto 6
:Lbl 5
:5 -> Y
:Lbl 6
:For(W,2,11
:EffVar X
:EffVar Z
:EffVar A
:10 -> dim(Liste1
:Remplir(0,Liste1
:EffEcr
:Output(1,5,"O O O O
:Output(2,6,"O O O
:Output(3,7,"O O"
:Output(4,8,"O
:For(B,1,8
:Output(B,13,"!
:Output(B,3,"!
:End
:-1 -> C
:4 -> D
:While A=!=2 ici
:CodeTouche -> G
:If G=105
:Goto 8
:Output(8,4,"
:Output(8,D,"O
:If D=4 or D=12
:-C -> C
bigmouth.gif+C -> D
:For(S,1,Y/5
:End
:End
:End
:Lbl 8
bigmouth.gif-C -> D
:If Z=0 and D=8
:Then
:15 -> dim(Liste1
:Remplir(1,Liste1
:1 -> A
:End
:If non(Z
bigmouth.gif -> Z
:abs(D-8 -> L
bigmouth.gif -> M
bigmouth.gif -> N
:For(H,8,1,-1
:If H=!=1 et donc ici aussi
:Output(H-1,D,"O
:If L+H<4
:Then
:M-1 -> M
:N+1 -> N
:End
:For(J,M,N
:Output(H,J,"
:End
:If D=5
:1 -> Liste1(1
:If D=6
:Then
:1 -> Liste1(1
:1 -> Liste1(2
:End
:If D=7
:Then
:1 -> Liste1(1
:1 -> Liste1(2
:1 -> Liste1(3
:1 -> Liste1(5
:1 -> Liste1(6
:1 -> Liste1(8
:End
:If D=8
:Fill(1,Liste1
:If D=9
:Then
:1 -> Liste1(2
:1 -> Liste1(3
:1 -> Liste1(4
:1 -> Liste1(6
:1 -> Liste1(7
:1 -> Liste1(9
:End
:If D=10
:Then
:1 -> Liste1(3
:1 -> Liste1(4
:1 -> Liste1(7
:End
:If D=11
:1 -> Liste1(4
:End
:A+1 -> A
:For(Z,1,10
:End
:-1 -> C
:4 -> D
:End
:sum(Liste1 -> X
:X -> Liste2(W
:ClrHome
:Disp "TON SCORE ACTUEL",sum(Liste2),"!01!02!03!04!05!","! ! ! ! ! !","+--+--+--+--+--+","!06!07!08!09!10!","! ! ! ! ! !
:For(V,2,W
:If V[inférieur ou égal]6
:Output(4,3V-4,Liste2(V
:If V[supérieur ou égal]7
:Output(7,3V-19,Liste2(V
:End
:Pause
:End
:ClrHome
:Output(2,3,"VOTRE SCORE:
:Output(3,7,sum(Liste2
:Output(5,3,"EN NIVEAU:
:Output(5,14,6-Y/5
:Pause
:sum(Liste2 -> T
:If T[racine(]6-Y/5)>[l des listes]BOL(2
:Then
:ClrHome
:Output(2,4,"TU AS BATTU
:Output(3,2,"L'ANCIEN RECORD
:Output(4,2,"AVEC POINTS
:Output(4,7,T
:Output(5,4,"EN NIVEAU
:Output(5,14,6-Y/5
:Output(6,2,"AVEC POINTS
:Output(7,1,"RECORD (PTS[petit r du menu var/stats/equ]=PTS
:Output(8,4,"*[raccine(] NIVEAU) )
:Output(6,7,iPart(T[racine(]6-X/5
:End
:Lbl Q
linkakro le 16/12/2012 à 18:46
"=!=" est un des codes utilisés pour écrire le égal barré qu'on ne peut pas écrire dans ce forum.
dragmazik le 29/12/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 minied.gif )

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

:Lbl V
:Effdessin
:0->X
:1->Y
:Lbl V1
: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
:EffDessin


Ce que je voudrais faire... c'est pouvoir arrêter le programme quand j'appuie sur entrer
Quelqu'un pour m'aider? moodforlove.gif
blg_flg le 29/12/2012 à 17:23
Ajoute simplement une condition qui fait quitter le programme lorsque CodeTouche=105. winkle.gif

Insère où tu veux ceci:
Code
CodeTouche->K
If K=105:Stop
dragmazik le 29/12/2012 à 17:45
Je viens d'ajouter la condition et ... sa ne marche pas cry.gif
blg_flg le 29/12/2012 à 21:22
Où l'as tu mis aussi?
dragmazik le 07/01/2013 à 19:48
Code
:Lbl M
:0->Xmin
:94->Xmax
:0->Ymin
:62->Ymax
:AxesNaff
:Menu("VEILLE:","BOREALE",Z,"FLECHE",V,"QUITTER",Q)
:Lbl Z
:codeTouche->K
:If K:105:Goto Q
: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

:Lbl V
:codeTouche->K
:If K:105:Goto Q
:Effdessin
:0->X
:1->Y
:Lbl V1
: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
:EffDessin

:Lbl Q
:EffDessin
:EffEcr
:-10->Xmin
:10->Xmax
:-10->Ymin
:10->Ymax
:AxesAff
:Output(1,1,"")


Voila comment j'ai entrer le programme et la condition
Erdnuss le 12/01/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)
dragmazik le 13/01/2013 à 14:11
Erdnuss sa marche minied.gif

Maintenant je me consacre a mon programme jeux... qui bug de partout




P.S. j'ai échanger "stop" par "Goto Q" parce que sinon, l'ecran se figeait et sa ne quittais pas le programme comme je voulais.
Erdnuss le 13/01/2013 à 16:10
Ah oui, c'était Goto Q crazy.gif
dragmazik le 13/01/2013 à 16:46
Citation
Ah oui, c'était Goto Q


C'est pas grave, tu m'as bien aidé quand meme bigmouth.gif merci encore