JeuWeb (JeuPHP) - Crée ton jeu par navigateur

Version complète : [Résolu] Problème javascript
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
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 :
<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);
 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);
 for 
each( var quantite_ressource in new_ressources){
   
document.getElementById('new_'+compte).innerHTML new_ressources[compte];
   
compte=compte 1;
 }
   
 }





}

</script> 
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
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 ...
[attachment=8]
Ta ligne
Code 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.
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 :
function rafraichir(new_ressources){

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

tu mettes :
Code PHP :
function rafraichir(new_ressources){

 var 
contenu='';
 var 
compte= (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 :
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
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)
p'tit erreur de Ter Rowan

en fessant :
Code PHP :
function rafraichir(new_ressources){

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

il faut faire
Code PHP :
for each( var quantite_ressource in ressources){
        
// Pour chaque ressource
    
new_ressources[incrementation] = quantite_ressource - ( nombre couts_unites[compte][incrementation]); 
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.
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 2
Remplace
Code PHP :
var new_ressources=ressources
par
Code 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.
Pages : 1 2
URLs de référence