Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 22400
Réponses : 207
Type : discussion
Etat : réponses autorisées

Papy-Jump - Page 8 / 11

linkakro le 18/02/2011 à 22:25
Intéressant le nouveau papy-saute. Mais je suis saturé alors je ne le testerai pas maintenant.
----
réponses :

- je ne sais pas

- je ne connais pas de prog qui fasse défiler l'écran. Mais ce serait surpuissant pour tous les progs à défilement et terrain étendu.

- arriver à la fin d'un prog quel que soit son language provoque un retour au prog "mère". Sinon une fonction return permet d'anticiper ce retour, mais cette notation ne se pratique qu'en basic.

- * valeur -> chaîne : (publié dans un sujet ouvert à tout le monde) VALSTR Il ne tient pas compte des notations scientifiques.
(il permet accessoirement de verrifier les valeurs sans arrondit)
* chaîne->valeur : la fonction expr(Str1) calcule la valeur associée à la formule ou au nombre contenue dans Str1
linkakro le 21/02/2011 à 19:43
message édité le 16/7/2012 :
J'ai ajoûté les versions 3.0 et 3.1 afin de pouvoir comprendre plus tard ce que j'avais bien pu modifier, avant que j'oublie moi-même.
------

J'ai encore simplifié ce programme.
-J'ai écrit une version 3.0 corrigant un bug de l.davin (version2)
-J'ai écrit une version 3.1 utilisant une liste pour regrouper les variables
C'est plus court mais plus lent
-J'ai enfin écrit une version 3.2 utilisant la fonction SortA() et avec la liste retournée, pour accélérer la procédure de montée d'écran, c'est au final plus rapide que la version de l.davin.

Remarque : une modification est facultative, les deux autres corrigent un bug : avant le rond rebondissait en haut de l'écran.

version 3.0
Code
:EffEcr
:7->X
:1->Y
:1->J
:0->K
:0->S
:EntAléat(1,16->A
:EntAléat(1,16->B
:EntAléat(1,16->C
:EntAléat(1,16->D
:EntAléat(1,16->E
:EntAléat(1,16->F
:EntAléat(1,16->G
:7->H
:Repeat Y=8
:Output(1,A,"=
:Output(2,B,"=
:Output(3,C,"=
:Output(4,D,"=
:Output(5,E,"=
:Output(6,F,"=
:Output(7,G,"=
:Output(8,H,"=

:If J=1 et (Y=7 et X=H ou Y=6 et X=G ou Y=5 et X=F ou Y=4 et X=E ou Y=3 et X=D ou Y=2 et X=C ou Y=1 et X=B
    // correction (liée au bug) du test qui précède (suppression de "K=4 ou")
:Then
:-1->J   // bug corrigé
:0->K
:End
:K-J->K
:codeTouche->T
:if T=105
:Pause
:if Y=1 et J=-1  // c'est seulement plus clair pour moi, "1-J" fonctionne aussi
:Then
:G->H
:F->G
:E->F
:D->E
:C->D
:B->C
:A->B
:entAléat(1,16->A
:S+1->S
:EffEcr
:output(8,15,S
:Y+1->Y
:End
:output(Y,X," "
:X-(T=24)+(T=26->X
:Y+J->Y
:if X=0
:16->X
:if X=17
:1->X
:output(Y,X,"O
:End
:output(4,6,"PERDU !
:if S>Z
:Then
:S->Z
:output(6,2,"MEILLEUR SCORE"
:End

version 3.1
Code
:EffEcr
:7->X
:1->Y
:1->J
:0->K
:0->S

:entAléat(1,16,7->L1:7->L1(8
:Repeat Y=8
:For(W,1,8
:Output(W,L1(W),"=
:End

:If J=1 et X=L1(Y+1
:Then
:-1->J
:0->K
:End
:K-J->K
:codeTouche->T
:if T=105
:Pause
:if Y=1 et J=-1
:Then

:For(W,2,8
:L1(9-W)->L1(10-W
:End
:entAléat(1,16->L1(1

:S+1->S
:EffEcr
:output(8,15,S
:Y+1->Y
:End
:output(Y,X," "
:X-(T=24)+(T=26->X
:Y+J->Y
:if X=0
:16->X
:if X=17
:1->X
:output(Y,X,"O
:End
:output(4,6,"PERDU !
:if S>Z
:Then
:S->Z
:output(6,2,"MEILLEUR SCORE"
:End

version 3.2 (téléchargeable) PAPYJUMP
Code
ClrHome
ClrList L1
8->dim(L1
L1->L2
7->X
1->Y
1->J
0->K
0->S
For(W,2,8
randInt(1,16->L1(W
End
7->L1(1
Repeat Y=8
For(W,1,8
Output(W,L1(9-W),"=
End
If K=4
1->J
If L1(8-Y)=X and J=1
Then
-1->J
0->K
End
K-J->K
getKey->T
If T=105
Pause
If Y=1 and J=-1
Then
SortA(L2,L1
randInt(1,16->L1(8
S+1->S
ClrHome
Output(8,15,S
Y+1->Y
End
Output(Y,X," "
X-(T=24)+(T=26->X
Y+J->Y
If X=0
16->X
If X=17
1->X
Output(Y,X,"O
End
Output(4,6,"PERDU
If S>Z
Then
S->Z
Output(6,6,"RECORD
End
EDIT : Petit historique des versions auquelles j'ai arbitrairement associé un numéro (cela peut aider à se comprendre plus tard vu le nombre de versions dans ce sujet)
sypotu page1 1.1
sypotu page2 1.2
sango page2 v1.3.1
linkak page8 v1.3.2 multiscore big
(sango page5 v1.4)
ldavin page7 v2 soft (petit bug : rebond au sommet de l'écran)
linkak page8 v3.0 rebond corrigé
linkak page8 v3.1 usage d'une liste
linkak page8 v3.2 liste retournée et usage de SortA
linkakro le 22/02/2011 à 17:48
J'avais numérisé ton programme, mais oublié de poster le lien.
Par contre il doit être périmé maintenant.
http://www.mediafire.com/?y6p8dh55t7w8k17 (v2)
Sangohan38 le 22/02/2011 à 23:51
Testé et téléchargé! Il semble très bien marcher.

Sangohan38
ld le 25/02/2011 à 16:01
Toutes mes félicitation Linkakro !
Niveau optimisation tu as fais très fort, environs 320 octets pour un Papy-Jump çà claque ! On va pouvoir rajouter d'autre effets maintenant...
Je l'ais tester et il fonctionne à merveille.
Il est tout juste a peine moin fluide que le mien et scintille un peu plus...
Mais tous cela peut être résolut en changent l'ordre de certaines commandes (Effacement et affichage).
Je posterais si ce n'ai déjà fait l'image de démarrage.

PS: regarde sur ma version, il y a quelques commandes qui permettent de perdre de l'octet que tu n'as pas utiliser.
EX: ":if Y=1 et 1-J:Then" happy.gif
Persalteas le 25/02/2011 à 22:21
Citation
l.davin fait avancer Texas Instruments


Il l'a fait!! il a osé!! bravo l.davin!!

(sincèrement, quand je t'ai dit de mettre ça, je pensais pas que tu le ferais pour de vrai...)
Gwénaël le 14/03/2011 à 21:39
J'ai 1 gros problème avec la version de la page 2:

Le 0 reste affiché à la 6 ème ligne et il bouge tout seul de gauche à droite et inversement et ce sans que j'appuie sur 1 touche

quand je presse <- le 0 descend et quand je presse ->, il monte.

Maintenant, quand je le lance, ça me met erreur domaine sur la ligne

Code
Y+1->Y:End
[couleur=#FF0000]Output(X,Y," 3[/couleur]
Y+B->Y


Après l'erreur, X vaut 0 et Y vaut 4
Gwénaël le 14/03/2011 à 21:40
la couleur n'est pas prise en charge, c'est à la ligne Output(X,Y," "
Persalteas le 14/03/2011 à 22:00
effectivement le X ne devrait pas être égal à zéro, et ça expliquerait pourquoi le 0 bouge tout seul.(la valeur de X se modifie alors qu'elle ne devrait pas).

Tu es sur qu'il n'y a pas d'erreur de recopiage à chaque ligne où X intervient?
Gwénaël le 14/03/2011 à 22:18
j'ai trouvé pour l'erreur domaine. c'était à la ligne

Code
A-(T=24)+(T=26)->A


J'avais remplacé le 2ème A par 1 X

sinon, le bug n'est toujours pas corrigé. quand je monte le 0, il y a 2 possibilités: soit je maintiens la touche et ça fait erreur domaine
soit j'appuie sur la touche, le 0 monte d'1 ligne puis il descend d'1 coup en bas et ça met game over
soit, parfois, le 0 se colle à <- et ça augmente l'altitude alors que je ne fait rien (même si le 0 et l'écran montent quand même)
Gwénaël le 15/03/2011 à 16:04
C'est bon j'ai recopié celle de linkakro et elle fonctionne parfaitement (il faudrait juste faire en sorte qu'1 = ne cache pas la valeur de S en bas à ->
Star le 23/03/2011 à 19:00
Bonjours,

Par quoi peut t'on remplacer le "á" pour mettre dans un programme pour TI-84+ S.E ?
linkakro le 23/03/2011 à 20:53
C'est le petit L des listes personnalisées. 2nde+dessin(liste)+haut ou catalogue+L
tonystark1 le 25/03/2011 à 15:05
j'ai recopié le programme version 2 de la page deux et je me demandais comment afficher les scores précédents dans un tableau...
linkakro le 25/03/2011 à 21:46
Je bidouille un truc qui ne sera peut-être pas au point maintenant.
Si quelqu'un a son idée, il peut la partager mais moi de mon côté je suis optimiste sur mon boulot à venir.

-----------

J'aurai dû parcourrir le sujet, plutôt que de me contenter d'améliorer la version de l.davin... j'aurai aperçu ces versions plus complètes.
linkakro le 06/04/2011 à 17:20
Voici des modifs de la version page 2, qui a plusieurs niveaux de difficulté.
C'est une adaptation multi-niveau de la gestion des scores avec une astuce excluive.

Notez que cette version est facultative mais permet de traîter plusieurs scores par niveau sur plusieurs niveaux.

Je n'ai pas cherché à modifier le contenu : c'est compliqué mais au moins je suis sûr de ne pas détériorer la gestion des niveaux.
Je n'ai modifié que la gestion des scores.

Je met en gras les modifs par rapport au prog page2.

Citation
Lbl D
5->D :0->P
7->dim(Liste(1
Menu("DIFICULTE :","NORMAL",N,"EXPERT",E,"PROGRESSIF",P,"QUITER",Q,"SCORES",S
Lbl P :1->P :6->D :Goto N
Lbl E :4->D
Lbl N

10->dim(L3
7->X :4->Y :1->B :0->C :0->S
EffEcr
Output(1,16,"A
Output(2,16,"L
Output(3,16,"T
Output(4,16,":
For(H,1,8
entaléat(1,15->Liste1(H
End
7->V
Lbl A
For(H,1,8
Output(H,Liste1(H,"-
End
If Y=1:Then
If X[different de]1:Output(1,X-1," "
If X[different de]15:Output(1,X+1," "
End
Output(Y,X,"O
For(H,2,8
If non(Y=H) et et non(B=1) et non(X=Liste1(H
End
-1->B:0->C
End
If C[supérieur ou égal à]D:1->B
If B=-1:C+1->C
codeTouche->T
If T=105 :Goto M
0->A
A-(T=24)+(T=26)->A
If Y=1 et B=-1 :Then
For(H,1,8
Output(H,Liste1(H," "
If 8-H[supérieur à]1
Liste1(8-H->Liste1(7-H
End
entAléat(1,15)->Liste1(1
S+1->S
I->[théta]
partEnt(.01S->I
If I[différent de][théta] et P=1
D-1->D
partEnt((S-IE2).1)->J <== ce E est la puissance de 10 ([2nd]+[,])
partEnt((S-IE2)-10J)->K <== idem
Output(5,16,I
Output(6,16,J
Output(7,16,K
Y+1->Y :End
Output(Y,X," "
Y+B->Y
X+A->X
If X=0 :15->X
If X=16 :1->X
If Y=8 :Goto C
Goto A
Lbl C
Output(Y,X,"O
Output(4,4,"GAME OVER
Pause
EffEcr
1->[theta]
If D=4 :2->[theta]
If P=1 :3->[theta]

{1,1,1,2,2,2,3,3,3}->L2
S->L3(10
[theta]->L3(10
TriDécroi(L3,L2
For(W,1,10
If L2(W)=[theta]
W->V
W+10L2(W)->L2(W
End
41->L3(V
TriCroi(L2,L3


Lbl G
EffEcr
Menu("-PAPY-JUMP-","REESSAYER",D,"SCORE",S,"QUITER",Q
Lbl Q
EffEcr
Output(2,4,"PAPY-JUMP
Output(5,5,"SYPOTU
Pause
EffEcr
Output(1,1,"
Stop
Lbl M
Menu("PAUSE","REPRENDRE",A,"RECOMENCER",D,"QUITER",Q

Lbl S
1->N
For(A,1,3
EffEcr
If A=1
Disp "NORMAL
If A=2
Disp "EXPERT
If A=3
Disp "PROGRESSIF
For(C,2,4
Disp L3(N
N+1->N
End
Pause
End
Goto G
ld le 07/04/2011 à 08:48
Ah oui, moi j'aime bien. Mais là c'est plus du tout soft...
Mais pourquoi pas, c'est très bien aussi quant il y a des scores et tout et tout...
paul le 13/04/2011 à 16:59
bonjour je suis pas très fort en prog mais là j'y arrive pas
j'ai une erreur d'argument alors que j'ai recopié a la lettre près le code de la page 5
int(rand15+1->L1(H
j'ai essayé en mettant une parenthèse mais rien n'y fait donc si vous pouviez m'aider ca m'arrangerait

merci
linkakro le 13/04/2011 à 17:06
L1 est la liste1. touches 2nde+1
int et rand sont des fonctions du menu math.
-> est un sto
paul le 13/04/2011 à 17:48
oui oui je sais c'est ce que j'ai fait mais c'est le sto qui bug je croipourtant je réessaye mais nan tjr rien