Forum

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

Mario By Diego - Page 1 / 3

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à ^^