Partage
  • Partager sur Facebook
  • Partager sur Twitter

Traduction d'un algorithme en JavaScript

Sujet résolu
Anonyme
27 mai 2017 à 11:48:51

Voilà,

J'aimerais traduire un algorithme en JavaScript, mais comme je suis débutant, j'ai encore du mal. 

Merci d'avance. 

Voici l'algorithme:

Quand le bouton "Marche" est enclenché, ouvrir la vanne amont.

Si l'eau du bassin inférieur est au même niveau que celle du sas, ouvrir la porte amont.

(Le bateau rentre dans le sas)

Quand le bateau est dans le sas, fermer la porte amont puis la vanne amont.

Ouvrir la vanne aval

Si l'eau du sas est au même niveau que celle du bassin supérieur, ouvrir la porte aval.

(Le bateau sort du sas)

Quand le bateau est dans le bassin supérieur, fermer la porte aval puis la vanne aval.

-
Edité par Anonyme 27 mai 2017 à 11:54:41

  • Partager sur Facebook
  • Partager sur Twitter
27 mai 2017 à 13:41:54

Tu dois trouver un moyen d'enchaîner les actions quand la précédente action est terminée, tu peux utiliser cette façon : tu lances un timer setInterval qui va appeler une fonction toutes les 50 millisecondes, et au début de chaque fonction, vérifier si l'action a bien été accomplie. Si c'est le cas, tu passes à la suivante.

Tu peux finir avec clearInterval() ou utiliser requestAnimationFrame qui est mieux car plus fluide. Après je sais pas avec quoi tu veux faire ton animation, des canvas, des divs... voilà un exemple avec des éléments html, pas testé :

<body>
  <input type="button" id="marche">marche</input>
  <script>//tu déclares tes variables au début
  var timer;
  var vAval = document.getElementById("vanneAval");
  var vAmont = document.getElementById("vanneAmont");
  var porteAmont = document.getElementById("porteAmont");

  document.getElementById("marche").addEventListener("mousedown", function(){
    timer = setInterval(processus, 50);//tu lances un timer
  });

  function processus(){ //tu pars de la première action
    ouvrirVanne();
  }
  function ouvrirVanne(){
    if ( parseInt(vanne.style.top) >= limiteTop ) bateauRentre();//si c'est déjà fait, tu passes à la suivante
    vanne.style.top = parseInt(vanne.style.top) + 5;//ici tu devras rajouter "px", top attend un string du genre : "15px" et pas 15
  }
  function bateauRentre(){
    if ( parseInt(bateau.style.left) >= limiteLeft ) fermerPorteAmont();//etc.
    bateau.style.left = parseInt(bateau.style.left) + 5;//pareil pour "px"
  }
  </script>
</body>

-
Edité par Arthur222 27 mai 2017 à 17:07:49

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 mai 2017 à 14:06:20

Merci beaucoup, mais j'ai remarqué quelques petites erreurs (je ne suis pas sûr, je ne connais rien à l'html, et pas beaucoup au javascript). 

Les voici :

function processus(){ //tu pars de la première action
    ouvrirVanne(); //Mais la fonction est définie qu'après?
  }
  function ouvrirVanne(){
    if ( parseInt(vanne.style.top) >= limiteTop ) bateauRentre();//Pareil ici, la fonction n'est définié qu'après?? //si c'est déjà fait, tu passes à la suivante
    vanne.style.top = parseInt(vanne.style.top) + 5;
  }



  • Partager sur Facebook
  • Partager sur Twitter
27 mai 2017 à 17:03:54

Tu peux faire un test dans ta page html, avec un console.log :

<script>
a();
function a(){
  console.log("a");
}
</script>
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 mai 2017 à 18:02:52

Oui j'ai vu. Désolé, je m'y connais pas trop trop.

Encore un gros merci à toi <3

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2020 à 15:22:35

Bonjour j'aimerais avoir une réponse de cette algorithme : Fonction secret(x): r <- 1 i <- 1 Tant que i < x : i <- i + 1 r <- r * i FinTantQue Retourner r FinFonction A <- 4 Écrire secret(A)
  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2020 à 15:29:40

@LoanLavorel1 Bonjour, merci de ne pas déterrer d'ancien sujet résolu.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter