Fonction de "vie" pour rpg en javascript

loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011 - 22 déc. 2010 à 19:56
Berkmann18 Messages postés 25 Date d'inscription dimanche 19 février 2012 Statut Membre Dernière intervention 26 août 2013 - 30 avril 2012 à 16:11
Bonjour à tous,
voilà j'ai créé un code de "vie" qui réduit la vie lors d'un combat dans un mini rpg que je programme en javascript/html... sauf que le code est assez long et j'aimerais trouver un moyen de le raccourcir, je pense qu'il y a un moyen mais je ne me rappelle plus de la structure :

voici mes fonctions javascript :
if (document.getElementById)
   {
   if(navigator.appName.substring(0,3) == "Net")
      document.captureEvents(Event.MOUSEMOVE);
  window.onload = viepleine;
   }

function viepleine(){
   if (document.getElementById)
      {
         document.vie.src='img/100.bmp';
      }    
      tempo = setTimeout("viepleine()", 1000);    
   }

function vie100(){
   if (document.getElementById)
      {
         document.vie.src='img/100.bmp';
      }    
      tempo = setTimeout("vie98()", 1000);      
   }

function vie98(){
   if (document.getElementById)
      {
         document.vie.src='img/98.bmp';
      }
      window.clearTimeout(tempo);
      tempo = setTimeout("vie96()", 1000);
   }

