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
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
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.
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