Forum

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

Mario By Diego

diegowar le 23/04/2007 à 18:30
Ma version de Mario (j'en ai vu une autre quelque part).

Elle fonctionne a peut près correctement, sauf que ça rame un peu, je conseille donc le TI-83+ , mais sur la TI-82 (que j'ai), c'est pas horrible non plus. L'algorythme qui créer la gravité est très basique, ce qui prend de la ram c'est l'algorythme qui gère les collisions (et qui n'est pas encore parfait au passage). Je vous ai fait un éditeur si vous avez la flemme d'ajouter des niveaux dans le programme (mais il faut déjà comprendre comment il marche pour ça happy.gif ).

Ce programme n'est pas terminé aussi le jeu devrait planter une fois que vous avez terminé le niveau 6 (car il n'y a que 6 niveau pour le moment). Ce sont de très court niveaux qui prennent un seul écran, j'avais essayer de créer un défilement d'écran, mais niveau ram, c'est impossible de le faire sans avoir à attendre 4 secondes à chaque fois alors...

On a qu'une vie car j'ai trouvé que le jeu est relativement facile (sur TI-82 où c'est assez lent en tout cas).

Je vous ai épargné le manuel de jeu qui explique comment jouer et les commande, avec le programme fait 3500 octets, là il doit faire 2000 à 2500 octets.

Les commandes :
Dans le jeu :
-Flèches directionnelles
Dans l'éditeur :
-Flèches directionnelles
-"-" : 1 (sol)
-"*" : 2 (picant)
-" " : 0 (vide)
-"E" : 3 (position de fin du niveau)
-"S" : 4 (position de départ du niveau)
-"^" : 5 (tremplin)
-Jouer sur la Map (attention on ne peut jouer qu'une fois) : Clear

Faute que ça ramait déjà beaucoup, je ne me suis pas arrangé pour qu'on puisse tomber dans le vide, aussi arrangez vous pour que la dernière ligne n'ai aucun trou.

Code

:{8,16}->dim([A])
:0->E
:Menu("MARIO","JOUER",J,"EDITEUR","E","QUITTER",L)
:Lbl L
:ClrHome
:Output(4,4,"BYE..."
:Stop
:End
:Lbl E
:ClrHome
:1->V:1->W
:8->Y:16->Z
:1->S:1->T
:Fill(0,[A])
:3->[A](Y,Z]
:4->[A](S,T)
:Output(8,16,"E
:While 1=1
:If (K=24 and W!=1) or (K=25 and V!=1) or (K=25 and W!=16) or (K=34 and V!=8)
:Then
:If [A](V,W)=0
:Output(V,W," "
:If [A](V,W)=1
:Output(V,W,"-"
:If [A](V,W)=2
:Output(V,W,"*"
:If [A](V,W)=3
:Output(V,W,"E"
:If [A](V,W)=4
:Output(V,W,"S"
:If [A](V,W)=5
:Output(V,W,"^"
:End
:If K=24 and W!=1
:W-1->W
:If K=24 and V!=1
:V-1->V
:If K=26 and W!=16
:W+1-W
:If K=34 and V!=8
:V+1->V
:If K=92 and [A](V,W)!=3 and [A](V,W)!=4
:1->[A](V,W)
:If K=93 and [A](V,W)!=3 and [A](V,W)!=4
:2->[A](V,W)
:If K=102 and [A](V,W)!=3 and [A](V,W)!=4
:0->[A](V,W)
:If K=94 and [A](V,W)!=4
:Then
:Output(Y,Z," "
:0->[A](Y,Z)
:V->Y:W->Z
:3->[A](V,W)
:End
:If K=93 and [A](V,W)!=3
:Then
:Output(S,T," "
:0->[A](S,T)
:V->S:W->T
:4->[A](V,W)
:End
:If K=83 and [A](V,W)!=3 and [A](V,W)!=4
:5->[A](V,W)
:Output(V,W,"X"
:0->K
:getKey->K
:If K=45
:Then
:For(A,1,8)
:For(B,1,16)
:If [A](A,B)=3 or [A](A,B)=4
:0->[A](A,B)
:End
:End
:S->I:T->J
:Y->O:Z->P
:1->E
:Goto C
:End
:End
:Lbl J
:ClrHome
:0->Q
:Lbl B
:Q+1->Q
:Fill(0,[A])
:If Q=1
:Then
:For(A,1,16)
:1->[A](8,A)
:End
:1->[A](6,7)
:1->[A](5,11)
:1->[A](5,16)
:2->[A](8,13)
:2->[A](8,14)
:2->[A](8,15)
:4->O:16->P
:Goto C
:End
:If Q=2
:Then
:For(A,1,16)
:1->[A](8,A)
:End
:1->[A](6,5)
:1->[A](5,2)
:1->[A](5,6)
:1->[A](4,9)
:1->[A](3,13)
:1->[A](2,16)
:For(A,2,16,2)
:2->[A](8,1)
:End
:1->O:16->P
:Goto C
:End
:If Q=3
:Then
:For(A,1,16)
:2->[A](8,A)
:End
:1->[A](7,1)
:1->[A](4,2)
:1->[A](7,7)
:1->[A](5,9)
:1->[A](4,13)
:1->[A](3,16)
:2->O:16->P
:Goto C
:End
:If Q=4
:Then
:For(A,1,16)
:2->[A](8,A)
:End
:1->[A](8,1)
:1->[A](5,3)
:1->[A](2,4)
:For(A,2,7)
:2->[A](A,6)
:2->[A](A,9)
:End
:2->[A](2,8)
:2->[A](5,7)
:2->[A](7,8)
:2->[A](1,7)
:7->O:7->P
:Goto C
:End
:If Q=5
:Then
:For(A,1,10)
:1->[A](8,A)
:End
:For(A,11,16)
:2->[A](8,A)
:End
:2->[A](6,4)
:2->[A](5,4)
:2->[A](4,4)
:2->[A](3,5)
:2->[A](7,6)
:2->[A](6,6)
:2->[A](7,7)
:2->[A](6,9)
:2->[A](5,9)
:2->[A](4,8)
:2->[A](3,6)
:2->[A](3,7)
:2->[A](8,2)
:2->[A](7,15)
:2->[A](2,8)
:2->[A](5,15)
:2->[A](7,14)
:2->[A](6,14)
:2->[A](3,8)
:6->O:15->P
:Goto C
:End
:If Q=6
:Then
:For(A,1,16)
:2->[A](8,A)
:End
:4->[A](2,1)
:5->[A](3,3)
:5->[A](6,8)
:5->[A](5,9)
:5->[A](6,12)
:5->[A](5,14)
:5->[A](3,15)
:5->[A](1,16)
:5->[A](1,13)
:5->[A](1,10)
:1->[A](2,7)
:1->O:7->P
:Goto C
:End
:Lbl C
:0-K:0->N:0->M:0->L
:ClrHome
:For(A,1,8)
:For(B,1,16)
:If [A](A,B)=1
:Output(A,B,"-"
:If [A](A,B)=2
:Output(A,B,"*"
:If [A](A,B)=5
:Output(A,B,"^"
:End
:End
:Lbl A
:If E=0
:Then
:3->I:1->J
:End
:If Q=6
:Then
:1->I:1->J
:End
:0->N:0->L:0->M
:While 1=1
:If I=0 and J=P
:Then
:If E=0
:Then
:Goto B
:Else
:Goto V
:End
:End
:If I>0
:Then
:If [A](I,J)=5
:Then
:2->N
:0->[A](I,J)
:End
:If [A](I+1,J)=2
:Goto K
:If ([A](I+1,J)=0 or [A](I+1,J)=5) and N=0
:1->M
:End
:If I<1 and N=0
:1->M
:If K=25
:Then
:If [A](I+1,J)=1
:Then
:If I!=1
:Then
:If [A](I-1,J)=0 or [A](I-1,J)=5
:3->N
:Else
:3->N
:End
:End
:End
:If K=24 and J!=1
:3->L
:If K=26 and J!=16
:4->L
:If L!=0 or M!=0 or N!=0
:Then
:If I>0
:Output(I,J," "
:If N!=0
:Then
:If I>1
:Then
:If [A](I-1,J)=0 or [A](I-1,J)=5
:Then
:I-1->I:N-1->N
:Else
:If [A](I-1,J)=2
:Goto K
:0->N
:End
:Else
:I-1->I:N-1->N
:End
:End
:If M=1
:I+1->I
:If L=3
:Then
:If I>0
:Then
:If [A](I,J-1)=2
:Goto K
:If [A](I,J-1)=0 or [A](I,J-1)=5
:J-1->J
:Else
:J-1->J
:End
:End
:If L=4
:Then
:If I>0
:Then
:If [A](I,J+1)=2
:Goto K
:If [A](I,J+1)=0 or [A](I,J+1)=5
:J+1->J
:Else
:J+1->J
:End
:End
:End
:If I>0
:Output(I,J,"M"
:0->L:0->M
:getKey->K
:End
:Lbl V
:Output(4,4,"WELL DONE !"
:Pause
:PrgmMario
:Lbl K
:Output(4,5,"YOU DEAD MAN"
:Stop


!= : Différent de
vibra le 23/04/2007 à 19:33
Les nouveaux mettent la barre haut !! laugh.gif
diegowar le 23/04/2007 à 19:41
Mais non je programme depuis que je suis en seconde (là je suis en 1ere S).

Je me souviens, pendant toute l'année de seconde, j'avais crée une dizaine de "Reflex" très variés (dont certains vrais bijoux happy.gif ). Tout est passé à la trappe depuis ^^. J'ai aussi à mon actif un jeu de dame, de ping pong, pleins de jeux de société (genre bataille navale...), mais tout a été supprimé recemment, marre de suer à créer des programmes qui ne dépassent pas 1500 octets happy.gif
vibra le 27/04/2007 à 16:17
J'ai plusieurs questions par rapport à ton pogramme.
D'une part si j'ai ien compris, l'éditeur sert à faire un niveau ?
Ca veur dire quoi jouer sur la map ?
Et puis il y a un truc que je comprend pas. Au bout d'un moment, il faut qu'un nombra ait pour factorielle 4, or à ma connaissance, aucun ombra n'a pour factorielle 4.
Et puis j'aurais sûrement d'autres questions vu que le programme ne fonctionne pas (j'ai surement du ma tromper en recopiant).
diegowar le 28/04/2007 à 13:11
L'éditeur sert à construire un niveau sans utiliser les nombres, mais juste les bouton (le programme traduit ce qu'on appuie dans une matrice (et 2 variables) qui sont ce qu'il faut au programme pour lancer un niveau. Une fois que le niveau est fini, le programme cherche d'emblée à aller au prochain niveau, alors pour éviter ça j'ai mis que si la booléenne de l'éditeur est activée (je ne sais pas du tout laquelle c'est ^^), quand on fini le niveau, le programme s'arrête (et quand on meurt le programme s'arrête de toute façon). Donc on ne pourra jouer sur la map (c'est à dire la carte, j'entend par là le niveau happy.gif ) qu'une seule fois, qu'on gagne ou qu'on perde. Si on veut y rejouer, il faut entrer dans le programme, et mettre un goto qui va direct au label qui rend le niveau jouable car celui-ci ne devrait pas être effacé de la mémoire immédiatement aprés.

Je n'utilise aucune factorielle dans le programme, j'ai lancé la recherche pour les "!" dans le code que j'ai recopié, et je n'ai vu que des "!=" et aucune factorielle.

Si le programme ne fonctionne pas, c'est peut être aussi à cause de moi, je l'ai recopié très rapidement (et je me suis vu me corriger sur la ligne d'avant que j'étais en train d'écrire, alors peut être ai-je fais des oubli (mais je suppose que si je me suis trompé, ça se verrait plutot dans une syntax error)).


Sinon merci de ton intérêt happy.gif
diegowar le 28/04/2007 à 13:12
Je crois à chaque fois qu'en tapant diegowar, le forum va me compter comme loggé moodforlove.gif
vibra le 28/04/2007 à 14:20
Ok, mais le "!" est le symbole des factorielles !! Donc si il y a des "!" dans le programme c'est qu'il utilise des factorielles !! crazy.gif
stargateatlantis18** le 18/09/2009 à 20:17
Je n'arrive pas a faire marcher mario:
pour l'étiquette il me m'est un x en haut a gauche que je peut deplacer quer en bas et en haut et a la place du x en haut as gauche il me m"est un s.
Pour le jeu je ne peut pas reculer et je n'arrive pas a cahnger de niveaux car je peut me ballder que dans la fenetre donc que sur les 3 "-".
Help. merci d'avance.

Les "." sont du vide

___________________
|X...........................|
|.............................|
|.............................| -> si je deplace le X vers le bas il me met un S
|.............................|
|.............................|
|_________________E|





__________________
|............................|
|............................|
|............................| <- je ne peut pas passer la fin du graphique
|........-.....-..-..........|
|....-.......................|
|M___________***___|
|Zhangfei| le 20/09/2012 à 21:09
Salut, je sais pas si ça pose probème à l'un d'entre vous mais moi du moins, dès que je le lance, il me met Err:Syntaxe, je fait 2:voir et je voit que ce sont les [A] qui ne marchent pas, alors je sais pas si je doit pas les remplacer par quelques choses d'autres car je ne m'y connait pas trop en programme, je sais juste recopier moodforlove.gif (j'ai une ti-82 Stats.fr). Merci si vous pouviez m'aidez, parce que sinon je me suis taper 2577 octets pour que ça ne marche pas dès la première ligne donc ça me fait un peu mal aux fesses. A+
blg_flg le 20/09/2012 à 21:15
Le [A] se trouve dans matrice et n'est pas [ + A + ]. winkle.gif
Zhangfei le 22/09/2012 à 18:09
Wow, réponse vachement rapide, je me disait que j'allais attendre vachement longtemps puisque le dernier post datait de septembre 2009 bigmouth.gif Merci bien, A+
eArnoow le 22/09/2012 à 18:12
Oui mais quand tu réponds le post est uppé et le sujet va en première page (comme sur tous les forums), donc on le voit vite fait.
blg_flg le 22/09/2012 à 20:59
C'est parce que j'étais pas là en 2009. laugh.gif
Kid_Garry le 08/10/2012 à 22:14
Escuse moi, mais j'ai une erreur de dimention invalide
Code
If I>0
:Then
:If [A](I,J)=5
:Then
:2->N
:0->[A](I,J)
:End
:If [A](I+1,J)=2  <==== ICI
:Goto K
:If ([A](I+1,J)=0 or [A](I+1,J)=5) and N=0
:1->M
:End

J'ai chercher mais je ne trouve pas la réponse et j'ai relu tout le code sans trouver quoi que ce sois ... ^^
Cytropus le 08/10/2012 à 22:16
Quel sont les valeur de I et J ?
Kid_Garry le 08/10/2012 à 22:19
I=8
J=1
Cytropus le 08/10/2012 à 22:21
Vérifie que tu as bien affecté 1 à I (il ne doit pas être supérieur à 7 cupsmiley.gif )

EDIT: ou 3 (ça dépent crazy.gif )
Kid_Garry le 08/10/2012 à 22:25
Code
If Q=6
:Then
:1->I:1->J
:End


Ici ?
Cytropus le 08/10/2012 à 22:29
Et juste au dessus oui happy.gif
Kid_Garry le 09/10/2012 à 09:23
ouai tout est bon là ^^
Kid_Garry le 10/10/2012 à 16:16
J'ai bien vérifier et tout est bon... :/
Cytropus le 10/10/2012 à 17:36
en générale, les erreur se trouve au tout début du programme,
tente avec les lignes 12-13-14 beer.gif
Kid_Garry le 11/10/2012 à 21:29
Là aussi c'est bon...
Truc le 17/10/2012 à 17:38
Voila. J'ai recopié le programme, il marche nickel sauf UN Seul truc : est-ce normal que la trajectoire des M reste dans l'écran de jeu ? L'image est pleine de M et c impossible de s'y retrouver !
Cytropus le 17/10/2012 à 19:08
Ce n'est pas normal laugh.gif

tu doit avoir oublié un bout dans cette partie:
Code
:If L!=0 or M!=0 or N!=0
:Then
:If I>0
:Output(I,J," "
Truc le 17/10/2012 à 20:53
Merci je t'adore ! happy.gif
mingerton402 le 18/10/2012 à 17:12
Moi, j'ai un autre problème. Je n'arrive pas a depasser le niveau 1. Yen a pas ou g mal recopié ?
Truc le 18/10/2012 à 18:03
Nouveau pb : qq sait comment on utilise l'éditeur ?
Cytropus le 18/10/2012 à 21:09
@Truc: il faut lire toute les petite ligne avant le prog, ça peut être utile winkle.gif
Dans l'éditeur :
-Flèches directionnelles
-"-" : 1 (sol)
-"*" : 2 (picant)
-" " : 0 (vide)
-"E" : 3 (position de fin du niveau)
-"S" : 4 (position de départ du niveau)
-"^" : 5 (tremplin)
-Jouer sur la Map (attention on ne peut jouer qu'une fois) : Clear


@mingerton402:Il ne me semble pas qu'il y est plusieurs niveaux karate.gif
Cytropus le 18/10/2012 à 21:12
eyeonly.gif il parlait de l'éditeur de niveau du jeu laugh.gif

HS: Au fait, t'a réussit mon énigme du bateau ?
linkakro le 18/10/2012 à 22:35
Ah mais tu as posté juste après que j'ai supprimmé mon message précédent !
Je n'avais effectivement pas compris sa question.

Réponse au hs :
J'ai trouvé plusieurs solutions à ton énigme du bateau, je manque d'indications.
Pour arriver jusqu'à ces solutions, on suppose l'age du capitaine entre 0 et 99 d'où A=8,27,64 puisque la racine cubique est nécessairement entière. Ensuite on retranche à l'équation une des racine cubique, donc 2,3,4, d'où le produit des inconnues peut prendre trois valeur.
On décompose ces trois valeurs en nombres premiers, la seconde possibilité est stupide car elle se décompose en deux nombres premiers dont un de plusieurs dizaines de milliers, la première est plausible avec ses six facteurs et idem pour la troisième.
On peut supposer que le capitaine a au moins 20 ans, ce qui n'est pas vraiment explicite, il ne reste plus qu'un seul produit de six nombres premiers (le troisième).
Il reste enfin à déterminer quel facteur variable égale quel facteur premier connu. C'est là qu'on a le plus de possibilités. Certains nombres ne peuvent pas se placer n'importe-où comme le mois entre 1 et 12. admettons qu'on ai deux des varaibles fixées, il reste environ 4!=24 possibilités. (avec 5 on arrive déjà à 120)
Cytropus le 19/10/2012 à 17:46
ça arrive au meilleur ! glasses.gif

Hs:je te propose de continuer ici,n'est pas peur de nous interrompre !
ragnarok20091 le 23/11/2012 à 16:58
bonjours j'ai une erreur de dimension mais pourtant je ne trouve pas de fautes quelqu'un pourrai m'aider svp ??
Sangohan38 le 23/11/2012 à 17:02
Bonsoir, indiques nous à quel endroit elle apparait quand tu choisis "VOIR" sur ta calculatrice.

Sangohan38
Teynno le 26/09/2014 à 23:20
Moi quand j'allume le programme, j'ai écrit Well done et c'st tout ce que je peux faire... Je comprend vraiment rien a la programmation, donc je ne peux pas dire ce qui ne va pas crazy.gif
linkakro le 27/09/2014 à 01:00
Est-ce bien un message "WELL DONE" et non l'affichage "Done" des calculatrices anglaises en fin de programme ?

Les parties suivantes sont concernées par le message "WELL DONE" par le programme.
Code
:0->E // ne confonds pas nombre 0 et lettre O
:Menu("MARIO","JOUER",J,"EDITEUR","E","QUITTER",L)

:1->E
:Goto C

:If E=0 // idem
:Then
:Goto B
:Else
:Goto V
:End

//cette partie ne devrait fonctionner que si E est non-nul dans l'autre partie que j'ai mentionné
:End
:Lbl V
:Output(4,4,"WELL DONE !"
:Pause
Si le programme a une erreur n'importe où sur des End manquants, alors il est possible que le programme se termine immédiatement, de la même manière qu'il arriverait à la fin.
Teynno le 27/09/2014 à 18:51
J'ai trouvé, en fait j'ai fait des erreurs de recopiage :/ Mais la j'ai qu'un niveau et je vois pas comment je peux le terminer...
linkakro le 27/09/2014 à 21:43
Trouver la lettre "E" ? La sortie est désignée par E dans l'introduction du sujet avant le code du jeu.
R0cks1 le 13/12/2014 à 15:56
moi mon problème c'est que j'ai jamais réussi a finir le premier niveau : mario ne sautant que d'un block et en saut il ne va que de 2 en longueur je ne peux ni sauter sur la plate-forme qui est au coordonnées [6,7] sur l'écran ni sauter par-dessus le trou qui fait 3 de large angry.gif

quelqu'un saurait comment modifier ça où comment faire sauter mario plus loin/plus haut ?
linkakro le 13/12/2014 à 17:16
Modifie le niveau 1. La génération du décor du niveau 1 est ici. On distingue la case (6,7).
Code
:If Q=1
:Then
:For(A,1,16)
:1->[A](8,A)
:End
:1->[A](6,7)
:1->[A](5,11)
:1->[A](5,16)
:2->[A](8,13)
:2->[A](8,14)
:2->[A](8,15)
:4->O:16->P
:Goto C
:End
R0cks1 le 13/12/2014 à 21:14
linkakro a écrit :
Modifie le niveau 1. La génération du décor du niveau 1 est ici. On distingue la case (6,7).
Code
:If Q=1
:Then
:For(A,1,16)
:1->[A](8,A)
:End
:1->[A](6,7)
:1->[A](5,11)
:1->[A](5,16)
:2->[A](8,13)
:2->[A](8,14)
:2->[A](8,15)
:4->O:16->P
:Goto C
:End


merci happy.gif mais un autre problème persiste (et oui les joies de la programmation quand un problème s'en vas un autre arrive winkle.gif ) c'est normal que le niveau reste figé sur la premiere partie et/ou qu'il y ait rien d'autre après?
linkakro le 13/12/2014 à 21:46
Je ne pense pas. Chaque fois que Goto B est exécuté, Q est incrémenté et un nouvel écran est généré. Tandis que Goto V réexécute le programme.

(Réexécuter le programme dans lui-même juste pour revenir au début est une aberration de méthode, de même que les Goto dans les IfThenElseEnd.)
R0cks1 le 13/12/2014 à 22:22
linkakro a écrit :
Je ne pense pas. Chaque fois que Goto B est exécuté, Q est incrémenté et un nouvel écran est généré. Tandis que Goto V réexécute le programme.

(Réexécuter le programme dans lui-même juste pour revenir au début est une aberration de méthode, de même que les Goto dans les IfThenElseEnd.)

je vérifierais ça demain et je tiens au courant

tu pourais dire ce que tu pense de ça : https://tout82.pages-perso.fre[...].php?sujet=4167 ?