Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
(Jeu) UPMario (Jeu)
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 !!

Samos le 22/09/2012 à 10:24
RandInt(Ti-82-stats-fr-snake le 28/09/2012 à 19:13
Bonjours, j'ai une erreur domaine au niveau d'ICI:
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,"< <----------------------------ICI
:Output(S,T,"< <----------------------------ICI AUSSI JE PENSE PLEASE HELP
: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
Au niveau de ça: " :Output(X,Y,"< ".
J'attend vite vos réponse, merci.
Cytropus le 28/09/2012 à 19:40
vérifie bien ces deux passages,
Code
:If Z=1:7->X:If Z=2:4->X
:If U=1:7->S:If U=2:4->S
:Y-1->Y
L'erreur domaine signifie que les coordonnées ne sont pas dans l'écran.
En espérant t'avoir aidé

Kevin le 15/09/2013 à 20:42
Salut ! Alors je viens de tomber sur ce post et je l'ai trouvé sympa. Du coup, je l'ai recopié sur ma calculatrice. Mais au moment de lancer le programme, on m'indique une erreur de syntaxe au niveau de : :Output(8,1,---------------- et plus précisément au niveau du tiret. Quelqu'un pourrait me dire quel est le problème s'il vous plait ?
P.S : j'ai mis le tiret du signe moins.m@thieu41 le 15/09/2013 à 21:13
Bonjour,
Il faut mettre un guillemet avant le tiret: Output(8,1,"----------------rpgcreator le 16/09/2013 à 13:26
juste une remarque: mario laisse le poing en l'air, meme quand il redescend
bon c'est un detail, mais je sais pas ou tu as trouve le sprite pour mario, c'est juste pas l'original

Wyrden le 20/09/2013 à 01:15
Salut !
: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
A la deuxième et troisième ligne y a pas : ?
Et sinon comment on fait pour revenir à la ligne sans mettre : ?
Je sais je suis pas très doué
Merci d'avance

linkakro le 20/09/2013 à 20:14
Il y a effectivement des ":" en début de ligne. C'est un oubli.
Un retour à la ligne se fait simplement avec la touche entrer, et cela affiche toujours ":" qu'on n'a pas à saisir.
Les ":" écrits par le clavier servent à juxtaposer des commandes sans retour à la ligne.
Mets des guillemets dans ton message de forum autour des ":" quand tu les désignes. Moi j'ai cherché des points d'interrogation.Wyrden le 20/09/2013 à 21:51
Ah oui désolé j'y penserai

ça marche !
merci encore

tyler le 28/09/2013 à 09:54
bonjour a vous , j ai recopier srucpuleusement tout le code sur ma calculette. quand je veux lancer le programme il me met error syntax et me renvoie a la première ligne . je ne comprends pas pourquoi

pouvez vous m aidez ?
ps: je suis un simple débutant en matière de programmation

m@thieu41 le 28/09/2013 à 10:37
Cette ligne? : PROG:UPMARIO
Elle n'est pas à mettre, c'est le titre du prgm.slashy le 08/09/2014 à 23:19
Bonjour, je poste sur ce forum parce que une fois le programme lancé, Mario ne saute pas et ne se deplace pad.Savez vous comment y remedier ? Merci

linkakro le 09/09/2014 à 00:45
Toutes les lignes contenant K peuvent être défectueuses. K reçoit en effet le codeTouche (getKey) qui lit le clavier pour appliquer ensuite les actions.XY le 19/09/2014 à 19:21
Et donc il faut faire quoi svp ?? pcq moi ca marche pas non plus (et je débute en programmation)linkakro le 20/09/2014 à 01:39
Je n'ai aucune idée immédiate de la cause ni même si le programme saisi n'a pas une erreur de copie.
Vérifiez ceci tout d'abord.
Code
: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
aurel0515 le 20/09/2014 à 19:27
Moi il est ecrit erreur domaine vers la fin:
Output(X,Y,"<
Pourquoi???aurel0515 le 20/09/2014 à 19:39
Pourquoi quand je lance le jeu ca me met game over directlinkakro le 21/09/2014 à 00:15
Erreur domaine car X ou Y ont des valeurs hors de l'écran. La cause peut être n'importe où X et Y sont modifiées.
Game Over
Le programme que j'ai déjà copié il y a longtemps fonctionne. Je suis persuadé que les erreurs viennent de vos copies. Et je ne peux pas tout deviner.thebreakerdu88 le 02/10/2014 à 22:03
Hey ! Salut j ai un putain de problème j ai fait le pgrm pendant 1 h mais marche pas juste acceuil et game over quelqu un pourrais me dire sur

une ti82+
Texte coloré linkakro le 12/10/2014 à 20:33
Vous devez tous commettre la même erreur de recopiage et cela m'agace... Je l'ai testé et comparé token par token mon exemplaire avec le code source, aucun problème pour moi. Le code original et la modification postée plus tard marchent toutes les deux.R0cks1 le 04/11/2014 à 19:22
J'ai un problème : J'ai recopié le programme exactement comme il fallait et malheureusement quand je lance le programme je vois l'écran d'accueil puis l'écran de mort
Need help !linkakro le 04/11/2014 à 20:41
Je l'ai déjà et il fonctionne.
Je viens à peine de songer que tous les visiteurs qui se plaignent du gameover systématique ont certainement saisi des ":" au début de chaque ligne alors qu'il ne faut pas. Lorsque cela se fait en entête de commandes If cela est faux.
Voici un exemple, le premier endroit concerné. Les ":" sont ceux des retours à la ligne de la calculatrice, aucun ":" n'est à ajouter.
Code
:If B+1=Y and A=X
:Goto 1
Et si vous êtes trop noob pour utiliser correctement les lignes, alors vous pouvez écrire ainsi sur une seule ligne et il n'y a plus d'ambiguité sur l'entête de la seconde ligne.
Code
:If B+1=Y and A=X:Goto 1
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.