Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 1727
Réponses : 12
Type : discussion
Etat : réponses autorisées

Défilement

Paulo1026 le 08/04/2016 à 14:30
Edit:Je n'avais pas vu qu'il y avait un sujet dédier pour l'aide donc je reposte ici.

Voilà dans mon programme j'aurais besoin que l'écran défile vers le bas en gardant les lignes actuelles sauf la dernière crazy.gif

Mon programme se présente comme ça pour l'instant (j'expliquerais ultérieurement quel sera le but du jeu, etc ,mais pour l'instant je bloque cry.gif )
Code
EffEcr
9->S
Lbl 1
If S=1:Goto 2
S-1->S
Lbl 2
Output(S,4,entAléat(0,1,4
Output(S,4,"/
Output(S,12,"/
Output(S,8,entAléat(0,1
Output(S,6,entAléat(0,1
Output(S,10,entAléat(0,1
Goto 1


Si vous pouviez trouver aussi comment éviter ces lignes là:
Code
Output(S,8,entAléat(0,1
Output(S,6,entAléat(0,1
Output(S,10,entAléat(0,1
Mingerton le 08/04/2016 à 20:40
Ba à quoi ca sert déjà ces lignes pour ton défilement ?
Paulo1026 le 08/04/2016 à 20:53
aucune de mes lignes ne servent au défilement happy.gif justement je voudrais des lignes pour avoir le défilement parce que moi je sais pas comment faire crazy.gif
Mingerton le 08/04/2016 à 21:50
Un petit code pour un défilement, à adapter bien entendu, et ca serait plus joli dur un écran graphique au lieu de l'écran de calcul :
Code
Output(8,1,"HELLO WORLD
For(I,8,2,~1
Output(I,1,"           "
Output(I-1,1,"HELLO WORLD
End
Paulo1026 le 09/04/2016 à 20:59
Ton truc de défilement marche juste sur une donnée prédéfinie, ça je savais faire mais moi ce que je veux c'est garder mes nombres qui sont apparus aléatoirement c'est pour ça que c'est compliqué crazy.gif
Ti82-Lexilus le 09/04/2016 à 23:09
Au lieu de les afficher, incréments les dans une liste alors. Ensuite tu met "Disp L1" et tu fait défiler les valeurs grâce au flèche gauche - droite .... bigmouth.gif
Mingerton le 10/04/2016 à 13:36
J'ai regardé un peu ce que faisait ton programme. Un screen pour qu'on soit d'accord là dessus :


Donc ce que tu veux c'est que l'animation se fasse dans l'autre sens ? Qu'il parte du haut pour aller vers le bas et que la dernière ligne change (ici c'ets la première qui change). C'est ce que je comprends de ton premier message.

L'idée va être de créer des chaînes de caractères, comme ca tu pourras les déplacer comme tu veux après, et faire un défilement dans le même style que le mien. Donc ce que j'imagine c'est un morceau de code pour créer une chaîne de 0 et de 1 aléatoire (boucle for, c'est rapide), on stocke cette chaîne (ou on la garde dans Ans, mais tu vois le principe), on la "fait tomber" avec un code de défilement, et retour à la case départ pour la 2e chaîne, ...
Paulo1026 le 11/04/2016 à 19:41
Oui mon programme fait bien ça,
mais je pense que pour que vous compreniez il faut que je vous explique comment va être mon programme au final (c'est un remake d'un ancien programme du forum qui a malheureusement disparu). Donc dans ce programme le but va être de diriger un personnage pour qu'il évite tous les 1 (et passe donc sur les 0)sans sortir des limites (/) donc pour cela il faut un défilement de ce type:

Image manquante

Donc la ligne 8 passe à la place de la 7 pareil pour la 7 avec la 6 et ainsi de suite jusqu'à la 1 qui disparait et ça recommence à l'infini.

Donc je m'étais trompé dsl moodforlove.gif
mon code aurait du ressembler a ça :
Code
EffEcr
0->S
Lbl 1
If S=8:Goto 2
S+1->S
Lbl 2
Output(S,4,entAléat(0,1,4
Output(S,4,"/
Output(S,12,"/
Output(S,8,entAléat(0,1
Output(S,6,entAléat(0,1
Output(S,10,entAléat(0,1
Goto 1


J'avais aussi trouver une autre façon mais pas du tout optimisée (le programme n'est pas fini et ne peux pas encore fonctionner).



Code

Menu("Difficultée","Facile",10,"Moyen",11,"Difficile",12,"Quitter",13
Lbl 10
W->1
Goto 0
Lbl 11
W->2
Goto 0
Lbl 12
W->3
Lbl 0
EffEcr
0->S
Lbl 1
1->Y
6->X
Output(Y,X,"V
If Y=5:Goto 2
Y+1->Y
V->-1
V+1->V
Lbl 2
If A=2 ou A=3: Goto 55
entAléat(0,1->A
entAléat(0,1->B
entAléat(0,1->C
entAléat(0,1->D
entAléat(0,1->E
If W=1 et A+B+C+D+E>1:Goto 1
If W=2 et A+B+C+D+E>3:Goto 1
If W=3 et A+B+C+D+E>4:Goto 1
Lbl 55
If F=2 ou F=3:Goto 97
entAléat(0,1->F
entAléat(0,1->G
entAléat(0,1->H
entAléat(0,1->I
entAléat(0,1->J
If W=1 et F+G+H+I+J>1:Goto 55
If W=2 et F+G+H+I+J>3:Goto 55
If W=4 et F+G+H+I+J>4:Goto 55
Lbl 97
If K=2 ou K=3:Goto 96
entAléat(0,1->K
entAléat(0,1->L
entAléat(0,1->M
entAléat(0,1->N
entAléat(0,1->O
If W=1 et K+L+M+N+O>1:Goto 97
If W=2 et K+L+M+N+O>3:Goto 97
If W=3 et K+L+M+N+O>4:Goto 97
Lbl 96
If P=2 ou P=3:Goto 95
entAléat(0,1->P
entAléat(0,1->Q
entAléat(0,1->R
entAléat(0,1->T
entAléat(0,1->U
If W=1 P+Q+R+T+U>1:Goto 96
If W=2 P+Q+R+T+U>3:Goto 96
If W=3 P+Q+R+T+U>4:Goto 96
Lbl 95
Lbl 3
If A=2 ou A=3:Goto 99
Output(S,4,A
Output(S,5,B
Output(S,6,C
Output(S,7,D
Output(S,8,E
If S<8:S+1->S
A+2->A
If V=1:Goto 99
Goto 1
Lbl 99
If F=2 ou F=3:Goto 94
Output(S,4,F
Output(S,5,G
Output(S,6,H
Output(S,7,I
Output(S,8,J
If S<8:S+1->S
F+2->F
If V=1:Goto 94
Goto 1
Lbl 94
If K=2 ou K=3:Goto 93
Output(S,4,K
Output(S,5,L
Output(S,6,M
Output(S,7,N
Output(S,8,O
If S<8:S+1->S
K+2->K
If V=1:Goto 93
Goto 1
Lbl 93
If P=2 ou P=3:Goto 92
Output(S,4,P
Output(S,5,Q
Output(S,6,R
Output(S,7,T
Output(S,8,U
If S<8:S+1->S
P+2->P
Lbl 92
If P=2 ou P=3:
S-1->S
P-2->P
A-2->A
F-2->F
K-2->K
1->V
If V=1:Goto 3
Goto 2
Lbl 13
Stop

Bon voilà ce code là est loin d'être fini et de toute façon il est trop lent mais faut pas oublier que je suis un noob car j'ai oublié de préciser mais je n'ai jamais lu de tutos et j'ai appris en recopiant les programmes des autres.
Donc j'ai essayé de comprendre les chaînes grâce à ce tuto mais j'ai pas trop compris comment toi tu voulais faire crazy.gif
Mingerton le 11/04/2016 à 22:44
Ok, c'est à peut près ce que j'avais compris. Mon idée est de créer des chaînes de 0 et de 1 aléatoires et de les faire avancer toutes en même temps. POur une chaîne aléatoire de 0 et de 1 :
Code
"/
For(I,1,7
If randInt(0,1
Then
Ans+"1
Else
Ans+"0
End
End
Ans+"/

(un peu lent à mon goût malheureusement, mais on en est pas encore à l'optimisation)

Une fois que t'as ca, tu peux stocker, ou faire défiler direct. Pas le temps de coder ca maintenant de mon côté, mais si quelqu'un comprend ce que je veux faire... winkle.gif
Paulo1026 le 13/04/2016 à 17:20
Bon j'abandonne ce projet il est pour l'instant trop compliqué pour moi mais par contre je vais bientôt sortir un programme multi-fonctionnalités qui se trouvera entre le style utilitaire et jeu bigmouth.gif
Paulo1026 le 15/04/2016 à 22:17
Salut ,
j'ai un problème dans mon nouveau programme mais je ne vois pas lequel:
Code
If A=0
Then
0->X:3->Y
If A=1
Then
1.5->X:2.5->Y
If A=2
Then
2.5->X:1.5->Y
A=3
Then
3->X:0->Y
End
(le code n'est pas complet)
Voilà dans mon code même si A est = à une bonne valeur X et Y sont toujours = a 0.(c'est le seul problème et si il est résolu je peux poster mon programme happy.gif).
Merci d'avance pour votre réponse.
Mingerton le 16/04/2016 à 13:27
Tu as oublié de fermer tes conditions. La syntaxe est
Code
If [condition]
Then
[consequences]
End

Or ici tu n'as qu'un seul end qui se réfère à la dernière condition ouverte, et comme le programme ferme automatiquement les autres conditions, ça fait que toutes les conditions dépendent du résultat de la première.

En bref, ferme tes conditions directement après leur conséquence winkle.gif
Paulo1026 le 20/04/2016 à 20:41
Pardon pour la réponse très tardive happy.gif
Non ça c'était bon mais de toute façon j'ai perdu le programme alors qu'il ne me restais que ce problème maxiangry.gif mais bon j'en ai fait 3 autres intéressants (je pense que je vais en sortir un par jour).