Forum

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

(JEU) BOUGE! (JEU)

S.L le 03/09/2011 à 14:18
Bonjour à tous voici mon premier jeu que je vous propose de tester et de m'en dire des nouvelles. Le but du jeu est d'attraper le plus de "*" avec un "0" dans une durée de temps limité.

Nom: BOUGE!
Taille: 555 octets
Auteur: S.L

-> : flèche sto
[-] : signe négatif qui se trouve en dessous du 3
>= : signe plus grand ou égal (2nde puis math puis 4)
TETA : signe teta (alpha+3)
TI Stats.fr (fonctions en Français)
Code
PROGRAM:BOUGE
:EffEcr
:Output(1,1,"----------------           //16 tirets
:Output(2,6,"BOUGE!
:Output(4,3,"GAME BY S.L
:Output(5,2,"(C) 2011
:Output(7,1,"POUR TI 82/83
:Output(8,1,"----------------          //16 tirets
:Pause
:entAléat(0,6)->X
:entAléat(0,14)->Y
:100->F:0->E:4->A:8->B:3->Q:3->R
:EffEcr
:Lbl 5
:R-O.1->R
:If R=2:2->Q
:If R=1:1->Q
:If R=0:0->Q
:If R=[-]O.2:Output(4,7,"GO!
:If R=[-]1:Goto 1
:Output(4,8,Q
:Goto 5
:Lbl 1
:F-1->F
:Output(8,9,"TEMPS:
:Output(8,15,F
:If Y=16:Y-1->Y
:If A<1:A+7->A
:If A>7:A-7->A
:If B<1:B+16->B
:If B>16:B-16->B
:Output(A,B,"O
:codeTouche->K
:If K=25:A-1->A
:If K=34:A+1->A
:If K=24:B-1->B
:If K=26:B+1->B
:If K>=24:EffEcr
:If K=45:Stop
:If X+1=A et Y+1=B
:Then
:E+1->E
:entAléat(0,6)->X
:entAléat(0,14)->Y
:End
:Output(8,7,E
:If E>TETA
:E->TETA
:If F=0:EffEcr
:If F=0:Disp "TERMINE!","SCORE:",E,"HI SCORE:",TETA
:If F=0:Stop
:Goto 1

Pour quitter en cours de partie, faîtes "annul".
Voilà, j'ai juste 3 questions:
-Comment ralentir le temps?
-Comment faire pour ne pas laisser les traces du "0" et du "*" lorsqu'ils changent de place (ici j'utilise EffEcr mais sa fait clignoter le jeu à chaque fois que l'on se déplace)?
-Comment créer un hi score avec une liste (ici je prend la valeur de TETA mais il m'arrive que je m'en serve et sa redéfinit tout le temps sa valeur)?
Merci et bon jeu, je vais peut être traduire d'ici peu le jeu en anglais.
Gorman14 le 03/09/2011 à 19:48
Il faut que tu créés 1 fonction d'effacement par example

Code

:If K=25:Then
:A-1->A
:B->U
:End
:If K=34:Then
:A+1->A
:B->U
:End
:If K=24:Then
:B-1->B
:A->H
:End
:If K=26:Then
:B+1->B
:A->H
:End
:OutputU,H," [1espace]// ou tu mets H,U en fonction que ton A et ton B soient l'bscisse ou l'ordonnée
sandro le 03/09/2011 à 20:02
Pour la sauvegare du meilleur score, modifie le programme de la manière suivante :
1) ajoute au tout début :
Code
:1->dim(lBOUGE)

le "dim(" est dans [2nde][stats][droite][3]
le "l" de "lBOUGE" représente le L que tu optient avec [2nde][stats][droite][alpha][matrice]

2) modifie la fin comme suit :
Code
:If E>lBOUGE
:E->lBOUGE(1
:If F=0:EffEcr
:If F=0:Disp "TERMINE!","SCORE:",E,"HI SCORE:",lBOUGE(1
:If F=0:Stop
:Goto 1





Pour ralentir, rajoute :
Code
:For(M,1,20:End

(20 peut être remplacé par n'importe quelle autre valeur, le ralentissement est environt proportionnel au nombre qui remplace 20).

Sandro
Gorman 14 le 03/09/2011 à 20:45
Désolé je me suis trompé; il faut mettre

Code
:If K=25:Then
:A->U
:A-1->A
:End
:If K=34:Then
:A->U
:A+1->A
:End
:If K=24:Then
:B->H
:B-1->B
:End
:If K=26:Then
:B->H
:B+1->B
:End
:OutputU,H," [1espace]// ou tu mets H,U en fonction que ton A et ton B soient l'bscisse ou l'ordonnée


Voila, ça devrait marcher pour effacer le caractère qu'on déplace
S.L le 03/09/2011 à 20:54
Merci sandro, mais sa ne serais pas E>lBOUGE(1 au lieu de E>lBOUGE? J'ai aussi fait le ralentissement, sa ne ralentit pas que le temps mais tout le jeu, tu connaitrais pas un moyen de ralentir que le temps?
Merci d'avance.
S.L le 03/09/2011 à 21:08
Désolé Gorman 14, mais sa ne marche je sais si c'est due au ralentissement mais sa n'efface qu'une sur sept traces. karate.gif
sandro le 03/09/2011 à 21:19
Citation
sa ne serais pas E>lBOUGE(1 au lieu de E>lBOUGE?

Si, désolé.

Sinon pour le temps, je n'ai pas bien compris le problème : le temps doit il ressembler à la seconde? n'évoluer qu'une execution de la boucle sur 5?

Sandro
S.L le 03/09/2011 à 22:27
Je voudrais que ce soit des secondes, sans pour autant ralentire le jeu. godgrace.gif
Gorman 14 le 03/09/2011 à 22:49
Si tu as la Ti 84 +, tu peux utiliser la variable Actminutr pour les secondes
Sangohan38 le 03/09/2011 à 23:52
Merci de ta précision Gorman 14 mais c'est HS puisque ce forum est consacré aux modèles 82/STATS/FR donc sans horloge.

Sangohan38
linkakro le 04/09/2011 à 02:46
J'ai bricolé ça selon mes habitudes. Mais pas testé.
Il ne résoud pas de problème de temps.

Code
1->dim(lBOUGE
entAléat(1,7->X
entAléat(1,15->Y
DelVar E100->F:4->A:8->B
EffEcr

For(Q,3,0,-1
Output(4,8,Q
69!
End
Output(4,7,"GO!
69!

EffEcr
Output(4,8,"O
Output(Y,X,"*
While F
F-1->F
Output(8,9,"TEMPS:
Output(8,15,F
codeTouche->K
If somme(K={24,25,26,34    // sert seulement à éviter un clignotement de "O"
Output(A,B," "
A-(K=25)+(K=34->A
B-(K=24)+(K=26->B
A+7(A<1)-7(A>7->A
B+16(B<1)-16(B>16->B
Output(A,B,"O
If K=45:Stop
If X=A et Y=B
Then
E+1->E
entAléat(1,7->X
entAléat(1,15->Y
Output(Y,X,"*
End
Output(8,7,E
End

EffEcr
If E>lBOUGE(1
{E->lBOUGE
Disp "TERMINE!","SCORE:",E,"HI SCORE:",lBOUGE
S.L le 04/09/2011 à 12:19
Super linkakro, mais tu ne pourrais pas écrire ton nouveau code en entier? Car je ne sais pas quoi enlever... Merci d'avance.
linkakro le 04/09/2011 à 13:44
Mon code est déjà entier ahh.gif
J'ai réécris des lignes mais surtout changé l'ordre de certaines comandes.
S.L le 04/09/2011 à 15:59
Ah, pourtant j'ai l'impression qu'il manque des choses, il y a des trous et un moment il y a marqué 69! (qu'est ce c'est?). Donc tu es sure que si je recopie exactement ton code il n'y aura pas de probleme mis a part du temps? beer.gif
linkakro le 04/09/2011 à 17:18
Les vides dans mon code servent à distinguer des parties.

69! est un des moyens efficaces pour temporiser un programme. C'est la factorielle 69, calcul lourd pour les calculatrices.
Si 69! ralentit trop, réduit le nombre 69. (51! par exemple)
Les factorielles sont moins précises que les For pour temporiser (ralentir) mais plus légères.