Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
(Jeu) UPMario (Jeu) - Page 1 / 3
S.L le 26/07/2012 à 17:36
Salut! Je vous présente ici le résultat d'une de mes "expériences" en matière de programmation. Je voulais créer un programme où l'on pouvez faire sauter un personnage en l'air et qu'il retombe sur le sol.
J'ai donc fait dans ce programme Mario (à ma façon

) qui saute du sol et qui peut se déplacer de droite à gauche. J'ai rajouté un but à ce programme en mettant des obstacles à éviter: ils apparaissent au hasard en haut ou en bas et se dirigent vers Mario, vous devez sauter ceux du bas et laisser Mario au sol quand il y a ceux du haut. Enfin, à chaque fois que vous sautez, ça vous rajoute +1 au compteur des UP et quand vous touchez un obstacle, vous perdez et voyez votre nombre de UP. Bon, assez parlé et place au programme.
PS: Deux petites images pour vous montrer la différence entre le Mario de ce programme et le vrai Mario

.
Image manquante
Notez que Mario met le poing en l'air
Les commandes sont:
[<-] (flèche de droite) : Se déplacer à droite
[->] (flèche de gauche) : Se déplacer à gauche
[Î] (flèche du haut) : Sauter
[annul] (touche annuler) : Quitter le jeu
Nom: UPMARIO
Taille: 676 octets
Auteur: S.L
-> : flèche sto
>= : signe plus grand ou égal
<= : signe plus petit ou égal
TI Stats.fr (fonctions en Français)
Code
PROG:UPMARIO
:EffEcr
:7->A
:3->B
:6->C
:2->D
:6->E
:5->F
:5->G
:3->H
:0->I
:1->Z
:1->U
:16->Y
:9->T
:Output(1,1,"---------------- //il y a 16 tirets
:Output(2,6,"UPMARIO
:Output(4,1,"GAME BY S.L
:Output(7,5,"POUR TI 82/83
:Output(8,1,"---------------- //il y a 16 tirets
:Pause
:While 1
:If B+1=Y et A=X
:Goto 1
:If B+1=T et A=S
:Goto 1
:If F=Y et E=X
:Goto 1
:If F=T et E=S
:Goto 1
:If Z=1:7->X:If Z=2:4->X
:If U=1:7->S:If U=2:4->S
:Y-1->Y
:T-1->T
:codeTouche->K
:If K=45:Then:EffEcr:Stop:End
:If K=26:Then:B+1->B:D+1->D:F+1->F:H+1->H:End
:If K=24:Then:B-1->B:D-1->D:F-1->F:H-1->H:End
:If D<=1:Then:2->B:1->D:4->F:2->H:End
:If F>=16:Then:14->H:16->F:13->D:14->B:End
:EffEcr
:Output(X,Y,"<
:Output(S,T,"<
:Output(8,1,"---------------- //il y a 16 tirets
:Output(A,B,"JL
:Output(C,D,"*()
:Output(E,F,"*
:Output(G,H,"(-
:If G=4:G+1->G
:If E=4:E+2->E
:If C=5:C+1->C
:If A=6:A+1->A
:If K=25:Then:G-1->G:E-2->E:C-1->C:A-1->A:I+1->I:End
:If Y<=1:Then:16->Y:entAléat(1,2)->Z:End
:If T<=1:Then:16->T:entAléat(1,2)->U:End
:End
:Lbl 1
:EffEcr
:Output(4,4,"GAME OVER!
:Output(5,6,I
:Output(5,9,"UP
:Pause
:Stop
Voilà! Bon jeu à tous!

linkakro le 26/07/2012 à 18:01
Corrige cette ligne en remplaçant 16->T par 16->Y
Code
:If Y<=1:Then:16->Y:entAléat(1,2)->Z:End
C'est sympathique, surtout avec le mario, mais je m'attendais à mieux.
S.L le 26/07/2012 à 18:12
Désolé pour l'erreur de recopiage
Comme je le disais, c'est une "expérience" et comme c'est la première fois que je fais ça, c'est normal qu'il est pas parfait

si tu veux l'optimiser, tu es le bienvenu

S.L le 26/07/2012 à 22:50
Ok, je te fais ça tout de suite

ld le 26/07/2012 à 23:11
Rhoo

<3

S.L le 27/07/2012 à 00:03
Voilà ta bannière
Image manquante
ld le 27/07/2012 à 00:35
Mille merci ! C'est tout juste impressionnant

Tu as un générateur de Gif ?
S.L le 27/07/2012 à 10:26
De rien

T'as plus qu'à la mettre dans ta signature !
Non ce n'est pas un générateur mais plutot un editeur, je crée chaque image une par une /il y en a une quarantaine/ et je les assemble avec ce logiciel. Je peux même définir la durée de chaque image

snap le 30/07/2012 à 00:32
Un peu d'optimisation ne fait pas de mal ;p
Code
:If B+1=Y et A=X
:Goto 1
:If B+1=T et A=S
:Goto 1
:If F=Y et E=X
:Goto 1
:If F=T et E=S
:Goto 1
Peut tout simplement se transformer en
Code
:If B+1=T et A=S ou B+1=Y et A=X ou F=Y et E=X ou F=T et E=S
: Goto 1
Ensuite :
Code
:If K=26:Then:B+1->B:D+1->D:F+1->F:H+1->H:End
:If K=24:Then:B-1->B:D-1->D:F-1->F:H-1->H:End
Peut devenir :
Code
(K=26)-(K=24 -> Z
B+Z -> B : D+Z -> D : F+Z -> F : H+Z -> H
Puis :
Code
:If G=4:G+1->G
:If E=4:E+2->E
:If C=5:C+1->C
:If A=6:A+1->A
Devient
Code
G+(G=4 -> G
E+2(E=4 -> E
C+(C=5 -> C
A+(A=6 -> A
Sinon, pour perdre tu peux mettre toutes les instructions dans le while que l'on transformera en repeat pour plus de confort
A la fin, ça donne :
Code
PROG:UPMARIO
:EffEcr
:7->A
:3->B
:6->C
:2->D
:6->E
:5->F
:5->G
:3->H
:Effvar I1->Z
:1->U
:16->Y
:9->T
:Output(1,1,"---------------- //il y a 16 tirets
:Output(2,6,"UPMARIO
:Output(4,1,"GAME BY S.L
:Output(7,5,"POUR TI 82/83
:Output(8,1,"---------------- //il y a 16 tirets
:Pause
:Repeat B+1=Y et A=X ou B+1=T et A=S ou F=Y et E=X ou F=T et E=S
:If Z=1:7->X:If Z=2:4->X
:If U=1:7->S:If U=2:4->S
:Y-1->Y
:T-1->T
:codeTouche->K
:If K=45:Then:EffEcr:Stop:End
(K=26)-(K=24 -> Z
B+Z -> B : D+Z -> D : F+Z -> F : H+Z -> H
:If D<=1:Then:2->B:1->D:4->F:2->H:End
:If F>=16:Then:14->H:16->F:13->D:14->B:End
:EffEcr
:Output(X,Y,"<
:Output(S,T,"<
:Output(8,1,"---------------- //il y a 16 tirets
:Output(A,B,"JL
:Output(C,D,"*()
:Output(E,F,"*
:Output(G,H,"(-
:G+(G=4 -> G
:E+2(E=4 -> E
:C+(C=5 -> C
:A+(A=6 -> A
:If K=25:Then:G-1->G:E-2->E:C-1->C:A-1->A:I+1->I:End
:If Y<=1:Then:16->Y:entAléat(1,2)->Z:End
:If T<=1:Then:16->T:entAléat(1,2)->U:End
:End
:Lbl 1
:EffEcr
:Output(4,4,"GAME OVER!
:Output(5,6,I
:Output(5,9,"UP
:Pause
Voila, si quelque chose pose un probleme n'hesitez pas, je n'ai pas testé mes modifications mais normalement, pas de problèmes

S.L le 30/07/2012 à 11:12
Merci, mais je n'ai pas compris ça:
snap a écrit :
Code
(K=26)-(K=24 -> Z
B+Z -> B : D+Z -> D : F+Z -> F : H+Z -> H
...
Code
G+(G=4 -> G
E+2(E=4 -> E
C+(C=5 -> C
A+(A=6 -> A
Tu pourrais m'expliquer?

snap le 30/07/2012 à 12:46
Bien sur!
Il faut d'abord savoir que j'ai utilisé dans ces deux méthodes des bolééns.
Des bolééens (je sais plus si sa s'écrit comme ça :p ) sont des conditions (comme le if) que te renvoie 1 ou 0 en fonction de la véracité de la condition.
Exemple :
Te donnera 3 car A est égal à 1 donc (A=1) te renvoie 1 qui additionner a 2 te donne trois. Je sais pas si je suis compréhensible :p
donc :
Code
(K=26)-(K=24 -> Z
B+Z -> B : D+Z -> D : F+Z -> F : H+Z -> H
Dans ce code : Si K=26, alors (K=26)-(K=24) donne 1-0 donc Z=1
Si K=24, alors (K=26)-(K=24) donne 0-1 donc Z=-1
Si K=/= 24 et K=/=26, alors (K=26)-(K=24) donne 0-0 donc Z=0
Pour l'autre partie c'est pareil :
Code
G+(G=4 -> G
E+2(E=4 -> E
C+(C=5 -> C
A+(A=6 -> A
Si G=4, alors (G=4) renvoie 1 donc G+(G=4) donne G+1
Si E=4, alors 2(E=4) renvoie 2(1) qui donne 2 donc E+2(E=4) donne E+2
Etc
Voila, j'espere avoir été claire, si il y a des trucs que tu ne comprend pas n'hésite pas

S.L le 30/07/2012 à 14:34
Ok merci c'est clair

si j'ai besoin, je te ferais appel!
linkakro le 30/07/2012 à 18:44
snap a écrit :
Code
:If K=26:Then:B+1->B:D+1->D:F+1->F:H+1->H:End
:If K=24:Then:B-1->B:D-1->D:F-1->F:H-1->H:End
Peut devenir :
Code
(K=26)-(K=24 -> Z
B+Z -> B : D+Z -> D : F+Z -> F : H+Z -> H
Puis :
Code
:If G=4:G+1->G
:If E=4:E+2->E
:If C=5:C+1->C
:If A=6:A+1->A
Devient
Code
G+(G=4 -> G
E+2(E=4 -> E
C+(C=5 -> C
A+(A=6 -> A
Ceci réduit le poids du code mais ralentit le programme.
aide le 11/09/2012 à 22:11
a ligne Output(s,t,"<
ma calculatrice m'indue une erreurs sur le dernier signe pourquoi quelqu’un peu n'aider

blg_flg le 12/09/2012 à 13:06
A mon avis, cela vient du fait que S et T ne sont pas définis ou pas sur l'écran.
Quelle est la sorte d'erreur? Erreur syntaxe? Domaine? etc.owd le 20/09/2012 à 18:35
Moi j'ai une ligne qui ne passe pas:
:Output(G,H,"(-
Il me dit erreur: Domaine.Cytropus le 20/09/2012 à 18:40
Vérifie bien le programme et regarde combien vaut G et Hseluj78 le 22/09/2012 à 01:03
Entaléas c quoi en anglais ? J'ai pas la ti en fr moi !!

Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.