IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment éviter le surplus de variables ?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut Comment éviter le surplus de variables ?
    Bonjour,

    Actuellement j'ai créer un fonction draw(); qui permet de "dessinner" de facon sucessives des rectangles qui s'allongent en fonction du temps, pour ce faire, j'ai procéder comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function draw(){
    	if(times>=0) {
    	var drw= new draw(0, Y1,20,168);
    	Y1--;	
    	}
    	if(times>=4) {
    	drw= new draw(20,Y2,20,168);	
    	Y2--;	
    	}
    	if(times>=8) {
    	drw= new draw(40,Y3,20,168);	
    	Y3--;	
    	}
    	if(times>=12) {
    	drw= new draw(60,Y4,20,168);	
    	Y4--;	
    	}
    	[...]
    }
    Comme vous pouvez le constatez je fais appelle à des variables Y1, Y2, Y3, Y4,.......
    Car il faut que durant le temps qui passe bon premier rectangle continu à "grandir" et que au bout d'un certain temps un nouveau rectangle apparait et "grandit" à son tour.

    De ce fait, je ne peut réutiliser la variable Y, d'ou l'obligation de d'appeller une nouvelle variable.

    Tout fonctionne très bien, seul peti tbémol, je me retrouve avec des variables allant de Y1 à Y25. Et donc je trouve ça "cochon" d'avoir 25 variables quasi identiques.

    Donc existe t'il un moyen de réduire le nombre de variable ?

    Si oui lequel ?

    d'avance merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Comme toujours, si tu es amené à copier-coller du code c'est qu'il peut être regroupé au sein d'une fonction ou d'un objet.

    Par contre il semble y avoir de gros soucis dans ton code, qu'est-ce que new draw alors que la fonction appelante porte ce nom ? D'où sortent toutes ces variables Y1, Y2 ? Et pourquoi réaffecter en permanence la variable drw que tu sembles ne jamais utiliser ?

    On utilise new pour instancier un nouvel objet à partir d'un prototype, là tu sembles appeler une fonction.
    One Web to rule them all

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    Comme toujours, si tu es amené à copier-coller du code c'est qu'il peut être regroupé au sein d'une fonction ou d'un objet.
    Citation Envoyé par SylvainPV Voir le message
    Et pourquoi réaffecter en permanence la variable drw que tu sembles ne jamais utiliser ?
    C'est ce que fait ma fonction draw(); il s'agit d'une fonction paramétré avec comme paramètre X,Y,L,T qui sont ensuite remplacé par des nombres en fonction de ce que je souhaite faire d'ou l'utilisation du new draw() car à chaque fois je veut "recréer" un dessin avec des paramètre changés. ici donc mon cas quand le temps passe le X se décale de 20 toutes les 4 secondes par exemple

    Citation Envoyé par SylvainPV Voir le message
    Par contre il semble y avoir de gros soucis dans ton code, qu'est-ce que new draw alors que la fonction appelante porte ce nom ?
    Non il y a pas de soucis, j'ai juste mal copiez mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function colonne(){
    	if(times>=0) {
    	var drw= new draw(0, Y1,20,168);
    	Y1--;	
    	}
    [...]
    C'est mieux ainsi non

    Citation Envoyé par SylvainPV Voir le message
    D'où sortent toutes ces variables Y1, Y2 ?
    C'est là ou est tout mon problème d'ou ma question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var Y1,Y2,Y3,Y4,Y5,Y6,Y7 [...]
    Y1=Y2=Y3=[...]=168;
    Et oui mes variables Y sont des variables global instancier à 168, et donc la j'ai dù en créer autant que j'ai fait de if dans mon code car il s'agit de rectangle qui s'allonge en hauteur et donc je ne peut utiliser la même variable pour deux raisons:
    - la première est que le rectangle 2 qui apparaitra après le rectangle 1 va se retrouver avec une largeur initial égal à la largeur du rectangle 1 hors je souhaite que la largeur du rectangle 2 démarre à 0

    -Si à l'arriver du deuxième rectangle j'initialise le Y ben ces l'effet inverse qui se produit le rectangle 1 qui s'agrandit en fonction du temps va se retrouver à 0 dès que le rectangle 2 arrive;

    d'ou mon problème d'utiliser plusieur variable, et donc je cherche à éviter de faire "15 000" variables donc y aurait t'il un moyen decontrez cela ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Il y a toujours une variable drw qui ne semble servir à rien et le new draw qui ne semble pas correspondre à un constructeur.

    Le mieux serait que tu nous donnes l'intégralité de ton code, en particulier le code de la fonction draw.
    One Web to rule them all

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    La n'est pas la question, même si syntaxiquement parlant ma variable drw et de faire new draw() ne sert à rien, mon sujet ici est que l'on m'aide à minimiser les variables Y et non à bien écrire mon code javascript.

    D'ou je reviens à cette question en prenant l'exemple suivant:

    Imaginons que l'on veut dessinner plusieurs rectangle les un a coté des autres en faisant varier leurs hauteurs en fonction du temps (cette haueur partant de 0 pour tous et augmente durant le temps qui passe), seul contrainte c'est que le "dessin" de ces rectangles doit donner une impression de marche d'escalier et donc:

    Au temps T=1:
    le rectangle n°1 à sa hauteur à 1
    le rectangle n°2 à sa hauteur à 0.

    Puis arrivent le temps T=2:
    le rectangle n°1 à sa hauteur à 2
    le rectangle n°2 à sa hauteur à 1
    le rectangle n°3 à sa hauteur à 0

    Et ainsi de suite, pour dessinner ces rectangles j'utilisent donc une variable H que j'incrémete de 1, ce qui nous donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    var tps=0;
    var H=0;
    var H1=0;
     
    function temps(){
    //fionction qui incrémente var variable tps
    }
     
    if(tps>=0){
    H++;
    /*fonction dessine le rectangle n°1 en prenant la variable H comme hauteur*/
    }
    if(tps>=1){
    H1++;
    /*fonction dessine le rectangle n°2 en prenant la variable H1 comme hauteur*/
    }
    [...]
    En faisant cela mon rectangle grandis seul soucis c'est ci je rajoute une deuxième rectangle, la si je souhaite le faire démarrer plus tard à tps=1 par exemple, je ne peut prendre la variable H car elle aura deja avancer dans le temps d'ou l'obligation de recréer une variable H1 par exemple. Ainsi en faisant cela, pour 20 rectangle créés je me retrouve avec 20 variables H, donc c'est pas terrible d'ou ma question y a t'il un moyen de simplifier cette variable H pour éviant d'en faire 20 ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Oui il y a un moyen très simple, c'est de manipuler la coordonnée interne à ton objet renvoyé par le constructeur draw. Seulement pour ça il faudrait qu'on sache ce qui se cache derrière
    One Web to rule them all

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    Après plusieurs recherche et test, j'ai réussi à faire ce que je voulais, tout seul comme un grand .

    Donc le problème n'est plus d'actualités car je n'ai plus qu'une variable Y désormais.

    SUJET CLOS

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour
    Après plusieurs recherche et test, j'ai réussi à faire ce que je voulais, tout seul comme un grand .
    Bravo

    Donc le problème n'est plus d'actualités car je n'ai plus qu'une variable Y désormais.
    si je comprend bien tu viens sur le forum pour recevoir mais pas pour donner, ce qui se fait quand on trouve la solution à un problème.

    SUJET CLOS
    Pour toi mais penses à ceux à qui ta solution pourrait venir en aide.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    Alors pour te répondre, sache que l'ensemble de mes questions on pour but de nous aider (l'équipe et moi même) à développé un nouveau jeu sur internet, ce nouveau jeu une fois terminé va être déployé sur internet pour que toutes personnes puissent venir créer un compte et jouer, s'inspirant d'un style Ogame et build and fight celui-ci on espère va recontrer du succès.

    Hors ce que je suis entrain de créer ici n'existe pas ou très peu sur le net, et donc il faut comprendre que je cherche aussi à garder secret ceci pour éviter le plagia en attendant de pouvoir y instaurer un "copyright".
    Donc soumis à un certain "secret" ici, je ne peut fournir l'intégralité de mon code sous peine de risquer qu'il tombe entre de mauvaises main.
    Et même si le javascript peu être récupérer en faisant ctrl + u, il n'en reste que celui ci sera très condensé voir crypté par des masses de variables et fonction qui servent à rien, histoire que la personne malvaillante ai du mal à reprendre ce code.

    Donc voilà désolé mais je ne peut donner mes sources

  10. #10
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Pour un bête refactoring, je ne pense pas qu'on ait loupé grand chose
    One Web to rule them all

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2011, 22h34
  2. Réponses: 2
    Dernier message: 17/04/2010, 14h22
  3. [Conception] Comment éviter les redondances d’une variable
    Par bilane dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/09/2006, 10h54
  4. Réponses: 4
    Dernier message: 28/07/2004, 10h42
  5. [eclipse 2.1][compilation] Comment éviter...
    Par ftrifiro dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/06/2004, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo