JeuWeb - Crée ton jeu par navigateur
[Résolu] Problème javascript - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Problème javascript (/showthread.php?tid=2920)

Pages : 1 2


[Résolu] Problème javascript - loulouch - 19-08-2008

Bonjour a tous.
Etant plutot nul coté javascript, je sollicite votre aide.

J'ai codé cette fonction en partant du PHP, donc je sais qu'il est pas superbe ( déja les incrementation=incrementation + 1; c'est pas bien ).

les variables au début sont générées automatiquement par php.

ressources => ressources actuelles du joueur

Problème actuel : les ressources ne repartent pas des ressources actuelles.
Je m'explique : cette fonction calcule le nombre de ressources en moins et les soustrait aux ressources actuelles, or elle le fait aux ressources précédemment calculées.
Je sais que c'est tout bete, mais les déclarations de variable je n'ai jamais fait en javascript, donc merci de votre indulgence et votre futur aide[/code]
Code PHP :
<?php 
<script type="text/javascript">

var
ressources = new Array('1467895.74991','92139.6137965','29.41250078','16199.412501');
var
liste_unites = new Array('101','102','110');
var
couts_unites = new Array(new Array('100','130','55','30'),new Array('140','150','185','60'),new Array('5500','7000','5300','4900'));


function
rafraichir(new_ressources){

var
contenu='';
var
compte= (1 - 1);
var
new_ressources=ressources;


for
each(var id_unite in liste_unites){

// Pour chaque unite dans la liste

// Nombre ecrit dans la case
var nombre = document.getElementById('unite_'+id_unite).value;

var
incrementation=0;

for
each( var quantite_ressource in new_ressources){

// Pour chaque ressource

new_ressources[incrementation] = new_ressources[incrementation] - ( nombre * couts_unites[compte][incrementation]);
incrementation=incrementation + 1;


}

compte = (1 - 1);
for
each( var quantite_ressource in new_ressources){
document.getElementById('new_'+compte).innerHTML = new_ressources[compte];
compte=compte + 1;
}

}





}

</
script>



RE: Problème javascript - Sephi-Chan - 19-08-2008

loulouch a écrit :cette fonction calcule le nombre de ressources en moins et les soustrait aux ressources actuelles, or elle le fait aux ressources précédemment calculées.
Je sais que c'est tout bete, mais les déclarations de variable je n'ai jamais fait en javascript, donc merci de votre indulgence et votre futur aide
Je ne comprends pas le problème. Essayes de t'expliquer clairement en gardant à l'esprit qu'on ne sait pas à quoi ressemble ton jeu.


Sephi-Cahn


RE: Problème javascript - loulouch - 19-08-2008

Merci de ta réponse rapide

Je reviens avec un petit screen

Cette page ou est le script serait l'équivalent de celle ou on construit les flottes dans ogame ( je le prends comme exemple parce que beaucoup de monde connais).

Je voudrais que a chaque fois qu'on tape quelquechose, ca calcule les ressources qui resteront. Je l'ai fait mais reste un problème -> les ressources sont soustraites à chaque fois à la valeur qui vient d'etre calculée juste avant aux dernier appel de la fonction, alors qu'il faudrait que on recalcule a partir des ressources initiales( ressources) a chaque fois.

J'ai un peu de mal à m'expliquer ...

.jpg   test.jpg (Taille : 26,83 Ko / Téléchargements : 109)


RE: Problème javascript - Satevis - 19-08-2008

Ta ligne
Code PHP :
<?php 
var new_ressources=ressources;
met là en dehors de ta fonction de cette manière tu ne vas pas réaffecter à chaque appel de la fonction new_ressources avec les valeurs initiales des ressources du joueur.


RE: Problème javascript - Ter Rowan - 19-08-2008

même chose que Satevis, le problème viens de là

maintenant d'un point de vue logique, je trouverais plus sympa que tu fasses :

au lieu de mettre

Code PHP :
<?php 
function rafraichir(new_ressources){

var
contenu='';
var
compte= (1 - 1);
var
new_ressources=ressources
;

tu mettes :
Code PHP :
<?php 
function rafraichir(new_ressources){

var
contenu='';
var
compte= (1 - 1);
var
new_ressources= new Array();

en effet, même si ça corrige, new_ressource n'a rien à faire en global, c'est juste une variable de calcul qu'on doit oublier de suite apres

et pour ta formule de calcul :

Code PHP :
<?php 
for each( var quantite_ressource in ressources){

// Pour chaque ressource

new_ressources[incrementation] = ressources[incrementation] - ( nombre * couts_unites[compte][incrementation]);

ainsi on voit directement dans ton code que tu te bases toujours sur les ressources de départ

PS ce n'est que mon point de vue


RE: Problème javascript - loulouch - 19-08-2008

Mon problème reste en fait que je dois repartir a partir des ressources initiales a chaque appel de la fonction.
C'est pour ça que j'ai fait var new_ressources=ressources; a chaque appel de la fonction.
Je ne peux pas le faire sur les ressources globales car, cette opération peut-être faite plusieurs fois ( pour chaque liste_unites en fait)


RE: Problème javascript - jo_link_noir - 19-08-2008

p'tit erreur de Ter Rowan

en fessant :
Code PHP :
<?php 
function rafraichir(new_ressources){

var
contenu='';
var
compte= (1 - 1);
var
new_ressources= new Array();

il faut faire
Code PHP :
<?php 
for each( var quantite_ressource in ressources){
// Pour chaque ressource
new_ressources[incrementation] = quantite_ressource - ( nombre * couts_unites[compte][incrementation]);



RE: Problème javascript - Anthor - 19-08-2008

J'ai l'impression qu'il manque des bouts de codes non ?

pourrais tu donner le code complet.

De plus pourquoi (1-1) et pas zéro ? Et tu n'incrémente pas le premier qui reste toujours à 0.


RE: Problème javascript - loulouch - 19-08-2008

Merci a tous, j'ai grâce a votre aide pu améliorer mon script.

Pour la faire marcher, j'ai en fait appellé la variable en même temps que la fonction (le php coté serveur devient compliqué), au lieu de l'appeller au début, ce que je pense être possible, mais je n'ai pas réussi.

Je peux maintenant passer a la suite, calcule du nombre max d'unités constructibles Smile


RE: Problème javascript - Satevis - 19-08-2008

Remplace
Code PHP :
<?php 
var new_ressources=ressources;
par
Code PHP :
<?php 
var new_ressources=ressources.slice(0);
en la laissant dans la fonction.
Tes ressources était à chaque fois les anciennes valeurs car Javascript utilise les références pour les objets, et les Array sont considérer comme des objets particuliers.