Gamme TI-82
Partager sur Facebook Fil RSS Imprimer la page
Cacher les résultats

Résultat de la recherche



Poster un nouveau sujet Poster une réponse
myPong
Auteur Message
tilo1996



Autorisation : Membre
Nb de messages : 129
Inscrit le : Sam 23 Avr 2011, 10:47
Posté le : Ven 06 Mai 2011, 19:13   Citer 

Bonjour a tous a la demande de Patate007 sut le chat de fofo dont voici le lien
http://tchat-tout82.webuda.com/(ben oui ya jamais personne tongue.gif)

Bon je note ici mon 1er vrai jeu, un pong qui se joue seul.
Edit: Il fait 637 octets
RE EDIT: Ici il fait un peu moins je lai condensé jai enleve tous les menu, high score etc.

Code
lbl A
1->0
-1->P
0->S
-1>M
entaleat(0,1)->N
if N=0:-1->N
5->A
7->C
8->D
While 1=1
effecran
output(8,15,S
if A<1:1->A
output(7,A,"----"
output(C,D,"°
C+M->C
D+N->D
if C=1:1->M
if C=7 et D=A ou C=7 et D=A+1 ou C=7 et D=A+2 ou C=7 et D=A+3:then
P->M
S+1->S
End
if C=8 et D=!A ou C=8 et D=!A+1 ou C=8 et D=! A+2 ou C=8 et D=!A+3:then
disp"partie terminée
disp"Score=",S
Pause
menu("reessayer?","oui",A,"non",Q
Lbl Q
Effecran
stop
end
if A>12:12->A
if D=16:P->N
if D=1:0->N
codetouche->K
if K=24:A-1->A
if K=26:A+1->A
end



Voila, merci de me dire vos commentaires tongue.gif Et surtout de me soumettre les multiples ameliorations possibles.
Voili voilou bigmouth.gif

----------------------
http://tchat-tout82.webuda.com/
 Adresse email Haut de page Bas de page 
 
patate007
Avatar

Autorisation : Membre
Nb de messages : 118
Inscrit le : Mar 09 Fév 2010, 8:49
Posté le : Ven 06 Mai 2011, 20:53   Citer 

Salut Tilo !

Je viens de le tester, il marche très bien !
Cependant je ferai quelques petites retouches.

Commençons par la deuxième ligne ? Elle ne sert à rien visiblement ? Hop, -3 octets !

Ensuite le While 1=1, on peut mettre tout simplement While 1. -2 octets.

La deuxième condition. Au finale, on peut la racourcir par If C=8:Then

Voilà pour le recourcicement winkle.gif



Ensuite les améliorations :

Les 2 longues conditions avec un Then, il me semble qu'elle ralentissent le programme au cours du temps... Pour éviter le Then, tu pourrai mettre qu'une seule chose à l'interieur : un goto, qui enverrai à l'extérieur de la boucle, ensuite les instruction pour un goto vers le début de la boucle winkle.gif

Ensuite, tu pourrais rendre l'affichage du score final plus joli avec un Output, non ?

Et enfin, Ce qui serai génial, c'est que la boule parte à gauche ou à droite selon le point d'inpacte avec la barre =D Je te laisse chercher winkle.gif


J'espère que j'ai été clair, en tous cas, félicitation pour ce programme !

----------------------
Joyeuse Pâques winkle.gif



 Adresse email Haut de page Bas de page 
 
tilo1996



Autorisation : Membre
Nb de messages : 129
Inscrit le : Sam 23 Avr 2011, 10:47
Posté le : Ven 06 Mai 2011, 21:02   Citer 

Je prends note, je modifie sur ma calto en meme temps ^^. J'ajoute quand meme que jai condensé le programe que je vien de recopier. Au debut ya une petite présentation avec le meilleur score et le nom du meilleur "scoreur" tongue.gif

Ensuite pour la condition je ne vois ABSOLUMENT pas ou tu veux en venir ahh.gif

Et enfin pour le rebond je pense qu'en ajoutant une ligne ou deux pour la condition precedente serait suffisant

Voila, merci pour tout il va deja plus vite rien qu'en remplacant ma looooongue condition par If C=8 ^^

----------------------
http://tchat-tout82.webuda.com/
 Adresse email Haut de page Bas de page 
 
patate007
Avatar

Autorisation : Membre
Nb de messages : 118
Inscrit le : Mar 09 Fév 2010, 8:49
Posté le : Ven 06 Mai 2011, 21:39   Citer 

Pour la condition, j'ai entendu dire que mettre un then dans une boucle ralentissait peu à peu le programme. Pour y remédier il suffit de mettre juste un goto dans la condition (donc une seule ligne, pas de then) ce goto enverra vers les commandes à exécuter en dehors de la boucle.

Je te montre un exemple :


Code

:0->A
:10->B
:
:While 1
:If A=B:then
:Disp A
:B+10->B
:End
:A+1->A
:End



On peut le remplacer par :


Code

:0->A
:10->B
:
:Lbl 1
:While 1
:If A=B:Goto A
:A+1->A
:End
:
:Lbl A
:Disp A
:B+10->B
:Goto 1



Ces deux codes permettent de compter jusqu'à 10. C'est un programme inutile et bien plus facilement réalisable mais je le fait fonctionner de cette manière pour l'exemple.

Le premier prend un peu moins de place. Cependant, le 2ème évite le ralentissement du programme (à long terme).

J'espère t'avoir aidé winkle.gif

----------------------
Joyeuse Pâques winkle.gif



 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 06 Mai 2011, 23:00   Citer 

Tu viens de créer un ralentissement pire que celui que tu voulais éviter car le goto est à l'intérieur d'un while ! C'est la pire cause de ralentissement !

Hormis le coup du goto, c'est vrai que les Then sont un peu lents.

D'autre part, si le programme est très gros, ce sont les goto qui ralentiront le plus (dans une boucle ou non).

Je n'ai pas vraiment le temps de me pencher sur le prog mais je suis d'accord avec ce que tu as globalement proposé.

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

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
patate007
Avatar

Autorisation : Membre
Nb de messages : 118
Inscrit le : Mar 09 Fév 2010, 8:49
Posté le : Ven 06 Mai 2011, 23:27   Citer 

Ok, alors oubli tout ce que je viens d'expliquer sur les goto et les then winkle.gif Ma source était fausse =/ Merci Linkakro !

Sinon pour la grande condition qu'il te reste (la première), tu pourrais mettre un If C=7 avant ce qui éviterai tous les "... et ..." winkle.gif

----------------------
Joyeuse Pâques winkle.gif



 Adresse email Haut de page Bas de page 
 
tilo1996



Autorisation : Membre
Nb de messages : 129
Inscrit le : Sam 23 Avr 2011, 10:47
Posté le : Sam 07 Mai 2011, 7:27   Citer 

Deja jajoute que la 2eme ligne sert mais pour UNE ligne de programme Il s'agit de la ligne avant celle ou je definis K
Voila, maintenant la version 2 qui gere la direction des rebonds sur la palette bigmouth.gif



Code
lbl A
-1->P
1->O
0->S
-1->M
entaleat(0,1)->N
if N=0:-1->N
5->A
7->C
8->D
While 1
effecran
output(8,15,S
if A<1:1->A
output(7,A,"----
output(C,D,"°
C+M->C
D+N->D
If C=1:1->M
If C=7 et D=A ou C=7 et D=A+1:then
P->M
entaleat(1,10)->F
if F=1;then
S+10->S
output(8,2,"critique!
Else
S+1->S
End
-1->N
End
If C=7 et D=A+2 ou C=7 et D=A+3:then
P->M
entaleat(1,10)->F
If F=1:then
S+10->S
output(8,3,"critique!
Else
S+1->S
End
1->N
End
If C=8:Then
Effecran
Disp"Partie terminée
Disp"score=
output(2,7,S
Pause
Menu("réessayer?","oui",A,"non",Q
Lbl Q
effecran
stop
end
If A<12:12->A
If D=16;P->N
If D=1:O->N
codetouche->K
If K=24:A-1->A
If K=26:A+1->A
End



Voili voilou bigmouth.gif
Commentez please :p

----------------------
http://tchat-tout82.webuda.com/
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 08 Mai 2011, 22:18   Citer 

C'est globalement bon mais j'ai rencontré des problèmes sur lesquels je ne me suis pas attardé malgré que j'en sois sûrement responsable.

Quit à bidouiller, j'ai conçu cette version :
Edit= j'ai ajoûté des commentaires pour limiter le besoin de se reporter aux messages suivants.

Code
Lbl A
0->S
-1->M
2randInt(0,1)-1->N   //N vaut 1 ou 0
5->A
7->C
8->D
While 1
ClrHome
Output(8,15,S
Output(7,A,"----
Output(C,D,"°

If C=7 and abs(A+1.5-D)<2:Then  //balle sur raquette (distance centre-balle inférieure à 2)
-1->M
9not(randInt(0,9->F          //vaut 9 si randint=0 ou vaut 0 si randint=/=0
S+1+F->S                     //S+1 ou S+10
If F:Output(8,2,"CRITIQUE
2(A+1.5-D<0)-1->N            //vaut 1 si balle à droite et 0 si gauche
End

If C=8:Goto Z

If C=1:1->M
If D=16 or D=1:-N->N
getKey->K
If K=24:A-1->A
If K=26:A+1->A
max(1,min(13,A->A         //A confiné entre 1 et 13
C+M->C
D+N->D

End

Lbl Z
ClrHome
Disp "GAME OVER
Disp "SCORE=
Output(2,7,S
Pause
Menu("REESAYER?","OUI",A,"NON",Q
Lbl Q
ClrHome


PS à PATATE007 : Tant qu'il y aura un while, le problème du goto/end se posera. Toutefois le ralentissement est négligeable (uniquement à chaque game over) comparé au gain de temps du simple while sur toute la durée.
Mes dernières remarques étaient excessives.

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

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
tilo1996



Autorisation : Membre
Nb de messages : 129
Inscrit le : Sam 23 Avr 2011, 10:47
Posté le : Lun 09 Mai 2011, 18:25   Citer 

Ouh la je ne comprends pas tout ...
principalement le 2eme "paragraphe" avec la fonction abs( ainsi que la ligne
9not(randind(0,9->F
ainsi que cette ligne (decidemanet tongue.gif)
2(A+1.5-D<0)-1->N

et puis celle ci vers la fin du programme
max(1,min(13,A->A

Voila, Merci d'avance pour expliciter le fonctionnement de ces fonctions

----------------------
http://tchat-tout82.webuda.com/
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 09 Mai 2011, 21:15   Citer 

C'est vrai que j'ai cumulé pas mal d'astuces.

abs(A+1.5-D)<2
abs est la valeur absolu. Ici elle donne la distance entre la balle (D) et le centre de la raquette (A+1.5). Si la distance est suppérieure ou égale à 2, alors la balle est hors de la raquette. ( inférieur à 2 la balle est dessus)

9not(randInt(0,9->F
L'aléatoire est entre 0 et 9 inclus. S'il est nul, alors not(aleat) vaut 1.
Si L'aléat est nul alors F vaut 9*not(0)=9*1=9. Et S+1+F=S+10 ->S
Sinon F vaut 9*not(z)=9*0=0. Et S+1+F=S+1 ->S

2(A+1.5-D<0)-1->N
A+1.5-D est positif si la balle est à gauche de la raquette. Je le teste entre parenthèse pour obtenir 0 (faux) ou 1 (vrai) selon que A+1.5-D est positif ou négatif (donc selon le côté de la balle).
2*0-1=-1 si balle à gauche
2*1-1=1 si balle à droite
(2X-1 est aussi dans l'initialisation mais avec un aléatoire)
(Ici j'aurai aussi pu pratiquer abs(z)/z= 1 ou -1 selon le signe de z.)

max(1,min(13,A->A
Si A<13 alors min(13,A)=A
Si A>13 alors min(13,A)=13
Le min n'agit pas si A<13. Donc pour la suite min(13,A)=A
Si A<1 alors max(1,A)=1
Si A>1 alors max(1,A)=A
Donc A ne peut pas dépasser 1 et 13.

Selon ses goût et le contexte, certaines méthodes ne sont pas les plus recommandées.

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

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2016 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink
 

Site hébergé par Free Page sous licence creative commons Page validée par le W3C (XHTML 1.0 Transitional) Feuille de style validée par le W3C Flux RSS 2.0 valide Page étiquetée par l'ICRA Page testée par Ocawa