Poster un nouveau sujet Poster une réponse
Pong
Auteur Message
AngusYoung972



Autorisation : Membre
Nb de messages : 8
Inscrit le : Sam 15 Fév 2014, 13:21
Posté le : Sam 15 Fév 2014, 13:29   Citer 

Salut à tous voici mon premier programme, dites ce que vous en pensez winkle.gif



Code
ClrHome
Output(1,1,"****************
Output(2,1,"    * PONG *
Output(4,5,"* V1.1 *
Output(6,5,"* 2014 *
Output(7,1,"****************
Output(8,7,"====
Pause
Lbl 1
randInt(9,15)->I
7->X
1->Y
1->C
1->R
0->S
Lbl 0
ClrHome
Output(Y,I,"O
Output(8,X,"====
If Y<8
Y+C->Y
If Y=7 and IùX-1 and I÷X+4
Then
-1->C
1+S->S
End
If Y=1
1->C
If Y=8
Then
Output(1,1,"****************
Output(7,1,"****************
Output(3,1," * EPIC FAIL! *
Output(5,1," *  SCORE:    *
Output(5,12,S
Pause
Goto 1
End
If S=50
Then
Disp "SCORE = ",S
Stop
End
If Y<8
I-R->I
If I÷1
-1->R
If Iù16
1->R
getKey->K
If K=24 and X-1>0
X-1->X
If K=26 and X÷12
X+1->X
If K=45
Stop
Goto 0



téléchargement:
http://www.mediafire.com/download/roflln5kblh8td8/PONG.7z
cupsmiley.gif

----------------------
ACDC! --> http://www.youtube.com/user/angusyoung972
 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 407
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Sam 15 Fév 2014, 20:43   Citer 

très bon programme winkle.gif , pas mal du tout.

seul bémol à mon sens: le Lbl 0 et le Goto 0 qui ralentissent le programme au cours du temps.
Je te conseil de le remplacer par une boucle:
Lbl 0 => While 1
Goto 0 => End


dans tout les cas, beau programme (et bonnes vacances à toute la zone C )

----------------------
Le nouveau site de tout82
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 15 Fév 2014, 21:54   Citer 

Les goto ne ralentissent pas forcément un programme. Ici le goto 1 ralentit mais pas le goto 0.
https://tout82.pages-perso.free.fr/forum/sujet.php?sujet=2757

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



Autorisation : Membre
Nb de messages : 8
Inscrit le : Sam 15 Fév 2014, 13:21
Posté le : Sam 15 Fév 2014, 21:55   Citer 

Merci pour vos réponses! bigmouth.gif

----------------------
ACDC! --> http://www.youtube.com/user/angusyoung972
 Adresse email Haut de page Bas de page 
 
AngusYoung972



Autorisation : Membre
Nb de messages : 8
Inscrit le : Sam 15 Fév 2014, 13:21
Posté le : Sam 15 Fév 2014, 22:03   Citer 


Citer : Cytropus

Je te conseil de le remplacer par une boucle:
Lbl 0 => While 1
Goto 0 => End


J'ai remplacé la Lbl et le Goto comme tu me le conseillais et en effet ça a un peu diminué la taille de mon programme, et il à l'air légèrement plus fluide mais ce n'est peut-être qu'une impression winkle.gif

----------------------
ACDC! --> http://www.youtube.com/user/angusyoung972
 Adresse email Haut de page Bas de page 
 
raboulave
Invité
Posté le : Dim 16 Fév 2014, 16:09   Citer 

Pas mal pas mal happy.gif
Quelques petits trucs :

- randInt t'es pas obligé de mettre la deuxième parenthèse. C'est peut-être crade mais des fois ça permet d'économiser une ligne happy.gif

- Je suis d'accord avec les gars pour condamner les Lbl et Goto même si j'en ai beaucoup utilisé moi-même au début tongue.gif

- À la toute fin, If K = 26 and X < 16 plutôt que <= 12 non ? Enfin c'est sûrement une erreur de recopie winkle.gif

- Quand tu n'as qu'une seule instruction dans un If et qu'elle est plutôt courte, tu peux économiser une ligne en mettant deux points :
Exemple, If I >= 16: I->R

- On peut faire plus fort que remplacer Lbl 0 et Goto 0 par respectivement While 1 et End. Sachant que K = 45 stoppe ton programme, pourquoi ne pas remplacer Lbl 0 par Repeat K = 45, tu vires évidemment le If K = 45, et les lignes Stop et Goto 0 deviennent :

Code
End
EffEcr
Output(1,1,"


Ainsi tu as un "quit" carrément plus propre happy.gif

- Et sinon, un truc qui peut te demander un peu plus de temps à implémenter mais qui ne peut que rendre ton app meilleure : tu as du scintillement parce que tu ClrHome à chaque tour de boucle (je vais considérer que ton Lbl 0 est désormais une boucle tongue.gif ).
Une solution légèrement plus complexe, mais qui enlèverait le scintillement, serait de retenir les coordonnées antérieures au pad et à la boule et d'afficher du vide à la place. Pour la boule ce sera facile, tu n'as qu'à gérer un caractère. Pour le pad tu devras réfléchir un peu plus, mais ça se fait. Et tu auras un truc tout beau tout propre.

Je comprends bien que tu ne voies pas ce que je veux dire, c'est un peu dur à expliquer comme ça ^^, je te redirige donc vers le très bon tuto TI-Basic d'anciennement le site du zéro qui t'explique toussa toussa :
https://fr.openclassrooms.com:443/informatique/cours/le-ti-basic-3/exemple-deplacement
SI tu enlèves ton ClrHome, tu auras le problème dont Lanfeust parle dans le paragraphe "Derniers bugs" : tes objets laisseront des grosses traînées derrière eux. Il t'explique alors ce que j'essayais de t'expliquer, à savoir effacer derrière eux. happy.gif

Et en prime, tu peux jeter un oeil à ses conditions :
X-(K=24)+(K=26)->X
Y-(K=25)+(K=34)->Y
C'est peut-être moins clair mais tu peux toi aussi utiliser ce fonctionnement dans ton programme.
Je m'explique : Une condition vaut 1 lorsqu'elle est vraie et 0 lorsqu'elle est fausse. Tu peux alors jouer avec ces valeurs pour raccourcir ton code.

Ici dans ton code, je prends les lignes :

Code
If K=24 and X-1>0
X-1->X
If K=26 and X÷12
X+1->X


Avec cette méthode, je transforme donc en :

Code
X-(K=24 and X-1>0)->X
X+(K=26 and X<=12)->X



Ainsi, si la condition est remplie, elle vaut 1, sinon elle vaut 0 et donc il n'y aura aucun changement !
Tu n'as plus de If. C'est très fort.

J'avoue ne pas avoir testé lorsqu'il y a un and mais ça devrait fonctionner y'a pas de raison. happy.gif
Ne t'inquiètes pas moi aussi je bitais rien à ça au début j'ai recopié sans réfléchir ^^
(Ah et X-1>0 c'est pareil que X>1 si tu veux vraiment aller jusqu'au bout tongue.gif )

Je te laisse donc avec ce gros pavé sur les bras et j'attends avec impatience ton code mis à jour ! happy.gif

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 16 Fév 2014, 18:00   Citer 

Je confirme que n'importe quelle condition peut être à l'intérieur d'un calcul. Il faut seulement veiller à placer des parenthèses aux bons endroits.

Et le Goto 1 dans tout ça ? C'est selon moi le plus important des changements pour la rigueur. (cependant il n'agit qu'entre deux parties donc son influence indésirable est faible)
Par contre garder exactement le même raisonnement et ordre des actions devient un peu compliqué.

Code
ClrHome
Output(1,1,"****************
Output(2,1,"    * PONG *
Output(4,5,"* V1.1 *
Output(6,5,"* 2014 *
Output(7,1,"****************
Output(8,7,"====
Pause
Repeat K=45 // quitte si presse Annul
randInt(9,15->I
7->X
1->Y
1->C
1->R
0->S
ClrHome
Repeat Y=8 or S=50 or K=45 // défaite, gain, échappement
Output(Y,I,"O
Output(8,X,"====
If Y<8
Y+C->Y
If Y=7 and IùX-1 and I÷X+4
Then
-1->C
1+S->S
End
If Y=1
1->C
If Y<8
I-R->I
If I÷1
-1->R
If Iù16
1->R
getKey->K
Output(Y,I," "
Output(8,X,"    "
min(12,max(1,X-(K=24)+(K=26->X
End
If S-50 and K-45
Then
Output(1,1,"****************
Output(7,1,"****************
Output(3,1," * EPIC FAIL! *
Output(5,1," *  SCORE:    *
End
Output(5,12,S
End



----------------------
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 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 16 Fév 2014, 18:22   Citer 

Bonjour,


Citer
- Quand tu n'as qu'une seule instruction dans un If et qu'elle est plutôt courte, tu peux économiser une ligne en mettant deux points :
Exemple, If I >= 16: I->R


Ce n'est pas exact: tu ne gagne pas réellement à faire ça, puisque tu remplace un retour à la ligne (qui prend un octet en mémoire), par le token ":", qui prend lui aussi un octet en mémoire.
Par contre, lorsque les conditions et/ou instructions conditionnelles deviennent complexes et longues, mettre tout sur la même ligne risque de nuire à la lisibilité.

De manière générale, les parenthèses/guillemets/accolades/crochets fermants peuvent être omis avant un retour à la ligne ou un sto ( http://www.tout82.org/t50-candide-ou-l-optimisation )

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
AngusYoung972



Autorisation : Membre
Nb de messages : 8
Inscrit le : Sam 15 Fév 2014, 13:21
Posté le : Lun 17 Fév 2014, 18:49   Citer 

Salut à tous et merci beaucoup pour vos réponses c'est super sympa de m'aider happy.gif
pour l'instant je n'ai hélas pas beaucoup de temps pour arranger mon programme.. :/

----------------------
ACDC! --> http://www.youtube.com/user/angusyoung972
 Adresse email Haut de page Bas de page 
 
AngusYoung972



Autorisation : Membre
Nb de messages : 8
Inscrit le : Sam 15 Fév 2014, 13:21
Posté le : Mer 19 Fév 2014, 16:36   Citer 

En fait je ne comprend pas pourquoi While 1 / End remplace Lbl 0 / Goto 0, pouvez vous m'expliquer?

----------------------
ACDC! --> http://www.youtube.com/user/angusyoung972
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 19 Fév 2014, 16:57   Citer 

https://tout82.pages-perso.free.fr/forum/sujet.php?sujet=2741

Le 1 est compris comme "Vrai" dans les conditions. Donc la condition de "While 1" est vraie donc la boucle est toujours répétée, c'est une boucle infinie.
Goto 0 est toujours exécuté et il renvoi au Label du même nom, "Lbl 0" donc cela simule donc une boucle infinie.

Les actions telles que "If K=45:Stop" interrompent la boucle ou le programme.
Il est plus rigoureux d'utiliser une boucle algorithmique telle que While ou Repeat avec une condition plutôt que d'utiliser des sauts Goto et des Stop.

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



Autorisation : Membre
Nb de messages : 8
Inscrit le : Sam 15 Fév 2014, 13:21
Posté le : Sam 08 Mar 2014, 18:07   Citer 

Salut à tous! happy.gif
je vous propose aujourd'hui 2 nouvelles versions de mon jeu, pas forcément améliorées au niveau de la vitesse mais plutôt au niveau du contenu, une version light (plus légère) et une version 2.1 (plus complète, avec un menu et un high score).
Voici les 2 liens Mediafire:
*light -> http://www.mediafire.com/download/kgy5aidwk48jnkc/PONG_light.7z
*2.1 -> http://www.mediafire.com/download/4puzwvtuaouy5k3/Pong_2.1.7z

J’espère vraiment que ça vous plaira :p

----------------------
ACDC! --> http://www.youtube.com/user/angusyoung972
 Adresse email Haut de page Bas de page 
 
Obed
Invité
Posté le : Sam 06 Sep 2014, 2:46   Citer 

Quelles ligne font que la barre se deplace de droite à gauche et gauche à droite?
Car sur tout les jeux de ce type (casse brique, pong...) ma barre se deplace soit dans une seule direction, soit pas du tout (je suis sur ti82 plus).

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 06 Sep 2014, 20:28   Citer 

Dans le premier programme.

Code
getKey->K
If K=24 and X-1>0
X-1->X
If K=26 and X÷12  // ÷ est inférieur ou égal dans la police TI
X+1->X


Dans celui que j'ai posté.

Code
getKey->K
//...
min(12,max(1,X-(K=24)+(K=26->X



----------------------
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 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes