Autorisation : Membre
Nb de messages : 3
Inscrit le : Ven 09 Déc 2016, 17:48
Posté le : Ven 09 Déc 2016, 18:37
Salut à tous,
ce post sera l'occasion de me présenter un peu, c'est le premier post que je fais sur ce forum même si j'y traîne depuis quelques années déjà. Je suis actuellement en Terminale S et voilà déjà un moment que je trifouille un peu dans ma calculatrice et j'ai fait un jeu deux joueurs que je voulait partager avec vous.
INFO :
-Programmé sous TI-82+ en langue anglaise
-Le jeu prend 373 octets mais n'est pas optimisé.
POUR LES DEBUTANTS :
-Les symboles tels que inférieur ou égal etc.. se trouvent dans test (2nde+math)
-La fonction int(, le point d'exclamation etc.. se trouvent dans math
DESCRIPTION :
Alors le principe est simple, vous gérez un personnage et devez tirer sur votre adversaire avec la touche "In" ou "-" en fonction de quel côté vous êtes par rapport à la calculatrice. J'ai mis une limite de temps que vous pouvez modifier dans le programme, personnellement j'ai mis 15 secondes.
J'ai maintenant terminé le jeu grâce à vos conseils, merci à tous ! Je suis content du résultat ! PROBLEMES RENCONTRES LORS DU DEVELOPPEMENT :
-Je n'ai pas réussi à trouver comment mettre un délai entre chaque tir, donc si vous avez des propositions, ça sera avec plaisir que je les accueillerai.
-Je voulais aussi "reset" les positions une fois qu'un point était marqué mais je n'y suis pas arrivé, si vous avez des idées rendez vous dans les commentaires
Code
ClrHome
2->A:6->B:1->C:1->D:20->F:0->Z:0->Y:3->T:3->U //20->F avec 20 la limite de temps
Lbl 1
69!:69!
ClrHome
Output(1,8,int(F
Output(1,2,Z
Output(1,16,Y
Output(A,1,"{-
output(B,15,"-}
getKey->K
If K=81 and T>=2:Goto 2 //>= supérieur ou égal
If K=85 and U>=2:Goto 3
A+C->A
B+D->B
1+T->T
1+U->U
If A>=8:-1->C //>= supérieur ou égal //Utiliser le "(-)" de la calculatrice
If B>=8:-1->D
If A<=2:1->C //<= inférieur ou égal
If B<=2:1->D
F-0,25->F
If F=0:Stop
Goto 1
Lbl 2
2->E
0->T
Lbl 4
Output(A,E,"-
E+1->E
If A=B and E=16:Z+1->Z
If A=B and E=16:0->U
If A=B and E=16:Goto 1
If E>=16:Goto 1
Goto 4
Lbl 3
15->E
0->U
Lbl 5
Output(B,E,"-
E-1->E
If B=A and E=1:Y+1->Y
If B=A and E=1:0->T
If B=A and E=1:Goto 1
If E<=1:Goto 1
Goto5
N'hésitez pas à donner vos avis et amusez vous bien.
Autorisation : Membre
Nb de messages : 128
Inscrit le : Ven 06 Nov 2015, 19:22
Posté le : Dim 11 Déc 2016, 20:22
Je te fais le reset de la position quand j'aurai le temps (c'est assez simple il faut juste que je regarde ton code pour savoir quelle variable correspond à quoi, etc...)
Autorisation : Membre
Nb de messages : 3
Inscrit le : Ven 09 Déc 2016, 17:48
Posté le : Dim 11 Déc 2016, 20:46
Citer : Paulo1026
Je te fais le reset de la position quand j'aurai le temps (c'est assez simple il faut juste que je regarde ton code pour savoir quelle variable correspond à quoi, etc...)
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Lun 12 Déc 2016, 12:36
Pour la limite de temps : tu prends une variable (une par joueur) que tu augmentes de 1 à chaque tour.
Tu la réinitialises à 0 lorsqu'il y a un tir.
Tu n'autorises le tir que si elle est supérieure à une certaine valeur V (à toi d'ajuster pour que ça fasse ~20s (mais ça dépendra de l'état de la pile, RAM, etc).
Au début tu l'initialise à V, pour qu'on puisse tirer dès le début.
Autorisation : Membre
Nb de messages : 37
Inscrit le : Lun 29 Fév 2016, 14:12
Posté le : Lun 12 Déc 2016, 13:24
De ce que j'ai compris, A c'est le J1, B le J2, C et D sont les montés et descente des joueurs (C pour A et D pour B), 2 et 8 sont les limites, F le temps, Z les points de A et Y le points de B (juste à la vue, j'ai pas recopier ton programme sur ma calculatrice.)
Donc pour reset les position, du devrais changer ton code
Code
If B=A and E=1:Y+1->Y
If B=A and E=1:8->B
If B=A and E=1:2->A
If B=A and E=1:Goto 1
par
Code
If B=A and E=1
Then
Y+1->Y
8->B
2->A
Goto 1
End
et
Code
If A=B and E=16:Z+1->Z
If A=B and E=16:2->A
If A=B and E=16:8->B
If A=B and E=16:Goto 1
Non pas du tout. N'insistez pas !
Bref. Voilà ton programme avec quelques modifications expliquées
J'ai pas mis les mêmes variables, vu que j'ai refait le jeu dans mon coin sans vraiment regardé ce que t'avais mis. Excuse moi
Code
:EffVar VEffVar WEffVar AEffVar B2->C:6->D:1->Y:1->Z //Pour les variables, ici A et B sont les scores, C et D les positions des persos, Y et Z si ils vont vers le haut ou le bas. U et T dans ton programmes sont inutiles (voir suite programme), V et W sont les temps de recharge
:Repeat K=45 //Pour l'arrêt, je n'ai pas mis de limite de temps, si tu veux la rajouter, comme tu avait fait été parfait^^
:EffEcr
:Output(1,2,A
:Output(1,15,B
:Output(C,1,"{-
:Output(D,15,"-}
:codeTouche->K
:If K=81 et non(V:Then //Si le joueur de gauche appuie et si le temps de recharge et à 0. non(V signifie V=0, on gagne un octet, c'est important !
:For(E,3,16
:Output(C,E,"- //Plus simple que d'incrémenter une variable, tu t'es compliqué la vie :)
:End
:If C=D:A+1->A //Si les deux joueurs sont sur la même ligne, on ajoute un point
:4->V //Le temps de recharge
:End //On ferme la boucle le joueur de gauche a fini de tirer.
:If K=85 et non(W:Then //Pareil pour le joueur de droite
:For(E,14,1,-1
:Output(D,E,"-
:End
:If C=D:B+1->B
:4->W
:End
:C+Y->C //Y=1 ou -1 le joueur ira donc soit en bas, soit en haut.
:D+Z->D
:If C=8 ou C=2:-Y->Y //si le joueur touche un bord, on inverse sa direction
:If D=8 ou D=2:-Z->Z
:V-(V>0->V //On décremente le temps de recharge si il est supérieur à 0
:W-(W>0->W
:End //Fin de la boucle repeat.
Y a ptet encore des amélio à faire, quelques broutilles surement^^
Bref, ce qu'on peut en conclure : Les boucles seront toujours mieux qu'un Goto Lbl
Tu vas voir, c'est beaucoup plus rapide comme ça.
Bonne continuation ! <3