function vie96(){
   if (document.getElementById)
      {
         document.vie.src='img/96.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie94()", 1000);
   }

function vie94(){
   if (document.getElementById)
      {
         document.vie.src='img/94.bmp';
      }   
      window.clearTimeout(tempo); 
      tempo = setTimeout("vie92()", 1000);
   }

function vie92(){
   if (document.getElementById)
      {
         document.vie.src='img/92.bmp';
      }  
      window.clearTimeout(tempo);
      tempo = setTimeout("vie90()", 1000);
   }

function vie90(){
   if (document.getElementById)
      {
         document.vie.src='img/90.bmp';
      }   
      window.clearTimeout(tempo); 
      tempo = setTimeout("vie88()", 1000);
   }

function vie88(){
   if (document.getElementById)
      {
         document.vie.src='img/88.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie86()", 1000);
   }

function vie86(){
   if (document.getElementById)
      {
         document.vie.src='img/86.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie84()", 1000);
   }

function vie84(){
   if (document.getElementById)
      {
         document.vie.src='img/84.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie82()", 1000);
   }

function vie82(){
   if (document.getElementById)
      {
         document.vie.src='img/82.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie80()", 1000);
   }

function vie80(){
   if (document.getElementById)
      {
         document.vie.src='img/80.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie78()", 1000);
   }

function vie78(){
   if (document.getElementById)
      {
         document.vie.src='img/78.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie76()", 1000);
   }

function vie76(){
   if (document.getElementById)
      {
         document.vie.src='img/76.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie74()", 1000);
   }

function vie74(){
   if (document.getElementById)
      {
         document.vie.src='img/74.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie72()", 1000);
   }

function vie72(){
   if (document.getElementById)
      {
         document.vie.src='img/72.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie70()", 1000);
   }

function vie70(){
   if (document.getElementById)
      {
         document.vie.src='img/70.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie68()", 1000);
   }

function vie68(){
   if (document.getElementById)
      {
         document.vie.src='img/68.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie66()", 1000);
   }

function vie66(){
   if (document.getElementById)
      {
         document.vie.src='img/66.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie64()", 1000);
   }

function vie64(){
   if (document.getElementById)
      {
         document.vie.src='img/64.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie62()", 1000);
   }

function vie62(){
   if (document.getElementById)
      {
         document.vie.src='img/62.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie60()", 1000);
   }

function vie60(){
   if (document.getElementById)
      {
         document.vie.src='img/60.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie58()", 1000);
   }

function vie58(){
   if (document.getElementById)
      {
         document.vie.src='img/58.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie56()", 1000);
   }

function vie56(){
   if (document.getElementById)
      {
         document.vie.src='img/56.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie54()", 1000);
   }

function vie54(){
   if (document.getElementById)
      {
         document.vie.src='img/54.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie52()", 1000);
   }

function vie52(){
   if (document.getElementById)
      {
         document.vie.src='img/52.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie50()", 1000);
   }

function vie50(){
   if (document.getElementById)
      {
         document.vie.src='img/50.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie48()", 1000);
   }

function vie48(){
   if (document.getElementById)
      {
         document.vie.src='img/48.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie46()", 1000);
   }

function vie46(){
   if (document.getElementById)
      {
         document.vie.src='img/46.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie44()", 1000);
   }

function vie44(){
   if (document.getElementById)
      {
         document.vie.src='img/44.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie42()", 1000);
   }

function vie42(){
   if (document.getElementById)
      {
         document.vie.src='img/42.bmp';
      }   
      window.clearTimeout(tempo); 
      tempo = setTimeout("vie40()", 1000);
   }

function vie40(){
   if (document.getElementById)
      {
         document.vie.src='img/40.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie38()", 1000);
   }

function vie38(){
   if (document.getElementById)
      {
         document.vie.src='img/38.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie36()", 1000);
   }

function vie36(){
   if (document.getElementById)
      {
         document.vie.src='img/36.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie34()", 1000);
   }

function vie34(){
   if (document.getElementById)
      {
         document.vie.src='img/34.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie32()", 1000);
   }

function vie32(){
   if (document.getElementById)
      {
         document.vie.src='img/32.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie30()", 1000);
   }

function vie30(){
   if (document.getElementById)
      {
         document.vie.src='img/30.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie28()", 1000);
   }

function vie28(){
   if (document.getElementById)
      {
         document.vie.src='img/28.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie26()", 1000);
   }

function vie26(){
   if (document.getElementById)
      {
         document.vie.src='img/26.bmp';
      }
      window.clearTimeout(tempo);    
      tempo = setTimeout("vie24()", 1000);
   }

function vie24(){
   if (document.getElementById)
      {
         document.vie.src='img/24.bmp';
      }   
      window.clearTimeout(tempo);
      tempo = setTimeout("vie22()", 1000);
   }

function vie22(){
   if (document.getElementById)
      {
         document.vie.src='img/22.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie20()", 1000);
   }

function vie20(){
   if (document.getElementById)
      {
         document.vie.src='img/20.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie18()", 1000);
   }

function vie18(){
   if (document.getElementById)
      {
         document.vie.src='img/18.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie16()", 1000);
   }

function vie16(){
   if (document.getElementById)
      {
         document.vie.src='img/16.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie14()", 1000);
   }

function vie14(){
   if (document.getElementById)
      {
         document.vie.src='img/14.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie12()", 1000);
   }

function vie12(){
   if (document.getElementById)
      {
         document.vie.src='img/12.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie10()", 1000);
   }

function vie10(){
   if (document.getElementById)
      {
         document.vie.src='img/10.bmp';
      }   
      window.clearTimeout(tempo); 
      tempo = setTimeout("vie8()", 1000);
   }

function vie8(){
   if (document.getElementById)
      {
         document.vie.src='img/8.bmp';
      }   
      window.clearTimeout(tempo); 
      tempo = setTimeout("vie6()", 1000);
   }

function vie6(){
   if (document.getElementById)
      {
         document.vie.src='img/6.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie4()", 1000);
   }

function vie4(){
   if (document.getElementById)
      {
         document.vie.src='img/4.bmp';
      }    
      window.clearTimeout(tempo);
      tempo = setTimeout("vie2()", 1000);
   }

function vie2(){
   if (document.getElementById)
      {
         document.vie.src='img/2.bmp';
      }  
      window.clearTimeout(tempo);
      tempo = setTimeout("vie0()", 1000);
   }

function vie0(){
   if (document.getElementById)
      {
         window.clearTimeout(tempo);
         document.vie.src='img/0.bmp';
         parent.document.getElementById('mort').style.visibility='visible';          
         parent.map.imgpersomort();
      }    
   }

function blessure(){
tempo = setTimeout("vie100()", 1000);
}

function stop(){
window.clearTimeout(tempo);
}

if(document.getElementById)
   {
   document.write('');
}


d'après mes souvenirs la structure de la fonction est un truc du genre :

function mafonction()
0<n<100
fichier=img(n).bmp
new src=img(n)-2k
document.img.src='img(n)'

je ne me rappelle pas mais je pense que ce "code" est compréhensible pour ce que je veux faire

merci d'avance pour votre aide.

25 réponses

loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
28 déc. 2010 à 19:35
Et voilà ! Merci pour ton aide ! Ca fonctionne très bien, peut être quelques modifications à faire mais j'y suis arrivé :



<script type="text/javascript">
initvie( 100);
var vie = 100;
var temp = null;

function initvie( vie_){
vie = 100;
document.getElementById("vie").src = 'img/'+ vie_ +'.bmp';
document.getElementById("vie").alt = vie_+'/100';
temp = setTimeout( function(){ initvie( vie_ );}, 1000);
}

function kill( vie_){
vie = vie_;
window.clearTimeout(temp);
document.getElementById("vie").src = 'img/'+ vie_ +'.bmp';
document.getElementById("vie").alt = vie_+'/100';
temp = setTimeout( function(){ kill( vie_ -10);}, 1000);
if (vie_ == 0){
window.clearTimeout(temp);
parent.document.getElementById('mort').style.visibility='visible';          
parent.map.imgpersomort();
}
}  
//-- lance la fonction
function cmbt(){
stopvie();
kill( vie -10);
}

function stopvie(){
window.clearTimeout(temp);
}
</script>
0
loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
28 déc. 2010 à 21:31
Voici pour la vie :



<script type="text/javascript">
initvie( 100);
var vie = 100;
var temp = null;

function initvie( vie_){
vie = vie_;
document.getElementById("vie").src = 'img/'+ vie_ +'.bmp';
document.getElementById("vie").alt = vie_+'/100';
temp = setTimeout( function(){ initvie( vie_ );}, 1000);
if (vie_ >= 100){
document.getElementById("vie").src = 'img/100.bmp';
document.getElementById("vie").alt = '100/100';
}
}

function kill( vie_){
vie = vie_;
window.clearTimeout(temp);
document.getElementById("vie").src = 'img/'+ vie_ +'.bmp';
document.getElementById("vie").alt = vie_+'/100';
temp = setTimeout( function(){ kill( vie_ -10);}, 1000);
if (vie_ == 0){
window.clearTimeout(temp);
parent.document.getElementById('mort').style.visibility='visible';          
parent.map.imgpersomort();
}
}  
//-- lance la fonction
function cmbt(){
stopvie();
kill( vie -10);
}

function stopvie(){
window.clearTimeout(temp);
}

function potion30( vie_){
initvie( vie +30);
}

</script>


et pour l'expérience :


<script type="text/javascript">
initxp( 0);
var xp = 0;

function initxp( xp_){
xp = xp_;
document.getElementById("xp").src = 'img/'+ xp_ +'.bmp';
document.getElementById("xp").alt = xp_+'/100';
}

function plusxp( xp_){
xp = xp_;
document.getElementById("xp").src = 'img/'+ xp_ +'.bmp';
document.getElementById("xp").alt = xp_+'/100';
if (xp_ == 100){
return false;
  }
}
//-- lance la fonction
function gain2xp(){
plusxp(xp +2);
}
</script>


code compacté et plus propre pour ce qui concerne l'expérience en revanche la vie et les combats sont encore en cours de mises à jours et corrections de bugs éventuels, en tout cas merci encore pour tout, j'ai véritablement progresser et je pense que l'on peut désormais fermer ce topic à moins que d'autres aient encore des questions...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 déc. 2010 à 10:32
Bonjour,
code compacté et plus propre
pas encore complétement, en effet lorsque l'on regarde les lignes
document.getElementById("vie").src = 'img/'+ vie_ +'.bmp';
document.getElementById("vie").alt = vie_+'/100';
et les lignes
document.getElementById("xp").src = 'img/'+ xp_ +'.bmp';
document.getElementById("xp").alt = xp_+'/100';
on voit que c'est la même chose aux variables prêtes, ceci implique qu'il y a moyen de créer une fonction commune, par exemple
//-------------------------------
function upDateImage( id, valeur){
  var oImage = document.getElementById( id);
  oImage.src = 'img/'+ valeur +'.bmp';
  oImage.alt = valeur +'/100';
}
et dont tu feras l'appel de la façon suivante
upDateImage( 'vie', vie_);
pour les vies, et
upDateImage( 'xp', xp_);
pour l'expérience

d'une façon générale, indentes ton code, pour plus de lisibilité et ajoutes des commentaires si nécessaire, pour une meilleur maintenace.

...je pense que l'on peut désormais fermer ce topic à moins...
c'est toi qui vois mais dans ce cas penses à mettre Réponse acceptée! pour signaler qu'il y a une solution satisfaisante, cela pourrait en aider d'autres
;O)
0
loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
29 déc. 2010 à 18:19
Effectivement le code n'était pas complètement compacté mais celui-ci me convient mieux :



<script type="text/javascript">
affxp( 0);
var xp = 0;

function affxp( xp_){
xp = xp_;
document.getElementById("xp").src = 'img/'+ xp_ +'.bmp';
document.getElementById("xp").alt = xp_+'/100';
if (xp_ >= 100){
document.getElementById("xp").src = 'img/100.bmp';
document.getElementById("xp").alt = '100/100';
  }
}

function gain2xp(){
affxp(xp +2);
}
</script>


(les scripts sont directement écrit dans le code source de la page et non pas dans un fichier nommé xp.js par exemple c'est pour ça que je ne compacte pas plus : les deux codes sont indépendants l'un de l'autre [vie.htm et xp.htm])

il faut que je fasse un code pour la gestion de l'argent, qui sera basé sur le même principe, j'aurait peut-être quelques questions et on pourra enfin terminer ce sujet à ce moment là :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Berkmann18 Messages postés 25 Date d'inscription dimanche 19 février 2012 Statut Membre Dernière intervention 26 août 2013 3
30 avril 2012 à 16:11
1) Je serais ravis de tester cette RPG, même d'y participer.
(pour cela MP moi)
2) Ex: l'image du personnage est définit:
var imgperso, imgpersomort = document.getElementById("img_perso"); // id de la zone ou est situé l'image du personnage dans le code
if( vie_ 0 || vie_ "0" )
{
imgpersomort.src = "img/persomort.bmp";
} 


PS: J'espère t'avoir au moins un peut aidé, de plus pour le "1)", je code en MS-DOS, DHTML( HTML+CSS+JS ), VB .NET, (~BBCode, zCode et ~PHP Basique)
0
Rejoignez-nous