Forum

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

NINJARUN - Page 1 / 2

valrom le 02/01/2011 à 11:46
Bonjour,
Je voudrais essayer de faire mon premier programme : Ninjarun.
Le principe du jeu est : on est un personnage qui cours (c'est l'écran qui se déplace) et on doit sauter ou rouler en fonction de l'emplacement de l'obstacle (s'il est en l'air, il faut rouler et s'il est en bas, il faut sauter). Au fur et à mesure que l'on avance, la vitesse s'accélère.
Mais je suis coincer dès le début, car j'arrive à le faire sauter et a le faire rouler, mais pas le faire revenir à sa place au bout d'une ou deux seconde.
HELP ahh.gif
Pour le reste je pense que se sera bon.

Merci happy.gif
valrom le 02/01/2011 à 11:49
Au fait, pour l'instant, ce n'est pas un personnage, mais une flèche qui va vers le haut ou vers le bas.^^
metallica le 02/01/2011 à 12:08
Tu peux montrer ton programme ?
valrom le 02/01/2011 à 12:40
Pour l'instant j'ai presque rien fait, c'est que le début.

Code

:EffEcr
:0->S:&-16->X:100->Z:0->O
:Reapeat K=105
:Output (7,1,"TTTTTTTTTTTTTTTT")
:Lbl 0
:5->A:5->B
:Output (B,3," ")
:Output (A,3,">")
:A->B
:codeTouche->K
:If K=11:A+1->A
:If K=15:A-1->A
:If A=3:4->A
:If A=7:6->A
:End


et c'est à partir de là que je suis coincé,
J'ai essayé plein de trucs du genre avec For( mais à chaque fois ça marche pas moodforlove.gif
valrom le 02/01/2011 à 12:43
S => score
X => position des obstacles
Z => vitesse
O => régulateur de vitesse

Les T c'est le sol, et je pourrais aussi rajouter un plafond.
valrom le 02/01/2011 à 12:49
Oups minied.gif
les deux caractères avant le premier "16", faut les oublier.
metallica le 02/01/2011 à 14:12
Je te conseille de faire le personnage sur 2 caractères de haut pour le transposer sur 1 lorsque tu fais une roulade ou de modifier la position des 2 lorsque tu sautes.
valrom le 02/01/2011 à 21:28
Ouais c'est aussi ce que j'ai pensé mais ce que j'arrive pas à faire c'est le faire revenir à sa place au bout de quelque temps.
linkakro le 03/01/2011 à 00:03
Les 5->A et 5->B sont-ils un essai pour le faire revenir à sa place ? Si oui, ce n'est en effet par encore au point.

Nous pouvons régler son retour en 5 en fonction d'un certain nombre de déplacement à l'horizontale, mais pas selon le temps.

Code
:EffEcr
:0->S:16->X:100->Z:0->O
:5->A:5->B
:Repeat K=105
:Output (7,1,"TTTTTTTTTTTTTTTT")       
:Lbl 0
:Output (B,3," ")
:Output (A,3,">")
:A->B
:codeTouche->K
:If K=11:A+1->A
:If K=15:A-1->A
:If A=3:4->A
:If A=7:6->A

:If A=/=5 et A=/=B    // je n'utilise pas K car sinon on peut maintenir le curseur en l'air quand il n'est pas trop rapide.
:4->T   // augmente T pour rester en l'air plus longtemps.
:T-1->T
:If T=0
:5->A

:End


pour plus tard :
Pour placer plusieurs obstacles en même temps sur l'écran, utilise une liste.
valrom le 03/01/2011 à 20:57
Merci bigmouth.gif , pour le 5->A et le 5->B, je les avaient mis parce que c'est comme ça que j'avais appris à déplacer un personnage.
linkakro le 04/01/2011 à 18:49
Par contre n'oublie pas de mettre les 5->A/B que j'ai oublié avant "Repeat".

Ce sujet d'aide aurait été bien dans la section aide. Mais tu vas publier la version finale j'espère ? Alors ce sera bien placé.
valrom le 05/01/2011 à 14:06
Ouais t'inquiète pas je le posterais quand il sera fini, (d’ailleurs il l'est presque), mais ça ne marche toujours pas, il reste toujours à la même place minied.gif
linkakro le 05/01/2011 à 20:18
Aïe je dois relire et tester.

EDIT: j'ai trouvé. Consulte le programme (édité)
valrom le 09/01/2011 à 12:11
fini, plus qu'à le poster dès que j'ai le temps.
valrom le 09/01/2011 à 16:14
Donc voilà comme promis le programme. godgrace.gif
La je l'est écrit avec toutes les parenthèse mais sinon si vous les enlevez (comme je l'est fait sur ma calculatrice) il fait 902 octets.
L VR ======> ça correspond au petit "L" dans [listes] + [->] et y a pas d'espace

Code

NINJARUN

:10-->dim(L VR
:(-)1-->S:16-->X:60-->Z:0-->O:6-->B:5-->V
:Lbl A
:EffEcr
2-->W
:For(P,1,14)
:Output(1,W,"=")
:Output(6,W,"-")
:Output(8,W,"T")
:W+1-->W:End
:1-->W
:For(P,1,8)
:Output(W,1,"!")
:Output(W,1-,"!")
:W+1-->W:End
:1-->W
:Output(2,4,">NINJARUN<")
:Output(3,8,"*")
:Output(4,3,"O    *    *")
:Output(5,3,"&#960; [9 espaces] *")
:Output(7,2,"RECORD :")
:Output(7,11,L VR(1))
:Pause
:EffEcr
:Menu("NIJARUN","JOUER",0,"REGLES",R,"QUITER",Q)
:Lbl 0
:EffEcr
:Output(1,1,"SCORE :")
:Output(2,1,"VIES :")
:Output(8,1,"TTTTTTTTTTTTTTTT")
:Output(4,1,"----------------")
:Lbl 1
:entAléat(5,6)-->Y
:S+1-->S
:O+1-->O
:If O=10:Then
:Z-1-->Z
:0-->O
:End
:Output(1,9,S
:Output(2,8,V
:If V=0:Then
:Goto 5
:End
:Lbl 2
:Output(B,1," ")
:Output(B+1,1," ")
:Output(A,1,"O")
:Output(A+1,1,"&#960;")
:A-->
:Output(Y,X,"*")
:Output(Y+1,X,"*")
:For(Q,1,Z)
:End
:X-1-->X
:Output(Y,X+1," ")
:Output(Y+1,X+1," ")
:If X=1:Goto 3
:codeTouche-->K
:If K=11:A+1-->A
:If K=15:A-2-->A
:If A=<:4-->A
:If A=8:7-->A
:If A=/=5 et A=/=B
:7-->T
:T-1-->T
:If T=0
:6-->A
:Goto 2
:Lbl 3
:16-->X
:Lbl 4
:If Y+1=A ou Y=A+1:Then
:V-1-->V
:Output(6,7,"Aie!")
:Pause
:Goto 0
:Else
:Goto 1
:Lbl 5
:EffEcr
:Output(2,7,"Game [12 espaces] Over")
:Output(5,3,"SCORE :")
:Output(5,11,S
:Output(7,3,"RECORD :")
:Output(7,12,L VR(1))
:If S>L VR(1)
:S-->L VR(1)
:Pause
:Goto A
:Lbl R
:EffEcr
:Output(1,1,"EVITER LES      OBSTACLES EN    ROULANT OU EN   SAUTANT.        F(X) : ROULER   Graph1(: SAUTER")
:Output(6,6,"e ")
:Pause
:Goto A
:Lbl Q
:EffEcr
:Output(4,6,"-BYE'!-")
:Stop
f:x=x² le 10/01/2011 à 08:50
Citation
L VR ======> ça correspond au petit "L" dans [listes] + [->] et y a pas d'espace


au petit "L" dans [listes] + [->]si je fais [listes] et [->] ca me fait tricroi pas de petit L
C'est pas L1 par hasard?
f/x=x² le 10/01/2011 à 09:10
Ah oui, et tu as aussi oublié un truc:
Citation
:A-->

A-> quoi?
Sangohan38 le 10/01/2011 à 12:40
En fait il dit dans quel menu la fonction L se trouvait.
Pour l'avoir, il faut faire [Liste]+[->]+[8].

Sangohan38
valrom le 10/01/2011 à 20:16
Citation

Ah oui, et tu as aussi oublié un truc:
Citation

:A-->

A-> quoi?


dsl minied.gif , après la flèche, il faut mettre B :
A-->B


Et juste au dessus, le "&#960;" en fait c'est le signe pi qui n'est pas passé qu'en j'ai copié collé depuis open office. minied.gif

Et Sangohan38 a raison, j'ai indiqué le menu dans lequel se trouvait le petit L.




Et sinon il est bien ? quelqu'un l'a testé ? cupsmiley.gif
valrom le 10/01/2011 à 20:22
Citation

pour plus tard :
Pour placer plusieurs obstacles en même temps sur l'écran, utilise une liste.


Pour ça, j'y avait pensé, mais il faudrait m'expliquer comment on fait parce que je sais pas le faire moodforlove.gif
Je pense que je ferais surement une version améliorée plus tard, il faudra aussi régler le temps en l'air du perso mais ça je le ferais facilement.
valrom le 10/01/2011 à 20:25
Le "&#960;" il est aussi un peu plus haut, c'est "pi"
linkakro le 10/01/2011 à 22:47
Je ne suis pas suffisamment dispo pour étudier le prog entier en détails maintenant. Toutefois quelques coms.

----
Code
:If V=0:Then
:Goto 5
:End

Le Then...End est innutile et cause de ralentissement (peut même devenir bug) dû au goto. Ici c'est négligeable, mais c'est la pire cause de saturation mémoire et c'est aussi vecteur de bug de End.

----
Tu as parfaitement compris la gestion des listes secondaires pour les scores. Mais j'ai un bonus de ma composition pour plusieurs records sauvés. Si trois records sauvés :
Code
4->dim(lVR
...
S->lVR(4
TriDécroi(lVR
Disp "RECORDS",lVR(1),lVR(2),lVR(3)
A adapter au graphisme (si c'est intéressant) bien sûr.

----
Code
2-->W
:For(P,1,14)
:Output(1,W,"=")
:Output(6,W,"-")
:Output(8,W,"T")
:W+1-->W:End

devient

For(P,2,15)
Output(1,P,"=
Output(6,P,"-
Output(8,P,"T
End

----
Pour la liste avec les obstacles, il y a une méthode lourde mais intuititive et une méthode de "geek" que j'ai appris en étudiant le snake de ratuss et vibra.
Soit on fait défiler le contenu par rapport à une référence, soit on fait défiler la référence par rapport à la liste.
La variable qui gardera la position de référence en mémoire s'appelle pointeur.

Je vais les mettre en oeuvre en vue du prochain message. Cela mériterait même un article.

----
Si tu t'inscrit tu pourras éditer tes messages et recevoir des mails sans risque de spam.
Sangohan38 le 11/01/2011 à 04:30
valrom a écrit :

Pour placer plusieurs obstacles en même temps sur l'écran, utilise une liste.


Ou alors utiliser le mode graphique et utiliser les pxl-test pour vérifier les conditions.
C'est tout à fait jouable pour un programme de ce genre.

Sangohan38
f/x=x² le 11/01/2011 à 11:31
Citation
:Output(W,1-,"!")

1-quoi?
f/x=x² le 11/01/2011 à 11:40
Et aussi:
Citation
If A=<:4-->A

A=<??? C'est étrange... eyeonly.gif
Sangohan38 le 11/01/2011 à 16:58
La première erreur est une faute de frappe forcément par contre le =< signifie "inférieur ou égal à".

Et pense à utiliser des balises codes pour les bouts... de codes!

Sangohan38
Métalocif le 11/01/2011 à 17:19
L'idée est sympa,mais j'aurais bien vu plusieurs "obstacles à roulades" et plusieurs "obstacles à sauts" différents,avec des touches correspondantes à appuyer.
Ton bonhomme étant un ninja,il pourrait y avoir des cibles de tir à l'arc à dégommer avec une animation et des points bonus à la clé si tu la touche,genre:
Code

e}-    o
X

et la flèche avance.
Une cible en hauteur pourrait donner l'occasion de super-sauter automatiquement à sa hauteur pour l'atteindre.
Pour le temps en l'air,tu peux faire:
Code
If Y<6
Then
Efface ton perso
Y+1->Y
Output ton perso
End

Bon,je vais m'arréter là sinon je vais poster le programme moi-même... clown.gif
Métalocif
linkakro le 11/01/2011 à 18:34
sangohan38 a écrit :
le =< signifie "inférieur ou égal à".

Dans ce cas précis, c'est une faute de frappe ! Compare le prog complet et mon ébauche.
If A=<:4-->A est en fait If A=3:4-->A

-------
Les pixel-test ne suffisent pas car il faut pouvoir effacer un obstacle et le retracer pour générer le déplacement ; de plus on ne peut pas faire défiler l'écran façon sprite ; et un mode graphique compliquerai le prog.
valrom le 11/01/2011 à 22:15
Salut clown.gif ,

Eh bé, je vois que tout le monde déborde d'idées pour mon programme, je promet d'y réfléchir et d'essayer de faire quelques modifes (dès que j'ai le temps minied.gif ).
Par contre, pour le
If A=<3:4-->A
c'est bien un inférieur ou égal parce que sinon on peut monter jusqu'en haut et faire beuguer le prog (ERR:DOMAINE)
valrom le 11/01/2011 à 22:18
Ah, et aussi, j'allais oublier, c'est
Output(W,1,"!")
minied.gif minied.gif
valrom le 11/01/2011 à 22:22
Est-il possible de modifier un message que l'on a écrit (comme par exemple modifier les fautes que l'on a fait dans le prog minied.gif minied.gif minied.gif )
Sangohan38 le 11/01/2011 à 22:55
Oui avec la fonction "Editer".
Tu va même pouvoir la tester sur ce double post.

Sangohan38
linkakro le 26/01/2011 à 22:51
J'ai tenté plusieurs méthodes pour insérer plusieurs obstacles, mais les résulats sont décevants.
La délicatesse des compromis vitesse/mémoire etc m'a mené à des impasses.
Ca va vite mais toujours pas assez à mon goût.
Métalocif le 27/01/2011 à 22:12
Tu pourrais essayer deux listes,une pour X et une pour Y,augmentant de taille au fur et à mesure du programme.
Pour la vitesse,on peut diviser le prog en sous-progs...ou programmer sur 84+SE godgrace.gif !
Youss1 le 17/11/2012 à 17:58
Bonjour, il faut mettre quoi après le petit "L" ?
Youss1 le 17/11/2012 à 18:00
Bonjour, il faut mettre quoi après le petit "L" ?
Samos le 17/11/2012 à 18:16
Bonjour,
Il faut mettre les lettres V et R.
le petit L se trouve dans: 2nd + STAT + > + Alpha + B
dragmazik le 18/12/2012 à 22:51
Hello! bigmouth.gif

Je viens de finir d'entrée le code dans ma ti et j'ai une Err:Domaine:

Code
:Lbl 2
:Output(B,1,"  ")
:Output(B+1,1," ")
:Output(A,1,"O")             // <- juste ici


cry.gif quelqu'un pour m'aider?
linkakro le 18/12/2012 à 23:03
La valeur de A est fausse.
Il faut relire tout ce qui modifie A.
dragmazik le 18/12/2012 à 23:14
Je viens de relire le code avec la ti et je ne vois aucune erreur du au recopiage frozen.gif

Meme pour ce qui modifie A
linkakro le 18/12/2012 à 23:55
En relisant le sujet je trouve mon propre commentaire que je n'ai pas vérifié aujourd'hui.
linkakro a écrit :
If A=<:4-->A est en fait If A=3:4-->A
Cela concerne cette partie
Code
:codeTouche-->K
 :If K=11:A+1-->A
 :If K=15:A-2-->A
 :If A=<:4-->A   // à corriger en :If A=3:4-->A
 :If A=8:7-->A
deb80312 le 22/12/2012 à 19:02
salut, j'ai tester ton jeu mon problème est que le bohnomme se deplace tout seul et les touche f(crazy.gif et graphe ne marche , de plus tu as oublier le chiffre qui est apres << if A<=?:4->A, tu pourrai m'aider stp cupsmiley.gif
deb80312 le 22/12/2012 à 19:06
[quote=deb80312]salut, tu pourrai mettre comment faire pour marquer plusieur obstacle a la fois stp, je débute et je ne sais pas comment mettre une liste cry.gif
linkakro le 22/12/2012 à 19:33
Lit le sujet et le message juste au dessus des tiens et tu comprendras ce qui se passe pour la faute de frappe.

Pour plusieurs obstacles :
Il faut stocker une information d'écran par case de liste puis :
-soit déplacer les données dans la liste de telle sorte que ce soit toujours la même case qui serve de teste de collision et une autre de réécriture
-soit décaler le point de repère de la liste en testant une case différente à chaque fois et de même pour la réécriture.

Techniquement il faudrait que je ressorte des programmes (en particulier les miens mais pas seulement) pour montrer où je veux en venir.
Question le 13/05/2014 à 21:17
J'ai un problème y'a un moment où y'a écrit (A,1,"O") et il me dit que c'est faux
m@thieu41 le 13/05/2014 à 21:36
Pourtant c'est juste.
Nan sans blague tu ne peux pas mieux formuler ta question avec:
_De la politesse (Bonjour, Merci d'avance, etc);
_Un message dans un français correct;
_La ligne entière où se produit la faute;
_Quel prgm tu as rentré;
_Le type d'erreur rencontré (ça m'étonnerais que la calto te dise "c'est faux");
_La valeur de A (dans l'écran d'accueil tape [A],[entrer] et donne nous la valeur qui s'affiche).

Merci.
Hawkeye le 10/07/2014 à 18:50
Bonjour, comment fait-on un # (hashtag) sur une calculatrice TI-82 ?

Merci d'avance !

Hawkeye
linkakro le 10/07/2014 à 19:09
Ce symbole dièze/hash/sharp n'existe pas les calculatrices TI82/stats/fr/83.
Les mots &#960; sont des codes html de symbole unicode que le forum ne supporte pas. Le symbole &#960; est la lettre PI.
Hawkeye le 10/07/2014 à 19:45
Donc à la place de &#960 je dois mettre PI c'est ça ?
Hawkeye le 10/07/2014 à 20:05
J'aimerais également savoir comment faire un point-virgule, excusez moi ces questions doivent paraitrent ridicule mais j'ai eu ma TI-82 Plus hier (cause : je vais rentrer en seconde). Voilà

Encore une fois, merci d'avance