Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 23 Avr 2007, 16:56
Posté le : Lun 23 Avr 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 ).
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
Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 23 Avr 2007, 16:56
Posté le : Lun 23 Avr 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 ). 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
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Ven 27 Avr 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).
---------------------- Vive la programmation et vive le vibraphone !!!
diegowar Invité
Posté le : Sam 28 Avr 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 ) 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)).
Autorisation : Membre
Nb de messages : 3
Inscrit le : Mer 16 Sep 2009, 15:33
Posté le : Ven 18 Sep 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| Invité
Posté le : Jeu 20 Sep 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 (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+
Autorisation : Membre
Nb de messages : 15
Inscrit le : Dim 07 Oct 2012, 21:10
Posté le : Jeu 11 Oct 2012, 21:29
Là aussi c'est bon...
---------------------- I'm Just a Man, Standing In Front of The Reality.
You can call me Garry The Kid
Truc Invité
Posté le : Mer 17 Oct 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 !
Autorisation : Membre
Nb de messages : 407
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Jeu 18 Oct 2012, 21:09
@Truc: il faut lire toute les petite ligne avant le prog, ça peut être utile
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
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 18 Oct 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)
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 23 Nov 2012, 17:02
Bonsoir, indiques nous à quel endroit elle apparait quand tu choisis "VOIR" sur ta calculatrice.
Sangohan38
Teynno Invité
Posté le : Ven 26 Sep 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
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 27 Sep 2014, 1: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.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 27 Sep 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.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 18
Inscrit le : Mar 04 Nov 2014, 19:17
Posté le : Sam 13 Déc 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
quelqu'un saurait comment modifier ça où comment faire sauter mario plus loin/plus haut ?
---------------------- signature classique : Geek un jour , Geek toujours
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
merci mais un autre problème persiste (et oui les joies de la programmation quand un problème s'en vas un autre arrive ) c'est normal que le niveau reste figé sur la premiere partie et/ou qu'il y ait rien d'autre après?
---------------------- signature classique : Geek un jour , Geek toujours
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 13 Déc 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.)
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)