Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #1

Open
wants to merge 4 commits into
base: feedback
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/PfZeQ5ci)
22 changes: 22 additions & 0 deletions morse.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
body{
text-align: center;
background-color: rgb(239, 203, 150);
}
h1{
font-size: 3em;
margin-bottom: 10px;
}
input{
border: 5px solid;
border-radius: 220px;
border-color: blueviolet;
width: 50%;
height: 30px;
text-align: center;
}
button{
border: 5px solid blueviolet;
border-radius: 25px;
width: 10%;
margin-left: 25px;
}
19 changes: 19 additions & 0 deletions morse.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Parlez-vous le morse</title>
<link rel="stylesheet" href="morse.css">
</head>
<body>

<h1>Traduire du latin en Morse et inversement</h1>
<input type="text" id="texte">
<button id="traduire">Traduire</button><br><br>
<p class="traduction"></p>


<script type="module" src="morse.js"></script>
</body>
</html>
85 changes: 85 additions & 0 deletions morse.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
//recuperation et sockage des elements html dans des variables
const champtexte = document.querySelector("#texte");
const boutontraduire = document.querySelector("#traduire");
const resultatTraduction = document.querySelector(".traduction")
let resultat; //creation d'une variable
champtexte.placeholder = "Entrez un texte !" //contenu par defaut de l'input

const latinVersMorse = { 'A':'.-', 'B':'-...', 'C':'-.-.', 'D':'-..', 'E':'.', 'F':'..-.', 'G':'--.', 'H':'....',
'I':'..', 'J':'.---', 'K':'-.-', 'L':'.-..', 'M':'--', 'N':'-.', 'O':'---', 'P':'.--.', 'Q':'--.-', 'R':'.-.',
'S':'...', 'T':'-', 'U':'..-', 'V':'...-', 'W':'.--', 'X':'-..-', 'Y':'-.--', 'Z':'--..',' ':'/'};

//fonction qui convertit du texte en une liste de caracteres
function obtenirListeCaracteresLatins(texte){
return texte.split(''); //la methode .split() permet de convertir du texte en un tableau de carateres
}
console.log ('La methode split donne ça :',obtenirListeCaracteresLatins("Hello Mariama"));

//fonction qui traduit un caractere en morse
function traduireCaractereLatin(caractere){
return latinVersMorse[caractere.toUpperCase()];
}
console.log("La traduction d'un caractere en morse :",traduireCaractereLatin('a'));

//fonction qui traduit un texte en morse
function encoder(texte) {
// Découpe le texte en caractères
const caracteres = obtenirListeCaracteresLatins(texte);

// Traduit chaque caractère en Morse
const traduitEnMorse = caracteres.map(caractere => traduireCaractereLatin(caractere));

// Combine les résultats en une seule chaîne, séparée par des espaces
return traduitEnMorse.join(' ');
}
console.log( "Traduction du texte en morse: ",encoder("Binta"));

// Dictionnaire Morse vers Latin
const morseVersLatin = {'-': "T", '--': "M", '---': "O", '--.': "G", '--.-': "Q", '--..': "Z", '-.': "N", '-.-': "K",
'-.--': "Y", '-.-.': "C", '-..': "D", '-..-': "X", '-...': "B", '.': "E", '.-': "A", '.--': "W", '.---': "J", '.--.':
"P", '.-.': "R", '.-..': "L", '..': "I", '..-': "U", '..-.': "F", '...': "S", '...-': "V", '....': "H","/":' '};

//fonction qui divise un texte Morse en liste de caractères Morse
function obtenirListeCaracteresMorse(texteMorse){
const mots= texteMorse.split('/')
return mots.map(mot => mot.split(' '))
}
console.log("Traduction texte Morse en chaine de caracteres : ",obtenirListeCaracteresMorse(encoder("Hello Mariama")));

//fonction qui traduit un caractere Morse en texte
function traduireCaractereMorse(caractereMorse){
return morseVersLatin[caractereMorse] || ' ';
}
console.log( "Traduction caractere Morse:",traduireCaractereMorse('.-'))

//fonction qui traduit un texte Morse en texte Latin
function decoder(texteMorse){
// Découpe le texte Morse en tableau de caractères Morse
const motsMorse = obtenirListeCaracteresMorse(texteMorse);
// Traduit chaque caractère Morse en caractère Latin
const motsDecodes = motsMorse.map(mot => mot.map(caractereMorse=> traduireCaractereMorse(caractereMorse)).join(''));
return motsDecodes.join(' ');

}
console.log("Convertir du Morse en Latin:",decoder(".... . .-.. .-.. --- / -- .- .-. .. .- -- .-"))

boutontraduire.addEventListener('click',()=>{
const texteATraduire = champtexte.value.trim();
if (!texteATraduire) { // Vérifie si l'entrée est vide
resultatTraduction.innerHTML = "Veuillez entrer du texte.";
return;
}
if( /^[.\- \/]+$/.test(texteATraduire)){
resultat = decoder(texteATraduire)
resultatTraduction.innerHTML = "traduction en latin: "+ resultat;
} else {
resultat = encoder(texteATraduire)
resultatTraduction.innerHTML = "traduction en morse: "+ resultat;
}
});

champtexte.addEventListener('input', () => {
boutontraduire.disabled = champtexte.value.trim() === ""; // Vérifie si le champ est vide

});