Browse Source

HW-02 done

Olga_Brekhuntsova 2 years ago
parent
commit
781147f827

+ 3 - 0
hw-js-02-types-expression-conditions-logic-homework/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+  "liveServer.settings.port": 5501
+}

+ 27 - 0
hw-js-02-types-expression-conditions-logic-homework/index.html

@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html lang="ru">
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>nix-js-02-types-expression-conditions-logic-homework</title>
+</head>
+
+<body style="padding:30px">
+    <div id='root'></div>
+    <script src="/js/task-01.js" type="module"></script>
+    <script src="/js/task-02.js" type="module"></script>
+    <script src="/js/task-03.js" type="module"></script>
+    <script src="/js/task-04.js" type="module"></script>
+    <script src="/js/task-05.js" type="module"></script>
+     <script src="/js/task-06.js" type="module"></script>
+    <script src="/js/task-07.js" type="module"></script>
+    <script src="/js/task-08.js" type="module"></script>
+    <script src="/js/task-09.js" type="module"></script>
+    <script src="/js/task-10.js" type="module"></script>
+    <script src="/js/task-11.js" type="module"></script>
+    <script src="/js/task-12.js" type="module"></script>
+    <script src="/js/task-13.js" type="module"></script>
+    <script src="/js/task-14.js" type="module"></script>   
+</body>
+
+</html>

+ 117 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-01.js

@@ -0,0 +1,117 @@
+// switch: sizes
+// Сделайте задание Comparison: sizes из предыдущего ДЗ используя switch
+const f1 = (rootId) => {
+    let fromCountry;
+    let toCountry;
+    const sizesLength = 8;
+
+    // Ранее у меня список начальных значений размеров находился в объекте
+    // coatSizes = { Russian: 40, German: 34, France: 36, Italy: 38, "Great Britain": 8, USA: 6 };
+    // теперь он находится в функции chooseCountrySize(country) со switch,
+    //     которая используется 2 раза: 
+    // - для выбора начального размера страны, с которой конвертируем
+    // - для выбора начального размера страны, в которую конвертируем
+
+    function chooseCountrySize(country) {
+        let initialSize;
+        switch (country) {
+            case 'Russian':
+                initialSize = 40;
+                break;
+            case 'German':
+                initialSize = 34;
+                break;
+            case 'France':
+                initialSize = 36;
+                break;
+            case 'Italy':
+                initialSize = 38;
+                break;
+            case 'Great Britain':
+                initialSize = 8;
+                break;
+            case 'USA':
+                initialSize = 6;
+                break;
+        }
+        return initialSize;
+    }
+
+    //Подставляет размерную сетку той страны, с которой конвертируем
+
+    const substituteFnc = () => {
+        fromCountry = fromCountryId.value;
+        const sizesArray = [];
+        sizesArray[0] = chooseCountrySize(fromCountry);
+        for (let i = 1; i < sizesLength; i++) { sizesArray[i] = sizesArray[0] + i * 2 };
+        const sizesStr = sizesArray.map(item => "<option value=" + item + ">" + item + "</option>");
+        fromSizeId.innerHTML = sizesStr;
+        convertedSizeId.innerHTML = "---";
+    };
+
+    //Вычисляет размер той страны, в которую конвертируем
+    function countSizeFnc() {
+        toCountry = convertedCountryId.value;
+        const fromSize = fromSizeId.value;
+        convertedSizeId.innerHTML = chooseCountrySize(toCountry) + (fromSize - chooseCountrySize(fromCountry));
+    };
+
+    //Блок создания формы
+    const task01block = document.createElement('div');
+    task01block.style = "display:inline-block";
+    const task01title = document.createElement('h2');
+    task01title.innerText = 'Task-01  Comparison: sizes';
+    
+    //Блок создания формы
+    const countries = document.createElement('div');
+    const sizes = document.createElement('div');
+    const from = document.createElement('span');
+    const fromCountryId = document.createElement('select');
+    const to = document.createElement('span');
+    const convertedCountryId = document.createElement('select');
+    const fromSizeId = document.createElement('select');
+    const convertedSizeId = document.createElement('output');
+    const sizeBtn = document.createElement('button');
+
+    sizes.style = "margin-top:20px";
+    from.innerText = 'From';
+    fromCountryId.innerHTML = "<option value='hide'> -- Enter initial country --</option><option value='Russian'>Russian</option><option value='German'>German</option><option value='France'>France</option><option value='Italy'>Italy</option><option value='Great Britain'>Great Britain</option><option value='USA'>USA</option>";
+    fromCountryId.style = "margin-left:10px; margin-right:10px";
+    to.innerText = 'to';
+    convertedCountryId.style = "margin-left:10px";
+    convertedCountryId.innerHTML = "<option value='hide'> -- Enter converted country --</option><option value='Russian'>Russian</option><option value='German'>German</option><option value='France'>France</option><option value='Italy'>Italy</option><option value='Great Britain'>Great Britain</option><option value='USA'>USA</option>";
+    fromSizeId.style = "display:inline-block; width:150px; margin-left:40px"
+    fromSizeId.innerHTML = "<option value='hide'> -- Enter size --</option>";
+    convertedSizeId.innerHTML = "---";
+    convertedSizeId.style = "display:inline-block; text-align:center; width:150px; border: 1px solid green; border-radius:3px; margin-left:30px;"
+    convertedSizeId.name = "result";
+    convertedSizeId.for = "sizeBtn";       
+    sizeBtn.innerText = "Convert";
+    sizeBtn.style = "display:block; margin-left:auto; margin-right:auto; margin-top:20px";
+    sizeBtn.type = "button";
+ 
+ 
+// guessYearBtn.innerText = "Run Vanga";
+// guessYearBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task01block); 
+    task01block.appendChild(task01title); 
+    task01block.appendChild(countries);
+    task01block.appendChild(sizes);
+    countries.appendChild(from); 
+    countries.appendChild(fromCountryId); 
+    countries.appendChild(to); 
+    countries.appendChild(convertedCountryId);
+    sizes.appendChild(fromSizeId);
+sizes.appendChild(convertedSizeId);
+task01block.appendChild(sizeBtn); 
+
+    sizeBtn.onclick = countSizeFnc;
+    fromCountryId.onchange = substituteFnc;
+
+    //Сброс результата при изменении одного из полей
+    fromSizeId.onchange = () => { convertedSizeId.innerHTML = "---"; };
+    convertedCountryId.onchange = () => { convertedSizeId.innerHTML = "---"; };
+}
+f1(root);
+export default f1;

+ 46 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-02.js

@@ -0,0 +1,46 @@
+// switch: if
+// Перепишите пример ниже, используя if.
+
+// switch (color){
+//     case "red": document.write("<div style='background-color: red;'>красный</div>");
+//     case "black": document.write("<div style='background-color: black; color: white;'>черный</div>");
+//                 break;
+//     case "blue": document.write("<div style='background-color: blue;'>синий</div>");
+//     case "green": document.write("<div style='background-color: green;'>зеленый</div>");
+//                 break;
+//     default: document.write("<div style='background-color: gray;'>Я не понял</div>");
+// }
+const f2 = (rootId) => {
+const task02block = document.createElement('div');
+const task02title = document.createElement('h2');
+task02title.innerText = 'Task-02 Switch: if';
+const chooseColorBtn = document.createElement('button');
+chooseColorBtn.innerText = "Choose color";
+chooseColorBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task02block); 
+task02block.appendChild(task02title); 
+task02block.appendChild(chooseColorBtn); 
+chooseColorBtn.onclick = () => {
+    let color = prompt("Введите один цвет: red, black, blue или green", "");
+     if (color === 'red' || color === 'black') {
+        if (color === 'red') {
+        task02block.insertAdjacentHTML("beforeend", "<div style='background-color: red;'>красный</div>")
+        }
+        task02block.insertAdjacentHTML("beforeend", "<div style='background-color: black; color: white;'>черный</div>")
+    
+    } else {
+        if (color === 'blue') {
+        task02block.insertAdjacentHTML("beforeend", "<div style='background-color: blue;'>синий</div>")
+        }
+        if (color === 'blue' || color === 'green') {
+        task02block.insertAdjacentHTML("beforeend", "<div style='background-color: green;'>зеленый</div>")
+             
+        } else {
+        task02block.insertAdjacentHTML("beforeend", "<div style='background-color: gray;'>Я не понял</div>")
+        }
+    }
+}
+}
+f2(root);
+export default f2;

+ 32 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-03.js

@@ -0,0 +1,32 @@
+// prompt: or
+// Для задания Number: age используя ИЛИ || вывести сообщение об ошибке(alert)
+// если пользователь не введет возраст или нажмет отмену(т.е.prompt выдаст пустую строку или null,
+//     интерпретируемую как false).
+
+// Number: age
+// С помощью prompt спросить у пользователя его возраст и подсчитать год рождения. 
+// Год рождения вывести с помощью alert.
+const f3=(rootId) =>{
+const task03block = document.createElement('div');
+const task03title = document.createElement('h2');
+task03title.innerText = 'Task-03 Number: age';
+const guessYearBtn = document.createElement('button');
+guessYearBtn.innerText = "Run Vanga";
+guessYearBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task03block); 
+task03block.appendChild(task03title); 
+task03block.appendChild(guessYearBtn); 
+guessYearBtn.onclick = () => {
+const now = new Date();
+const thisYear = now.getFullYear();
+const vangaBall = String.fromCodePoint(128302);
+    let age = prompt(`Ща угадаю твой год рождения ${vangaBall}  Напиши, сколько лет тебе от роду`) || alert('Как сказал классик: "Не надо стесняться"'); 
+    if (age) {
+        const bDay = confirm("А День Рождения был в этом году?");
+        bDay ? alert(`Вииииижу.... рождён ты в ${thisYear - age} году`) : alert(`Вииииижу.... рождён ты в ${thisYear - age - 1} году`);
+    }
+}
+ }
+f3(root);
+export default f3;

+ 21 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-04.js

@@ -0,0 +1,21 @@
+// confirm: or this days
+// C помощью этого же трюка сделайте капризного робота, который в confirm спрашивает "шопинг?",
+//     а в случае отказа - выводить alert "ты - бяка".
+const f4 = (rootId) => {
+
+const task04block = document.createElement('div');
+const task04title = document.createElement('h2');
+task04title.innerText = 'Task-04 Confirm: or this days';
+const talkBtn = document.createElement('button');
+talkBtn.innerText = "Lets talk";
+talkBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task04block); 
+task04block.appendChild(task04title); 
+task04block.appendChild(talkBtn); 
+talkBtn.onclick = () => {
+    confirm('Шоппинг?')|| alert("ты - бяка")
+} 
+}
+f4(root);
+export default f4;

+ 20 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-05.js

@@ -0,0 +1,20 @@
+// confirm: if this days
+// Сделать тоже самое с помощью if.
+
+const f5 = (rootId) => {
+const task05block = document.createElement('div');
+const task05title = document.createElement('h2');
+task05title.innerText = 'Task-05 Confirm: if this days';
+const talk05Btn = document.createElement('button');
+talk05Btn.innerText = "Lets talk again";
+talk05Btn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task05block); 
+task05block.appendChild(task05title); 
+task05block.appendChild(talk05Btn); 
+talk05Btn.onclick = () => {
+    if (!confirm('Шоппинг?')) { alert("ты - бяка") }
+    } 
+}
+f5(root);
+export default f5;

+ 20 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-06.js

@@ -0,0 +1,20 @@
+// triple prompt
+// Трижды вызывать prompt, сохранить в переменные фамилию, имя и отчество. Вывести ФИО c помощью alert.
+    
+const f6 = (rootId) => {
+const task06block = document.createElement('div');
+const task06title = document.createElement('h2');
+task06title.innerText = 'Task-06 Triple prompt';
+const personBtn = document.createElement('button');
+personBtn.innerText = "Lets get your fullname";
+personBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task06block); 
+task06block.appendChild(task06title); 
+task06block.appendChild(personBtn); 
+personBtn.onclick = () => {
+        alert((prompt("Введите фамилию")||"Anonimenko") +" "+ (prompt("Введите имя")||"Anonim") +" "+ (prompt("Введите отчество")||"Anonimovich"))
+} 
+}
+f6(root);
+export default f6;

+ 24 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-07.js

@@ -0,0 +1,24 @@
+// default: or
+// Используя ИЛИ || добавьте имена по умолчанию, которые будут сохраняться во внутренних переменных
+// если пользователь ввел пустую строку или нажал "Отмена".Например, если вы на шаге ввода Фамилии
+// нажмете Escape, фамилия будет "Иванов"
+const f7 = (rootId) => {
+const task07block = document.createElement('div');
+const task07title = document.createElement('h2');
+task07title.innerText = 'Task-07 Default: or';
+const personDefBtn = document.createElement('button');
+personDefBtn.innerText = "Lets get your fullname again";
+personDefBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task07block); 
+task07block.appendChild(task07title); 
+task07block.appendChild(personDefBtn); 
+personDefBtn.onclick = () => {
+    const surnameDefault = "Иванов";
+    const nameDefault = "Акакий";
+    const dadsNameDefault = "Акакиевич";
+        alert((prompt("Введите фамилию")||surnameDefault) +" "+ (prompt("Введите имя")||nameDefault) +" "+ (prompt("Введите отчество")||dadsNameDefault))
+    }
+}
+f7(root);
+export default f7;

+ 32 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-08.js

@@ -0,0 +1,32 @@
+// default: if
+// Сделайте тоже самое с помощью if и else
+const f8 = (rootId) => {
+const task08block = document.createElement('div');
+const task08title = document.createElement('h2');
+task08title.innerText = 'Task-08 Default: if';
+const personIfBtn = document.createElement('button');
+personIfBtn.innerText = "Lets get your fullname one more time";
+personIfBtn.style = 'margin-bottom:20px';
+const task08comment = document.createElement('p');
+task08comment.innerText = 'С if кода получилось больше и не так красиво. Здесь нужно было прийти к выводу,что иногда операторы || и && существенно удобнее?'
+rootId.appendChild(task08block); 
+task08block.appendChild(task08title); 
+task08block.appendChild(task08comment);
+task08block.appendChild(personIfBtn); 
+
+personIfBtn.onclick = () => {
+    const surnameDefault = "Иванов";
+    const nameDefault = "Акакий";
+    const dadsNameDefault = "Акакиевич";
+    let surname;
+    let name;
+    let dadsName;
+    if (!(surname = prompt("Введите фамилию"))) { surname = surnameDefault }
+    if (!(name = prompt("Введите имя"))) { name = nameDefault }
+    if (!(dadsName = prompt("Введите отчество"))){ dadsName = dadsNameDefault }
+
+        alert(surname + " " + name + " " + dadsName)
+    }
+    }
+f8(root);
+export default f8;

+ 66 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-09.js

@@ -0,0 +1,66 @@
+// login and password
+// Напишите код, который спрашивает логин, проверяет его на верность,
+//     в случае если логин верен, просит ввести пароль и проверяет его.
+//     В случае несовпадения логина или пароля выводить alert с текстом ошибки.
+//     В случае успешного логина - alert с поздравлением.Правильные логин: admin и пароль: qwerty.
+//     Используйте вложенные if и else.
+const f9 = (rootId) => {
+const login = 'admin';
+    const password = 'qwerty';
+    
+    const task09block = document.createElement('div');
+    const task09title = document.createElement('h2');
+    const loginInputId =document.createElement('input');
+    const passwordInputId =document.createElement('input');
+    const signBtnId =document.createElement('button');
+task09title.innerText = 'Task-09 Login and password';
+    task09title.style = "margin-left:auto; margin-right:auto";
+    loginInputId.style = 'display:block';
+    loginInputId.placeholder = 'Enter login';
+    passwordInputId.style = 'margin-top:10px;';
+    passwordInputId.placeholder = 'Enter password';
+    signBtnId.type = 'button';
+    signBtnId.style = 'display:block; margin-top:20px';
+    signBtnId.innerText = 'Sign in';
+    
+rootId.appendChild(task09block); 
+task09block.appendChild(task09title); 
+task09block.appendChild(loginInputId); 
+task09block.appendChild(passwordInputId); 
+task09block.appendChild(signBtnId); 
+const pswdInMemory = [];
+const pswdOnScreen = [];
+    
+//Замена вводимых символов пароля на экране на звездочки *
+passwordInputId.oninput = () => {
+    let pswdInputLength = 0;
+    pswdInputLength = passwordInputId.value.split('').length;
+    pswdInMemory.push(passwordInputId.value.split('')[pswdInputLength - 1]);
+    pswdOnScreen[pswdInputLength-1] = "*";
+    passwordInputId.value=pswdOnScreen.join('');
+     }
+//Верификация логина и пароля
+signBtnId.onclick = () => { 
+    const loginInput = loginInputId.value;
+    const pswdInput = pswdInMemory.join('');
+    let notific='';
+    if (loginInput === login) {
+        if (pswdInput === password)
+        {
+            notific = "Congratulations! Correct login & password";
+     }
+        else {
+            notific = "Wrong password";        
+        }
+    } else {
+        notific = "Wrong login"
+    }
+    passwordInputId.value = '';
+    pswdInMemory.length = 0;
+    pswdOnScreen.length = 0;
+    alert(notific);
+};
+
+}
+f9(root);
+export default f9;

+ 121 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-10.js

@@ -0,0 +1,121 @@
+// currency calc
+// Калькулятор обмена валют.Первый prompt спрашивает валюту: "usd" или "eur".
+// С помощью switch установите обменный курс для валюты, выбранной пользователем,
+//     после чего спросите величину и переведите её из гривны в выбранную на первом prompt валюту.
+// Выведите результат в alert()
+
+// currency calc: improved
+// Улучшить предыдущее задание: сделать возможность ввода валюты любыми буквами(usd, uSd, USD),
+// используйте str.toLowerCase().
+
+// currency calc: two rates
+// Добавить к возможность выбора обменного курса на продажу и покупку.Используйте confirm для ввода
+//  пользователя и тернарный оператор для величины курса.
+
+// currency calc: if
+// Сделать тоже самое на if
+const f10 = (rootId) => {
+    const task10block = document.createElement('div');
+    const task10_1title = document.createElement('h2');
+    task10_1title.innerText = 'Task-10-1 Сurrency calc + Task-10-2 Сurrency calc: improved';
+
+    const task10_3title = document.createElement('h2');
+    task10_3title.innerText = 'Task-10-3 Сurrency calc: two rates';
+    const task10_4title = document.createElement('h2');
+    task10_4title.innerText = 'Task-10-4 Сurrency calc calc: if';
+
+    const exchange_01Btn = document.createElement('button');
+    exchange_01Btn.innerText = "Exchange UAH to USD or EUR";
+    exchange_01Btn.style = 'margin-bottom:20px';
+
+    const exchange_03Btn = document.createElement('button');
+    exchange_03Btn.innerText = "Exchange UAH to USD or EUR";
+    exchange_03Btn.style = 'margin-bottom:20px';
+
+    const exchange_04Btn = document.createElement('button');
+    exchange_04Btn.innerText = "Exchange UAH to USD or EUR";
+    exchange_04Btn.style = 'margin-bottom:20px';
+
+    rootId.appendChild(task10block);
+    task10block.appendChild(task10_1title);
+    task10block.appendChild(exchange_01Btn);
+    exchange_01Btn.onclick = () => {
+        const toCurrency = prompt('Введите валюту, которую хотите купить: EUR или USD');
+        let fromAmount = null;
+        let toAmount;
+        switch (toCurrency.toLowerCase()) {
+            case 'usd':
+                fromAmount = prompt('Введите сумму в гривне');
+                toAmount = fromAmount / 27.62;
+                break;
+            case 'eur':
+                fromAmount = prompt('Введите сумму в гривне');
+                toAmount = fromAmount / 31.06;
+                break;
+            default: alert('Чет я не понял, попробуйте еще раз');
+                break;
+        }
+        !fromAmount || alert(`На ${fromAmount} UAH вы можете приобрести ${Math.round(toAmount * 100) / 100} ${toCurrency.toUpperCase()} `);
+    }
+
+    task10block.appendChild(task10_3title);
+    task10block.appendChild(exchange_03Btn);
+    exchange_03Btn.onclick = () => {
+        const toCurrency = prompt('Введите валюту, которую хотите купить: EUR или USD');
+        let fromAmount = null;
+        let toAmount;
+        let chosenCourse;
+        if (toCurrency) {
+            switch (toCurrency.toLowerCase()) {
+                case 'usd':
+                    confirm('Использовать курс продажи 27.62? Если нет, то будет использован курс покупки 27.15') ? (chosenCourse = 27.62) : (chosenCourse = 27.15);
+                    fromAmount = prompt('Введите сумму в гривне');
+                    toAmount = fromAmount / chosenCourse;
+                    break;
+                case 'eur':
+                    confirm('Использовать курс продажи 31.06? Если нет, то будет использован курс покупки 30.55') ? (chosenCourse = 31.06) : (chosenCourse = 30.55);
+                    fromAmount = prompt('Введите сумму в гривне');
+                    toAmount = fromAmount / chosenCourse;
+                    break;
+                default: alert('Чет я не понял, попробуйте еще раз');
+                    break;
+            }
+            ((!fromAmount && alert('Чет я не понял, попробуйте еще раз') || !fromAmount)) || alert(`На ${fromAmount} UAH вы можете приобрести ${Math.round(toAmount * 100) / 100} ${toCurrency.toUpperCase()} `);
+        }
+        else { alert('Чет я не понял, попробуйте еще раз') };
+    }
+
+    task10block.appendChild(task10_4title);
+    task10block.appendChild(exchange_04Btn);
+    exchange_04Btn.onclick = () => {
+        const toCurrency = prompt('Введите валюту, которую хотите купить: EUR или USD');
+        let fromAmount = null;
+        let toAmount = null;
+        let chosenCourse;
+        if (toCurrency) {
+            if (toCurrency.toLowerCase() === 'usd') {
+                confirm('Использовать курс продажи 27.62? Если нет, то будет использован курс покупки 27.15') ? (chosenCourse = 27.62) : (chosenCourse = 27.15);
+                fromAmount = prompt('Введите сумму в гривне');
+                toAmount = fromAmount / chosenCourse;
+            }
+            else {
+                if (toCurrency.toLowerCase() === 'eur') {
+                    confirm('Использовать курс продажи 31.06? Если нет, то будет использован курс покупки 30.55') ? (chosenCourse = 31.06) : (chosenCourse = 30.55);
+                    fromAmount = prompt('Введите сумму в гривне');
+                    toAmount = fromAmount / chosenCourse;
+                }
+                else { alert('Чет я не понял, попробуйте еще раз'); }
+            }
+
+            //Проверка на неккоректный ввод:
+            toAmount || ((!fromAmount && alert('Чет я не понял, попробуйте еще раз') || !fromAmount)) || alert(`На ${fromAmount} UAH вы можете приобрести ${Math.round(toAmount * 100) / 100} ${toCurrency.toUpperCase()} `);
+              
+        }
+
+        else { alert('Чет я не понял, попробуйте еще раз') };
+    
+    }
+}
+ f10(root);
+export default f10;
+

+ 44 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-11.js

@@ -0,0 +1,44 @@
+// scissors
+// Сделайте игру "камень-ножницы-бумага".Пользователь вводит свой вариант через prompt,
+//     программа генерирует свой вариант через Math.random() и выводит через alert.
+//     Следующий alert выводит имя победителя или "ничья"
+const f11 = (rootId) => {
+
+const task11block = document.createElement('div');
+const task11title = document.createElement('h2');
+task11title.innerText = 'Task-11 Scissors';
+const playBtn = document.createElement('button');
+playBtn.innerText = 'Сыграть в "камень-ножницы-бумага"';
+playBtn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task11block); 
+task11block.appendChild(task11title); 
+task11block.appendChild(playBtn); 
+playBtn.onclick = () => {
+    const userChoice = prompt('Введи одно из 3-х слов: камень, ножницы или бумага').toLowerCase();
+    if (userChoice === "камень" || userChoice === "ножницы" || userChoice === "бумага") { 
+        let robotChoice = Math.floor(Math.random() * 3);
+    switch (robotChoice) {
+        case 1: robotChoice = "камень";
+            break;
+        case 2: robotChoice = "ножницы";
+            break;
+        default: robotChoice = "бумага";
+            break;
+    }
+    alert(`Робот выбрал "${robotChoice}"`);
+    if (userChoice === robotChoice) {
+        alert(`У нас ничья 🤝`)
+     }
+    else { 
+        if ((userChoice === 'ножницы' && robotChoice === 'бумага') || (userChoice === 'камень' && robotChoice === 'ножницы') || (userChoice === 'бумага' && robotChoice === 'камень')) {
+            alert("Поздравляю, ты выиграл!")
+         }
+        else { alert('В этот раз повезло роботу 😛')}
+    }
+    }
+    else { alert("Ошибка ввода") };
+    }
+    }
+f11(root);
+export default f11;

+ 81 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-12.js

@@ -0,0 +1,81 @@
+// Задание на синий пояс
+// Сделать задания обмена валют используя ассоциативный массив (объект) подобной структуры. Добавьте дополнительные поля при надобности. Для обращения к нужному полю используйте [].
+// let ratios = {
+//     usd: 25.6,
+//     eur: 29
+// }
+// real data
+// Иcпользуя заготовку ниже реализуйте перевод валют с реальными данными.
+//     fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
+//      .then(data => {
+//             console.log(data.rates.UAH)
+            
+//         })
+const f12 = (rootId) => {
+const task12block = document.createElement('div');
+const task12_1title = document.createElement('h2');
+task12_1title.innerText = 'Task-12-1 Сurrency calc blue belt';
+const exchange_12_1Btn = document.createElement('button');
+exchange_12_1Btn.innerText = "Exchange UAH to USD or EUR";
+exchange_12_1Btn.style = 'margin-bottom:20px';
+
+rootId.appendChild(task12block); 
+task12block.appendChild(task12_1title); 
+task12block.appendChild(exchange_12_1Btn); 
+let ratios = {
+    usd: 25.6,
+    eur: 29
+}
+exchange_12_1Btn.onclick = () => {
+   const toCurrency = prompt('Введите валюту, которую хотите купить: EUR или USD');
+    let fromAmount=null;
+    let toAmount = null;
+    if (toCurrency) {
+        switch (toCurrency.toLowerCase()) {
+            case 'usd':
+                fromAmount = prompt('Введите сумму в гривне');
+                toAmount = fromAmount / ratios['usd'];
+                break;
+            case 'eur':
+                fromAmount = prompt('Введите сумму в гривне');
+                toAmount = fromAmount / ratios['eur'];
+                break;
+            default: alert('Чет я не понял, попробуйте еще раз');
+                break;
+        }
+        
+        !fromAmount || alert(`На ${fromAmount} UAH вы можете приобрести ${Math.round(toAmount * 100) / 100} ${toCurrency.toUpperCase()} `);
+    }
+    else alert('Чет я не понял, попробуйте еще раз');      
+    }   
+    
+ const task12_2title = document.createElement('h2');
+task12_2title.innerText = 'Task-12-2 Сurrency calc: real data';
+const exchange_12_2Btn = document.createElement('button');
+exchange_12_2Btn.innerText = "Exchange UAH to USD or EUR";
+exchange_12_2Btn.style = 'margin-bottom:20px';
+
+task12block.appendChild(task12_2title); 
+task12block.appendChild(exchange_12_2Btn); 
+exchange_12_2Btn.onclick = () => {
+   let toCurrency = prompt('Введите валюту, которую хотите купить: EUR или USD');
+    let fromAmount=null;
+    let toAmount = null;
+    let currencyRatio = null;
+    if (toCurrency) {
+        toCurrency = toCurrency.toLowerCase();
+        if (toCurrency === 'usd' || toCurrency === 'eur') {
+            fromAmount = prompt('Введите сумму в гривне');
+            fetch(`https://open.er-api.com/v6/latest/${toCurrency}`).then(res => res.json())
+                .then(data => {
+                    toAmount = fromAmount / (data.rates.UAH);
+                    !fromAmount || alert(`На ${fromAmount} UAH вы можете приобрести ${Math.round(toAmount * 100) / 100} ${toCurrency.toUpperCase()} `)
+                })
+                 }
+            else alert('Чет я не понял, попробуйте еще раз');            
+            }
+    else alert('Чет я не понял, попробуйте еще раз');      
+    }   
+    }
+f12(root);
+export default f12;

+ 93 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-13.js

@@ -0,0 +1,93 @@
+// Дополнительное задание
+// Слепить все задания в один текст, таким образом чтобы вначале происходил ввод названия задания,
+//     каждое задание при этом находится в отдельном case оператора switch.
+//     Например case "currency calc" для калькулятора обмена валют.
+import f1 from "./task-01.js";
+import f2 from "./task-02.js";   
+import f3 from "./task-03.js";   
+import f4 from "./task-04.js";   
+import f5 from "./task-05.js";   
+import f6 from "./task-06.js";   
+import f7 from "./task-07.js";   
+import f8 from "./task-08.js";   
+import f9 from "./task-09.js";   
+import f10 from "./task-10.js";   
+import f11 from "./task-11.js";   
+import f12 from "./task-12.js";   
+import f14 from "./task-14.js";   
+           
+     
+const task13block = document.createElement('div');
+const task13title = document.createElement('h2');
+task13title.innerText = 'Task-13 Additional';
+const runTasksBtn = document.createElement('button');
+runTasksBtn.innerText = "Choose task to run";
+runTasksBtn.style = 'margin-bottom:20px';
+const taskListTitle = document.createElement("h3");
+taskListTitle.innerText = "Task list";
+const taskList = document.createElement("ul");
+
+
+
+taskList.innerHTML = "<li>Task 01: Comparison: sizes</il><li>Task 02: Switch: if</il><li>Task 03: Number: age</il><li>Task 04: Confirm: or this days</il><li>Task 05: Confirm: if this days</il><li>Task 06: Triple prompt</il><li>Task 07: Default: or</il><li>Task 08: Default: if</il><li>Task 09: Login and password</il><li>Task 10: Сurrency calc</il><li>Task 11: Scissors</il><li>Task 12: Сurrency calc blue belt</il><li>Task 14: Scissors black belt</il>";
+const taskCardWrapper = document.createElement('div');
+
+document.body.appendChild(task13block); 
+task13block.appendChild(task13title); 
+task13block.appendChild(runTasksBtn); 
+task13block.appendChild(taskListTitle); 
+task13block.appendChild(taskList); 
+
+task13block.appendChild(taskCardWrapper); 
+runTasksBtn.onclick = () => {
+    taskCardWrapper.innerHTML = '';
+    const taskNumber=prompt("Choose task number to run. Enter one of numbers: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 14")
+    const task13card = document.createElement('div');
+    task13card.style = 'border: 2px solid green; border-radius: 4px; padding:20px;';
+    taskCardWrapper.appendChild(task13card); 
+ 
+    switch (taskNumber) { 
+        case "01":
+            f1(task13card);
+            break;
+          case "02":            
+            f2(task13card);
+            break;
+        case "03":            
+            f3(task13card);
+            break;
+          case "04":            
+            f4(task13card);
+            break;
+          case "05":            
+            f5(task13card);
+            break;
+          case "06":            
+            f6(task13card);
+            break;
+          case "07":            
+            f7(task13card);
+            break;
+          case "08":            
+            f8(task13card);
+            break;
+          case "09":            
+            f9(task13card);
+            break;
+          case "10":            
+            f10(task13card);
+            break;
+        case "11":            
+            f11(task13card);
+            break;
+        case "12":            
+            f12(task13card);
+            break;
+        case "14":            
+            f14(task13card);
+        break;
+      default: alert("Задания с таким номером не найдено");
+        break;
+    }
+       
+} 

File diff suppressed because it is too large
+ 22 - 0
hw-js-02-types-expression-conditions-logic-homework/js/task-14.js


+ 8 - 0
hw-js-02-types-expression-conditions-logic-homework/readme.md

@@ -0,0 +1,8 @@
+Каждая задача в отдельном скрипте, чтобы удобнее было проверять.
+Выполнены все задачи на все пояса
+
+В конце страницы дополнительное задание на выбор задания (№13).
+Нажимаешь кнопку, вводишь число с номером задания и ниже отрисовывается это задание.
+
+Хостинг http://hw_js_02.olgapistryak.fe.a-level.com.ua/
+HW<НОМЕР> done