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 :

Projet Tower Defense


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut Projet Tower Defense
    Bonjour tout le monde, ayant choisis comme projet de fin d'année (Terminale S, option ISN) un tower defense réalisable à deux (les profs m'ont dit que le projet était faisable donc accepté), j'ai commencé à me lancer dedans quand même car le temps défile et mon collègue n'a pas l'air très motivé ! Bref ! Le tower defense que les profs me demande est un peu différent de celui que l'on connait, brièvement, la génération des mobs ce fait partout sur les bords de la carte et ceux ci cherchent à détruire les tours posées sur la carte, si il n'y a plus de tour c'est perdu. Bref, j'ai essayé de faire la génération de mob aléatoirement tout d'abord sur toute la carte pour voir le fonctionnement, mais le problème c'est que ça ne marche pas. Je ne suis pas spécialement doué en prog' même si je m'y intéresse un peu (je suis le meilleur de ma classe alors que bon u_U Et concrètement ce qu'on a vu en cours n'est absolument pas utile pour nos projets.)

    Voila le code:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    var canvas = document.getElementById('canvas');
    var context = canvas.getContext('2d');
    window.onload = function(){
    var largeur = setInterval(generateurPositionAleatoireLargeur(),1000);
    var hauteur = setInterval(generateurPositionAleatoireHauteur(),1000);
    var generation = setInterval(generationMob(largeur, hauteur),1000);
    }
     
    function generationMob(largeur,hauteur){
    	context.beginPath();
    	context.fillRect(largeur,hauteur,5,5);
    	context.closePath();
    }
     
    function generateurPositionAleatoireHauteur(){
    var tableauAleatoireHauteur = [];
    	for (var i = 0; i < 10; i++){
    	var hauteur = Math.floor(canvas.height*Math.random());
    	tableauAleatoireHauteur.push(hauteur);
    	}
    	var selectionHauteur = tableauAleatoireHauteur [Math.floor(Math.random()*tableauAleatoireHauteur.length)];
    	return selectionHauteur;
    }
     
    function generateurPositionAleatoireLargeur(){
    var tableauAleatoireLargeur = [];
    	for (var i = 0; i < 10; i++){
    	var largeur = Math.floor(canvas.width*Math.random());
    	tableauAleatoireLargeur.push(largeur);
    	}
    	var selectionLargeur = tableauAleatoireLargeur [Math.floor(Math.random()*tableauAleatoireLargeur.length)];
    	return selectionLargeur;
    }
    J'utilise donc canvas pour le projet j'espère que ça ne me posera pas de problème, ensuite je sais que le Javascript est orienté objet mais on n'a absolument rien vu sur ça en cours, donc déjà je vous demande si ça risque de poser problème si je travaille uniquement avec des fonctions ?

    Ensuite donc je n'arrive pas à comprendre le problème du code, et le déboggeur de firefox ne me dit rien.

    Merci de votre aide bonne soirée

  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
    Bonjour,

    Il va falloir être un peu plus précis que "ça ne marche pas". Quel est le résultat, y-a-t-il des erreurs en console JavaScript, as-tu essayé d'utiliser le débogage pas à pas pour voir si tu passais bien aux endroits attendus du code ? As-tu une démo en ligne quelque-part que l'on puisse voir tout le code ?

    Sinon pour répondre à tes questions, canvas est un bon choix de techno pour un jeu JavaScript bien que ce ne soit pas forcément le plus facile à aborder par un débutant. Et en effet en JavaScript presque tout est objet, mais le langage est suffisamment flexible pour autoriser tous styles de programmation: fonctionnel, évènementiel, objet, MVC... Pour le moment, fais comme tu le sens du moment que tu es à l'aise.

    Je ne connais pas les objectifs pédagogiques de ton projet, mais est-ce que tes profs sont ouverts à l'usage d'une bibliothèque ? Ça pourrait t'aider à finir dans les temps avec un jeu correct, en éliminant les parties rébarbatives comme la gestion de sprites, les contrôles etc... pour te concentrer sur la logique de jeu.
    One Web to rule them all

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Justement il faut que je demande cette question ! Mais je t'avoue que je ne suis pas très au point avec les bibliothèques, ceci m'aiderai grandement ? Ensuite voila ce qui se passe lorsque je lance le code: http://hpics.li/32c37e8

    Donc le carré est généré uniquement en haut à gauche de l'écran. Alors que le but serai que chaque seconde, un nouveau carré apparaissent à une position aléatoire.

    Ensuite quand j'essaye des commandes tel que : var largeur = generateurPositionAleatoireLargeur() dans la console, cela me sort undefined.

  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
    Disons qu'une bonne bibliothèque pourrait réduire ton temps de travail de moitié au moins, et te fournirait tout ce que tu as besoin. C'est le meilleur moyen d'arriver à un jeu correct, mais bien entendu tout faire soi-même est bien plus enrichissant sur le plan pédagogique. Encore faut-il avoir le temps et les capacités.

    Si la console te sort undefined, c'est parce qu'une déclaration de variable n'est pas sensée retourner de valeur. Ce qui s'affiche dans la console est l'évaluation de l'instruction au-dessus, rien de plus.

    > var x = 5;
    undefined
    > 5 + 5
    10
    > x
    5

    Quant à ton code, en regardant de plus près il y a beaucoup d'erreurs de logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var largeur = setInterval(generateurPositionAleatoireLargeur(),1000);
    var hauteur = setInterval(generateurPositionAleatoireHauteur(),1000);
    var generation = setInterval(generationMob(largeur, hauteur),1000);
    Plein d'erreurs ici. Déjà pourquoi trois setInterval ? largeur et hauteur ne sont pas des timers. Et on passe à setInterval une fonction, pas le résultat de cette fonction après son appel. Donc un code plus correct serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function generationMob(){
            var largeur = generateurPositionAleatoireLargeur();
            var hauteur = generateurPositionAleatoireHauteur();
        context.beginPath();
        context.fillRect(largeur,hauteur,5,5);
        context.closePath(); 
    }
    var generation = setInterval(generationMob,1000);
    Reste à comprendre la logique des fonctions generateurPositionAleatoireXXX. De ce que je vois, tu remplis un tableau avec dix valeurs au hasard, puis parmi ces dix valeurs au hasard, tu en prends une au hasard. Multiplier les tirages au sort ne sert pas à grand chose ici, un seul random suffit amplement Pour moi, la seule ligne utile est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var largeur = Math.floor(canvas.width*Math.random());
    One Web to rule them all

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Oulah oui tellement d'erreur je suis mauvais .. je crois que je suis mal barré pour réaliser un projet pareil ! En fait ma logique était très mauvaise car je voulais chaque seconde générer un nombre aléatoire utilisable par ma fonction générationMob pour placer chaque seconde un nouveau mob sur le canvas aléatoirement. Mais en fait je ne sais pas comment m'y prendre pour avoir toute les secondes une nouvelle largeur et hauteur utilisable par ma fonction generationMob.

    Désolé pour mon niveau très faible et merci de ton aide en espérant que tu puisses continuer à m'aider

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Bonjour, j'ai pour l'instant mis de côté la partie génération de plusieurs mobs chaque seconde pour me concentrer sur le positionnement et je voulais vous demander si il était possible de faire quelque chose de plus joli et nécessitant moins de test que ce que je fais:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    var canvas = document.getElementById('canvas');
    var context = canvas.getContext('2d');
     
    window.onload = function()
    {
     
    context.beginPath();
    context.fillRect((canvas.width)/2,(canvas.height)/2,5,5);
    context.closePath();
     
     
    var generation = setInterval(generationMob(),1000);
     
    }
     
    function generationMob()
    {
    	var largeur = Math.floor(canvas.width*Math.random());
    	var hauteur = Math.floor(canvas.height*Math.random());
    	var aleatoirePosition = Math.floor((Math.random()*4)+1);
    	if (aleatoirePosition == 1){
    		if (hauteur > 0){
    		largeur = 0;
    		}
    	}
    	if (aleatoirePosition == 2){
    		if (largeur > 0){
    		hauteur = 0;
    		}
    	}
    	if (aleatoirePosition == 3){
    		if (hauteur > 0){
    		largeur = (canvas.width)-5;
    		}
    	}
    	if (aleatoirePosition == 4){
    		if (largeur > 0){
    		hauteur = (canvas.height)-5;
    		}
    	}
     
    	context.beginPath();
    	context.fillRect(largeur,hauteur,5,5);
    	context.closePath();
     
     
    }
    Suite au remarque j'ai donc modifié le code et maintenant j'essaye de placer le mob génération sur un coté du canvas. Le code marche parfaitement mais j'ai plusieurs question:

    Tout d'abord est-il possible de déclarer une variable pour un objet appartenant au canvas pour ensuite l'utiliser ?

    Ensuite n'y a t-il pas une "commande" pour conjuguer plusieurs possibilitées, car le "||" ne marche que pour tester une condition alors que j'aimerai pouvoir faire que si la largeur est supérieur à 0, alors la hauteur sera soit 0, soit la hauteur max.

    Et pour finir y a t-il un moyen de récupérer la taille de mon carré généré avec context, car ici pour la hauteur et la largeur max, j'ai donc dut mettre -5 pour rentrer dans le canvas, mais est-il possible donc, de travailler avec les constantes de l'objet ?

    Merci de votre aide et j'espère que mes questions ne vous importune pas trop Bonne journée

  7. #7
    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
    Tu as refait l'erreur de passer un appel de fonction plutôt que la fonction elle-même dans le setInterval. Ta fonction generationMob n'a pas d'instruction return, donc par défaut elle renvoie undefined. Du coup ton instruction est traduite comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var generation = setInterval(undefined,1000);


    Pour ton code, je n'ai absolument pas compris ce que tu cherchais à faire avec tous ces if et ces tests de valeur. On dirait que tu essaies de les positionner sur le contour, collé aux bords, mais comment et pourquoi ???

    Pour tes questions :

    Tout d'abord est-il possible de déclarer une variable pour un objet appartenant au canvas pour ensuite l'utiliser ?
    tu peux déclarer tes variable où tu veux, et les utiliser ou non. quel rapport avec le canvas ?

    Ensuite n'y a t-il pas une "commande" pour conjuguer plusieurs possibilitées, car le "||" ne marche que pour tester une condition alors que j'aimerai pouvoir faire que si la largeur est supérieur à 0, alors la hauteur sera soit 0, soit la hauteur max.
    je ne comprends pas ce que tu veux faire. || vaut pour un OU inclusif, && vaut pour un ET.

    Et pour finir y a t-il un moyen de récupérer la taille de mon carré généré avec context, car ici pour la hauteur et la largeur max, j'ai donc dut mettre -5 pour rentrer dans le canvas, mais est-il possible donc, de travailler avec les constantes de l'objet ?
    bien sûr, remplace la valeur 5 par la variable de ton choix. Mais pour ton jeu, tu devrais travailler avec une grille de coordonnées indépendante du positionnement des sprites. Tous les tower defense que j'ai vu fonctionnaient avec un système de grille.
    One Web to rule them all

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Ah d'accord pour la fonction merci beaucoup je n'avais pas compris !

    Oui j'essaye de les placer sur les bords car le tower defense est un peu différent (les profs m'ont donné une feuille et il faut que je fasse comme ça):

    En gros: Les mobs spawn sur les bords de la carte et ce dirige vers des tours placer aléatoirement, quand 2 sbires sont sur la tour, la tour est détruite, si il n'y a plus de tour, la partie est perdu.

    Pour la deuxième question en fait au lieu de faire 4 tests je voudrai pouvoir faire (la syntaxe n'est je pense pas autorisé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (largeur > 0){
    hauteur = 0 || hauteur = canvas.height;
    }
    Et je voudrai que ce if choisisse soit hauteur = 0 soit la taille du canvas avec une proba 0.5/0.5, mais bon si ma méthode marche faut-il que je la change ?

    Et ensuite pour la carte sous forme de grille de coordonnées, mes profs m'en ont parlé mais bon a par me dire ouais fait un tableau ils m'ont pas aidé, j'ai donc commencé à travailler sur le tableau, mais je voyais pas trop comment faire du coup, j'ai laissé tomber le tableau, si tu peux m'éclairer sur ça je veux bien, car j'ai rechercher sur internet tableau dimensionnelles etc, mais j'ai rien trouvé de concret sur comment les utiliser

    Merci bonne soirée

  9. #9
    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
    Un OU n'a pas fonction de hasard, c'est un opérateur logique. Si tu veux que hauteur prenne la valeur 0 ou canvas.height avec une probabilité égale, il faut effectivement passer par un Math.random().
    Après je ne vois pas à quoi sert tous ces if imbriqués. Ton code pourrait se résumer à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var aleatoirePosition = Math.floor((Math.random()*4)+1);
    var hauteur, largeur;
    switch(["TOP","RIGHT","BOTTOM","LEFT"][Math.floor(Math.random()*4)]){
       case "TOP": hauteur = 0; largeur=Math.floor(canvas.width*Math.random()); break;
       case "RIGHT": hauteur = Math.floor(canvas.height*Math.random()); largeur = (canvas.width)-5; break;
       case "BOTTOM": hauteur = (canvas.height)-5; largeur=Math.floor(canvas.width*Math.random()); break;
       case "LEFT" : hauteur = Math.floor(canvas.height*Math.random()); largeur = 0; break;
    }
    Pour les tableaux, je ne sais pas quoi te dire à part consulter la FAQ JavaScript et lire des tutos. J'ai ça aussi, un début de tower defense avec le code :
    http://syllab.fr/projets/games/warchess/
    http://syllab.fr/projets/games/warchess/js/main.js
    Là c'est une grille héxagonale, mais tu peux l'adapter facilement en damier.

    J'ai aussi un projet plus avancé de Tower Defense abandonné, mais là le code est plus chaud à assimiler (et je me sers d'une bibliothèque) :
    http://syllab.fr/projets/games/Junkyard/
    http://syllab.fr/projets/games/Junky.../logic/game.js
    One Web to rule them all

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Bonsoir ! Désolé de ma réponse tardive mais j'ai eu isn aujourd'hui et j'attendais d'avoir les infos pour vous postez le message donc: Tout d'abord canvas interdit sauf pour le quadrillage .. Donc j'ai refais une petite partie du code, les bibliothèques ils sont pas pour non plus ..

    J'ai donc essayer d'arranger mon code et voila ce que ça donne, avez vous déjà des suggestions sur le code présent pour ensuite me faciliter la suite ? (J'ai par contre refait la technique de mes if imbriqués car je n'arrive pas à comprendre la méthode switch )

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    var canvas = document.getElementById("fenetreJeu");
    var ctx = canvas.getContext("2d");
     
    var mob = document.getElementById("mobile");
     
    var fenetreDuJeuHauteur = canvas.height-5;
    var fenetreDuJeuLargeur = canvas.width-5;
     
    var largeurMobile = mob.offsetLeft;
    var Vx = 2; // vitesse en pixel vers la droite
    var xmin = 0; // limite gauche
    var xmax = fenetreDuJeuLargeur;
     
    var hauteurMobile = mob.offsetTop; //ordonnée du mobile
    var Vy= 2;
    var ymin = 0;
    var ymax=fenetreDuJeuHauteur;
     
    var timer1;
     
     
     
     
     
    window.onload = function()
    {
     
    	var debut = document.getElementById("start");
    	var arret	= document.getElementById("stop");
    	var blocCentrale = document.getElementById("blocCentrale");
     
     
     
    	debut.addEventListener("click",debutPartie);
    	arret.addEventListener("click",pause);
     
    	quadrillage();
    	generationMob();
     
    	ensembleMob = document.getElementsByClassName("monstre");
    	ensembleMob[0].style.backgroundColor = "blue";
     
     
     
    }
    function generationMob()
    {
    	for(i = 0; i < 10; i++){
    	creationPositionnement();
    	}
    }
     
    function creationPositionnement(){
     
    	var ensembleMob = [];
    	var mobCree = document.createElement("div");
     
    		mobCree.className = "monstre";
    		mobCree.style.width = "5px";
    		mobCree.style.height = "5px";
    		mobCree.style.backgroundColor = "red";
    		mobCree.style.position = "absolute";
    		ensembleMob = document.getElementsByClassName("monstre");
     
     
    	var mobCreeHauteur = mobCree.style.top = Math.floor(Math.random()*595)+"px";
    	var mobCreeLargeur = mobCree.style.left = Math.floor(Math.random()*595)+"px";
    	var aleatoirePosition = Math.floor((Math.random()*4)+1);
     
    	if (aleatoirePosition == 1){
    		if (mobCreeHauteur != 0){
    			mobCree.style.left = "0"+"px";
    		}
    	}
    	if (aleatoirePosition == 2){
    		if (mobCreeLargeur != 0){
    			mobCree.style.top = "0"+"px";
    		}
    	}
    	if (aleatoirePosition == 3){
    		if (mobCreeHauteur != 0){
    			mobCree.style.left = "595"+"px";
    		}
    	}
    	if (aleatoirePosition == 4){
    		if (mobCreeLargeur != 0){
    			mobCree.style.top = "595"+"px";
    		}
    	}
    	blocCentrale.appendChild(mobCree);
     
    	return ensembleMob;
    }
     
    function quadrillage (){
    	var larg = 50;
    	var haut = 50;
     
    	for (var i = 0; i < 40;i++){
    		ctx.beginPath();
    		ctx.moveTo(larg,0); 
    		ctx.lineTo(larg,600);
    		ctx.stroke();
    		larg +=50;
    	}
     
    	for (var i = 0; i < 20;i++){
    		ctx.beginPath();
    		ctx.moveTo(0,haut); 
    		ctx.lineTo(canvas.width,haut);
    		ctx.stroke();
    		haut +=50;
    	}
    }
     
    function debutPartie(){
    	// lance le changement de position tout les 0,01 secondes.
        clearInterval(timer1); //arrête un éventuel timer déjà en place.
        timer1 = setInterval(animation,10); // Lance le déplacement
    }
     
    function pause(){
    	clearInterval(timer1);
    }
     
    var animation = function() {
    	// déplace le mobile de Vx pixels vers la droite et change Vx si on arrive au bord.
        largeurMobile = largeurMobile + Vx;    
        if ((largeurMobile<=xmin) || (largeurMobile>=xmax)) {
            Vx=-Vx; // Si on est au bord, on change le sens de déplacement.
        }
        mobile.style.left=largeurMobile+"px"; // déplacement de l'objet à l'écran.
     
        hauteurMobile = hauteurMobile + Vy;    
        if ((hauteurMobile<=ymin) || (hauteurMobile>=ymax)) {
            Vy=-Vy; // Si on est au bord, on change le sens de déplacement.
        }
        mobile.style.top=hauteurMobile+"px"; // déplacement de l'objet à l'écran.
    }
     
    // calculer la position d'un element sur la page 
    /*calcul la position d'un élément sur la page
     
    			var item = document.getElementById(img);
    			var parent = item.offsetParent;
    			var posElmX = 0;
    			var posElmY = 0;
    			while(parent) {
    				posElmX += parent.offsetLeft;
    				posElmY += parent.offsetTop;
    				parent = parent.offsetParent;
    			}
    			var positionX = item.offsetLeft + posElmX;
    			var positionY = item.offsetTop + posElmY;
     
     
     
    changer les dimension d'un élément
     
    			item.style.width = item.offsetWidth+10+'px';
    						item.style.height = item.offsetHeight+5+'px';
    						*/
    Bon la j'ai un mobile qui n'a rien à voir avec la fonction avec des valeurs car c'était pour le test de l'animation. Les lignes qui change la couleur sont aussi à titre de test.

    ps pour aprés: Je pense avoir trouver, il faut juste utiliser la méthode ensembleMob[0].style.left/top = et la position qui change non ?

    J'aimerai avoir des renseignements sur comment stocker/utiliser toute les donnés que j'ai crée avec la fonction creationPositionnement, en effet, il n'y a pas de problème dans la console mon bloc central comporte bien mes 10 divs avec leurs caractéristiques, mais comment peut-on utiliser ces informations ? Faut-il les récupérer au préalable ? Je pense à cela car il faudrait que j'utilise ses informations pour pouvoir utilisation ma fonction animation.

    ps 2: J'ai commencer un morceau de code pour l'animation afin de résoudre le problème de ma question posée au dessus, mais le problème c'est qu'avec celle ci, les div crées semblent avec leur propre carré ou ils se déplacent .. Et je remarque que à chaque actualisation, le carré dans lesquelles les divs se déplacent n'est jamais de la même taille.
    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
    function animationBis(){
     
    	for (i = 0; i < 10; i++){
    		ensembleMob[i].style.left = ensembleMob[i].offsetLeft+Vx+"px";
    		if (ensembleMob[i].offsetLeft <= 0 || ensembleMob[i].offsetLeft >= 595){
    		Vx= -Vx;
    		}
    		ensembleMob[i].style.left = ensembleMob[i].offsetLeft + "px"
     
    		ensembleMob[i].style.top = ensembleMob[i].offsetTop+Vy+"px";
    		if (ensembleMob[i].offsetTop <= 0 || ensembleMob[i].offsetTop >= 595){
    		Vy= -Vy;
    		}
    		ensembleMob[i].style.top = ensembleMob[i].offsetTop + "px"
     
    	}
    }
    Merci de votre aide bonne soirée

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Bonsoir, Je ne suis pas certain de ce que je vais dire mais je pense avoir compris le problème, est ce possible qu'il y ai un problème avec les variables vitesse ? En fait, celle ci est modifier dès que l’élément i du tableau touche le bord, de ce fait, tout les carrés changent tout le temps de direction, mais je ne m'explique pas pourquoi par contre ceux ci sorte de mon bloc central. J'espère que vous pourrez m'aider à résoudre ceci.

    Merci

Discussions similaires

  1. Projet Tower Defense Management
    Par te-san dans le forum Jeux web
    Réponses: 4
    Dernier message: 08/06/2012, 17h38
  2. [Projet terminé] Extreme Carnage [2D SDL] (shoot/tower defense)
    Par Lightness1024 dans le forum Projets
    Réponses: 2
    Dernier message: 14/04/2010, 15h34
  3. [Projet en cours] Recherche Artistes - Empire Defense - Multijoueur Tower Defense
    Par Crystalin dans le forum Projets
    Réponses: 2
    Dernier message: 17/11/2009, 12h18
  4. [DS] [homebrew] Warcraft : tower defense
    Par gege2061 dans le forum Consoles
    Réponses: 0
    Dernier message: 17/09/2008, 10h33
  5. Warcraft 3 Tower Defense
    Par bakaneko dans le forum Web
    Réponses: 23
    Dernier message: 26/01/2007, 17h14

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