Complie info
ExecutableCreationTime:
7/26/2023 4:39:08AM
ExecutableLastWriteTime:
7/26/2023 4:39:08AM
ExecutableHashSHA256:
9EB15669EDDE760F5D70D9B03E70DA4F6D7668A070469BD5193B79FBA70920E5
SettingsHashSHA256:
B5736D12DBE9C0F7B10339229BD1ABE1D1C8BD0B7331973D5DF752D8B033293A
AppStartDate:
2023-07-27 03:08:49.174
StylesHash:
D874A857C9AE35986454587CF15ED802E0DA670AA6BCBF2B7311FA7D0367145E
ScriptsHash:
B2860447F9AF448ED6C9353FCAD64AB324ABFB5D42697A9CA3F1A2C9535129E8
AdditionalHeadContentHash:
CDB97F7F404FBF14B9786071235C8E643776E7B3C78B6A356497F4AFAF322B64
InfoMaterialThemeConfigStringHash:
328A79C3A8FC0C308FE5862A37595D7AA6A2511EDEA09D578D26D46D8751B07F
HtmlTextFormaterStringHash:
FDA2DF23F082D5B1946DD98B73E10CC29090B023D20BEEBF1B924301997FC0D1
HeaderHash:
32E97CCC90A1B0F0D42F16969725B3B6609EA18492A6CF6B8A43E824FA2D8EB7
FooterHash:
B8EA0644585A6D27C6B10FD167809CF1F1884EDC0374A494362B16876CE98B96
AdditionalMainDivContentHash:
D05224365F5F8632B8AC84C4032E59B7F61910A18D95DEB5F1C54140777D314C
Практичне заняття на якому ми з вами створимо гру текстовий квест.
Що таке 'Текстовий Квест'?
Текстові квести або текстові пригоди є видом ігор, де гравець взаємодіє з віртуальним світом, виконуючи дії за допомогою текстових команд і отримуючи відповіді у текстовому форматі.
Текстові квести або текстові пригоди є видом ігор, де гравець взаємодіє з віртуальним світом, виконуючи дії за допомогою текстових команд і отримуючи відповіді у текстовому форматі.
Текстові квести зазвичай мають загадковий або пригодницький сюжет. Гравець поступово розгадує загадки, знаходить вихід, вирішує проблеми та взаємодіє з різними персонажами чи об'єктами у віртуальному світі.
У текстових квестах гравець може використовувати текстові команди, наприклад "підійти до дверей", "відкрити сундук", "поговорити з чаклуном" і т. д. Гра реагує на ці команди, відображаючи нові описи ситуації, подій або задач, а також дозволяючи гравцю приймати рішення та впливати на подальший розвиток історії.
Текстові квести дають можливість розвивати логічне мислення, творчість та уяву, а також вдосконалювати навички програмування. Вони дозволяють гравцеві керувати персонажем та вирішувати завдання, спираючись на власні знання про різні концепції, такі як типи даних, умовні оператори та логічні вирази.
Як працюють текстові квести?
Як працюють текстові квести та основа програмна логіка яка використовується для їх створення.
Давайте почнемо з основної структури простого текстового квесту, використовуючи прапорці(flags), умовні оператори if-else та функції prompt() і console.log().
Перед тим, як перейти до прикладів, давайте спочатку з'ясуємо загальну структуру текстового квесту:
Ініціалізація змінних та початковий стан гри: Створення змінних, які будуть використовуватись для збереження поточного стану гри та прогресу гравця.
Опис ситуації та завдання: Виведення текстового опису ситуації, постановка завдання або запитання до гравця.
Введення команди: Запит від гравця ввести команду за допомогою
prompt(). Гравець може ввести текстову команду для взаємодії з грою.Перевірка умов: Використання умовних операторів
if-elseдля перевірки введеної команди та визначення подальшої дії в залежності від введеного значення.Зміна стану гри: Зміна значень змінних, оновлення стану гри в залежності від введеної команди та виконаних дій гравця.
Виведення результату: Використання
console.log()для виведення результату дій гравця, опису нової ситуації або відповіді на введену команду.Повторення: Повторення кроків 3-6 для наступних дій та взаємодій з грою до досягнення певної умови завершення гри.
Тепер давайте розглянемо простий приклад текстового квесту:
let playerHealth = 100;
let hasKey = false;
console.log("Ласкаво просимо до текстового квесту!");
console.log("Ви знаходитесь в кімнаті з двома дверима.");
console.log("Ваше завдання - знайти ключ і вибратись з кімнати.");
let userInput = prompt("Введіть команду: 'ліво' або 'право'");
if (userInput === "ліво") {
console.log("Ви зайшли в ліву кімнату.");
if (hasKey) {
console.log("Ви відкрили двері за допомогою ключа. Гра завершена!");
} else {
console.log("Двері закриті. Вам потрібен ключ, щоб їх відкрити.");
}
} else if (userInput === "право") {
console.log("Ви зайшли в праву кімнату.");
console.log("Ви знайшли ключ!");
hasKey = true;
} else {
console.log("Невідома команда. Спробуйте ще раз.");
}
У цьому прикладі гравець починає з початковим станом здоров'я 100 та прапорцем hasKey, який показує, чи має він ключ.
За допомогою console.log() виводиться опис ситуації та завдання гравця. Потім використовується prompt() для отримання команди від гравця.
За допомогою умовних операторів if-else перевіряється введена команда гравця та визначається подальша дія. Якщо гравець вибирає "ліво", перевіряється наявність ключа та відповідно виводиться відповідне повідомлення. Якщо гравець вибирає "право", він отримує ключ.
Зміна стану гри відбувається через оновлення значень змінних. Виведення результатів та нової ситуації відбувається за допомогою console.log().
Гравець може продовжувати вводити команди та взаємодіяти з грою до досягнення певної умови завершення.
Текстові квести легко розвивати, наприклад:
let playerHealth = 100;
let hasKey = false;
console.log('Ласкаво просимо до текстового квесту!');
console.log('Ви знаходитесь в кімнаті з двома дверима.');
console.log('Ваше завдання - знайти ключ і вибратись з кімнати.');
let userInput = prompt('Введіть команду: 'ліво' або 'право'');
if (userInput === 'ліво') {
console.log('Ви зайшли в ліву кімнату.');
if (hasKey) {
console.log('Ви відкрили двері за допомогою ключа. Гра завершена!');
} else {
console.log('Двері закриті. Вам потрібен ключ, щоб їх відкрити.');
}
} else if (userInput === 'право') {
console.log('Ви зайшли в праву кімнату.');
console.log('Ви знайшли ключ!');
hasKey = true;
} else {
console.log('Невідома команда. Спробуйте ще раз.');
}
userInput = prompt('Введіть команду: 'ліво' або 'право'');
if (userInput === 'ліво') {
console.log('Ви зайшли в ліву кімнату.');
if (hasKey) {
console.log('Ви відкрили двері за допомогою ключа. Гра завершена!');
} else {
console.log('Двері закриті. Вам потрібен ключ, щоб їх відкрити.');
}
} else if (userInput === 'право') {
console.log('Ви зайшли в праву кімнату.');
console.log('Ви знайшли ключ!');
hasKey = true;
} else {
console.log('Невідома команда. Спробуйте ще раз.');
}В зміненому коді додано можливість гравцеві спочатку піти вправо, а потім вліво. Це дозволяє гравцю отримати ключ, потрібний для відкриття дверей у лівій кімнаті, і таким чином виграти гру.
Тепер гравець має можливість спочатку піти вправо, знайти ключ, а потім, повернувшись назад в ліву кімнату, використати цей ключ для відкриття дверей. Таким чином, гравець може успішно завершити гру.
Приклад текстового квесту.
Цей код є текстовою грою або квестом, який імітує покупку продуктів у магазині. Основна мета гравця полягає в тому, щоб купити 3 літри молока та 2 буханки хліба за обмежений бюджетом.
let cash = 200; // Змінна для збереження кількості грошей гравця
let milk_count = 0; // Змінна для збереження кількості молока в інвентарі
let bread_count = 0; // Змінна для збереження кількості хліба в інвентарі
let inventory = ''; // Змінна для збереження предметів в інвентарі
alert('ВІДКРИЙТЕ КОНСОЛЬ!!!'); // Попередження про відкриття консолі
console.log('Ласкаво просимо до текстового квесту!'); // Виведення повідомлення у консоль
console.log('
'); // Виведення порожнього рядка у консоль
console.log('-----------------'); // Виведення розділювача у консоль
console.log('
'); // Виведення порожнього рядка у консоль
console.log('Ваша ціль: Купити молоко (3 літри) та хліб (2 буханки).'); // Виведення цілі гри у консоль
console.log(`Ваш бюджет: ${cash}грн.`); // Виведення кількості грошей гравця у консоль
let userInput = '' // Змінна для збереження введеного користувачем значення
console.log('Ви зайшли в магазин, перед вами 2 ряди продуктів.'); // Виведення повідомлення про вибір ряду у магазині у консоль
console.log('В який з цих рядів ви підете?'); // Виведення запитання про вибір ряду у магазині у консоль
userInput = prompt('Введіть команду: перший (перший/1/лівий) або другий (другий/2/правий)'); // Отримання введення користувача через вікно спливаючого повідомлення
console.log('
'); // Виведення порожнього рядка у консоль
if (userInput === 'перший' || userInput === '1' || userInput === 'лівий') {
// Якщо користувач обрав перший ряд або ввів 1 або 'лівий'
console.log('Ви зайшли в лівий ряд, ви бачите наступні продукти:');
console.log(' 1:Пакет цукерок(1кг)-250грн.');
console.log(' 2:Молоко(1.5л)-40грн.');
console.log(' 3:Цукор(1кг)-35грн.');
console.log(' 4:Нічого.');
let price1 = 250; // Ціна за пакет цукерок
let price2 = 40; // Ціна за молоко
let price3 = 35; // Ціна за цукор
let userInput1 = ''; // Ввід користувача (номер товару)
let userInput2 = ''; // Ввід користувача (кількість одиниць)
console.log('Введіть що та скільки одиниць ви бажаєте купити.');
userInput1 = prompt('Що купуємо(номер):');
if (userInput1 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з лівого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з лівого ряду.');
}
else {
userInput2 = prompt('Скільки(число):');
if (userInput2 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з лівого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з лівого ряду.');
}
else {
let nameOfGood = ''; // Назва товару
let final_price = 0; // Кінцева ціна
if (userInput1 == '1') {
nameOfGood = 'Цукерки';
final_price = price1 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '2') {
nameOfGood = 'Молоко';
final_price = price2 * parseInt(userInput2); //вирахування ціни
milk_count = milk_count + parseInt(userInput2); // Збільшити кількість молока
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '3') {
nameOfGood = 'Цукор';
final_price = price3 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
cash = cash - final_price; // Оновити залишок грошей
if (cash >= 0) {
console.log(`>>>>>>>Ви купили ${nameOfGood}, кількість:[${userInput2}], ціна:[${final_price}], залишок грошей:[${cash}].`);
}
else {
console.log('Ви витратили забагато грошей!');
console.log('Ви програли!');
throw new Error('ВИ ПРОГРАЛИ, ПЕРЕЗАГРУЗІТЬ СТОРІНКУ, ЩОБ ПОЧАТИ З ПОЧАТКУ!');
}
}
}
}
else if (userInput === 'другий' || userInput === '2' || userInput === 'правий') {
// Якщо користувач обрав другий ряд або ввів 2 або 'правий'
console.log('Ви зайшли в правий ряд, ви бачите наступні продукти:');
console.log(' 1:Хліб(буханка)-20грн.');
console.log(' 2:Печиво(1кг)-150грн.');
console.log(' 3:Сметана(250мл)-20грн.');
console.log(' 4:Нічого.');
let price1 = 20; // Ціна за хліб
let price2 = 150; // Ціна за печиво
let price3 = 20; // Ціна за сметану
let userInput1 = ''; // Ввід користувача (номер товару)
let userInput2 = ''; // Ввід користувача (кількість одиниць)
console.log('Введіть що та скільки одиниць ви бажаєте купити.');
userInput1 = prompt('Що купуємо(номер):');
if (userInput1 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з правого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з правого ряду.');
}
else {
userInput2 = prompt('Скільки(число):');
if (userInput2 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з правого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з правого ряду.');
}
else {
let nameOfGood = ''; // Назва товару
let final_price = 0; // Кінцева ціна
if (userInput1 == '1') {
nameOfGood = 'Хліб';
final_price = price1 * parseInt(userInput2); //вирахування ціни
bread_count = bread_count + parseInt(userInput2); // Збільшити кількість хліба
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '2') {
nameOfGood = 'Печиво';
final_price = price2 * parseInt(userInput2); //вирахування ціни
milk_count = milk_count + parseInt(userInput2); // Збільшити кількість печива
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '3') {
nameOfGood = 'Сметана';
final_price = price3 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
cash = cash - final_price; // Оновити залишок грошей
if (cash >= 0) {
console.log(`>>>>>>>Ви купили ${nameOfGood}, кількість:[${userInput2}], ціна:[${final_price}], залишок грошей:[${cash}].`);
}
else {
console.log('Ви витратили забагато грошей!');
console.log('Ви програли!');
throw new Error('ВИ ПРОГРАЛИ, ПЕРЕЗАГРУЗІТЬ СТОРІНКУ, ЩОБ ПОЧАТИ З ПОЧАТКУ!');
}
}
}
}
console.log('Ви вийшли з ряду, перед вами ті самі 2 ряди продуктів.'); // Виведення повідомлення про вибір ряду у магазині у консоль
console.log('В який з цих рядів ви підете?'); // Виведення запитання про вибір ряду у магазині у консоль
userInput = prompt('Введіть команду: перший (перший/1/лівий) або другий (другий/2/правий)'); // Отримання введення користувача через вікно спливаючого повідомлення
console.log('
'); // Виведення порожнього рядка у консоль
if (userInput === 'перший' || userInput === '1' || userInput === 'лівий') {
// Якщо користувач обрав перший ряд або ввів 1 або 'лівий'
console.log('Ви зайшли в лівий ряд, ви бачите наступні продукти:');
console.log(' 1:Пакет цукерок(1кг)-250грн.');
console.log(' 2:Молоко(1.5л)-40грн.');
console.log(' 3:Цукор(1кг)-35грн.');
console.log(' 4:Нічого.');
let price1 = 250; // Ціна за пакет цукерок
let price2 = 40; // Ціна за молоко
let price3 = 35; // Ціна за цукор
let userInput1 = ''; // Ввід користувача (номер товару)
let userInput2 = ''; // Ввід користувача (кількість одиниць)
console.log('Введіть що та скільки одиниць ви бажаєте купити.');
userInput1 = prompt('Що купуємо(номер):');
if (userInput1 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з лівого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з лівого ряду.');
}
else {
userInput2 = prompt('Скільки(число):');
if (userInput2 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з лівого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з лівого ряду.');
}
else {
let nameOfGood = ''; // Назва товару
let final_price = 0; // Кінцева ціна
if (userInput1 == '1') {
nameOfGood = 'Цукерки';
final_price = price1 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '2') {
nameOfGood = 'Молоко';
final_price = price2 * parseInt(userInput2); //вирахування ціни
milk_count = milk_count + parseInt(userInput2); // Збільшити кількість молока
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '3') {
nameOfGood = 'Цукор';
final_price = price3 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
cash = cash - final_price; // Оновити залишок грошей
if (cash >= 0) {
console.log(`>>>>>>>Ви купили ${nameOfGood}, кількість:[${userInput2}], ціна:[${final_price}], залишок грошей:[${cash}].`);
}
else {
console.log('Ви витратили забагато грошей!');
console.log('Ви програли!');
throw new Error('ВИ ПРОГРАЛИ, ПЕРЕЗАГРУЗІТЬ СТОРІНКУ, ЩОБ ПОЧАТИ З ПОЧАТКУ!');
}
}
}
}
else if (userInput === 'другий' || userInput === '2' || userInput === 'правий') {
// Якщо користувач обрав другий ряд або ввів 2 або 'правий'
console.log('Ви зайшли в правий ряд, ви бачите наступні продукти:');
console.log(' 1:Хліб(буханка)-20грн.');
console.log(' 2:Печиво(1кг)-150грн.');
console.log(' 3:Сметана(250мл)-20грн.');
console.log(' 4:Нічого.');
let price1 = 20; // Ціна за хліб
let price2 = 150; // Ціна за печиво
let price3 = 20; // Ціна за сметану
let userInput1 = ''; // Ввід користувача (номер товару)
let userInput2 = ''; // Ввід користувача (кількість одиниць)
console.log('Введіть що та скільки одиниць ви бажаєте купити.');
userInput1 = prompt('Що купуємо(номер):');
if (userInput1 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з правого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з правого ряду.');
}
else {
userInput2 = prompt('Скільки(число):');
if (userInput2 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з правого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з правого ряду.');
}
else {
let nameOfGood = ''; // Назва товару
let final_price = 0; // Кінцева ціна
if (userInput1 == '1') {
nameOfGood = 'Хліб';
final_price = price1 * parseInt(userInput2); //вирахування ціни
bread_count = bread_count + parseInt(userInput2); // Збільшити кількість хліба
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '2') {
nameOfGood = 'Печиво';
final_price = price2 * parseInt(userInput2); //вирахування ціни
milk_count = milk_count + parseInt(userInput2); // Збільшити кількість печива
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '3') {
nameOfGood = 'Сметана';
final_price = price3 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
cash = cash - final_price; // Оновити залишок грошей
if (cash >= 0) {
console.log(`>>>>>>>Ви купили ${nameOfGood}, кількість:[${userInput2}], ціна:[${final_price}], залишок грошей:[${cash}].`);
}
else {
console.log('Ви витратили забагато грошей!');
console.log('Ви програли!');
throw new Error('ВИ ПРОГРАЛИ, ПЕРЕЗАГРУЗІТЬ СТОРІНКУ, ЩОБ ПОЧАТИ З ПОЧАТКУ!');
}
}
}
}
let isWin = milk_count >= 3 && bread_count >= 2; // Змінна для перевірки, чи гравець переміг у грі шляхом покупки достатньої кількості молока та хліба
console.log('
'); // Виведення двох порожніх рядків у консоль
if (isWin) {
console.log('Ви виграли!'); // Виведення повідомлення про перемогу у консоль
console.log(`Ви купили ${milk_count} пакетів молока та ${bread_count} буханок хліба!`); // Виведення повідомлення про кількість придбаних продуктів у консоль
console.log('Ваш інвентар: ' + inventory); // Виведення повідомлення про інвентар гравця у консоль
console.log('Залишок грошей: ' + cash); // Виведення повідомлення про залишок грошей гравця у консоль
} else {
console.log('Ви програли!'); // Виведення повідомлення про програш у консоль
console.log('Ваш інвентар: ' + inventory); // Виведення повідомлення про інвентар гравця у консоль
console.log('Залишок грошей: ' + cash); // Виведення повідомлення про залишок грошей гравця у консоль
}Цей код є текстовою грою або квестом, який імітує покупку продуктів у магазині. Основна мета гравця полягає в тому, щоб купити 3 літри молока та 2 буханки хліба за обмежений бюджетом.
У грі використовуються змінні, такі як cash (бюджет гравця), milk_count (кількість купленого молока), bread_count (кількість купленого хліба) та inventory (інвентар, в якому зберігаються придбані продукти).
Код використовує console.log для виведення текстових повідомлень у консоль, а prompt для отримання введення від гравця.
Гра розділена на два ряди продуктів у магазині: лівий та правий. Гравець вибирає, в який ряд він піде, вводячи відповідну команду. Залежно від вибору ряду, гравець бачить список продуктів, їх ціну і може вказати, що і скільки він хоче купити.
Після кожного покупця кількість грошей оновлюється, а рядок з придбаними продуктами додається до інвентаря.
Якщо гравець витрачає більше грошей, ніж у нього є, гра завершується і виводиться відповідне повідомлення про програш.
Код повторюється, дозволяючи гравцю знову вибрати ряд та здійснити покупку. Цей процес продовжується до тих пір, поки гравець не купить необхідну кількість молока та хліба, або не вирішить припинити гру.
Вся інформація про покупки зберігається в змінних, і гравець може переглянути свій інвентар, виведений у консолі.
Детальний розгляд коду:
Цей код використовується для ініціалізації змінних та присвоєння їм початкових значень.
let cash = 200;: Зміннаcashініціалізується зі значенням 200, що представляє кількість грошей гравця.let milk_count = 0;: Зміннаmilk_countініціалізується зі значенням 0, що представляє кількість молока в інвентарі гравця.let bread_count = 0;: Зміннаbread_countініціалізується зі значенням 0, що представляє кількість хліба в інвентарі гравця.let inventory = "";: Зміннаinventoryініціалізується зі значенням пустого рядка, що означає, що на даний момент інвентар гравця порожній.
Цей код створює необхідні змінні та встановлює початкові значення, які можуть використовуватись у подальшому коді для збереження інформації про гроші гравця, кількість молока та хліба в інвентарі та предмети, що знаходяться в інвентарі.
let userInput = '' // Змінна для збереження введеного користувачем значенняCтворює змінну з іменем userInput і присвоює їй значення, що представляє введення користувачем. У цьому випадку, значення змінної userInput початково не визначено, тому воно є порожнім рядком ("").
Використовуватись для отримання введення від користувача та збереження його для подальшого використання в програмі. Коли користувач вводить які-небудь дані, ці дані можна присвоїти змінній userInput, щоб їх зберегти і обробити пізніше у коді.
Наприклад, після цього фрагмента коду можна використовувати змінну userInput для перевірки введених даних, обчислень або передачі їх до інших функцій чи модулів у програмі. Значення userInput може бути зміненим пізніше використанням методів вводу даних, таких як prompt() у веб-браузерах або функцій readline в середовищах виконання JavaScript.
let price1 = 250; // Ціна за пакет цукерок
let price2 = 40; // Ціна за молоко
let price3 = 35; // Ціна за цукор
let userInput1 = ''; // Ввід користувача (номер товару)
let userInput2 = ''; // Ввід користувача (кількість одиниць)Визначає кілька змінних та ініціалізує їх значення. Надалі, ці змінні можуть використовуватись для обчислення вартості товарів у магазині на основі введених користувачем даних.
Детальний розбір коду:
- Змінна
price1ініціалізується значенням 250. Ця змінна представляє ціну за пакет цукерок. - Змінна
price2ініціалізується значенням 40. Ця змінна представляє ціну за молоко. - Змінна
price3ініціалізується значенням 35. Ця змінна представляє ціну за цукор. - Змінна
userInput1ініціалізується пустим рядком. Ця змінна буде використовуватись для отримання введення користувача щодо номеру товару. - Змінна
userInput2ініціалізується пустим рядком. Ця змінна буде використовуватись для отримання введення користувача щодо кількості одиниць товару.
У цьому коді змінні price1, price2 і price3 встановлюють ціни на різні товари, які магазин пропонує. Змінні userInput1 і userInput2 призначені для зберігання введених користувачем даних. Ці змінні можуть бути використані для подальших обчислень, наприклад, для розрахунку загальної вартості покупки на основі вибраного товару та його кількості.
if (userInput1 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з лівого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з лівого ряду.');
}Цей код перевіряє, чи введений користувачем рядок (userInput1) дорівнює "0". Якщо умова виконується (тобто користувач ввів "0"), то виконується наступний блок коду.
У цьому блоку виводиться повідомлення у консоль: "Ви вирішили нічого не купляти, ви виходите з лівого ряду." Це означає, що якщо користувач вводить "0", то програма повідомляє йому, що він не бажає купувати нічого і виходить з лівого ряду.
Отже, цей код перевіряє введене значення користувача і виконує певні дії залежно від результату порівняння. У даному випадку, якщо введений рядок дорівнює "0", програма виводить повідомлення у консоль.
else {
userInput2 = prompt('Скільки(число):');
if (userInput2 == '0') {
// Якщо користувач ввів 0, то він не бажає купувати нічого і виходить з лівого ряду
console.log('Ви вирішили нічого не купляти, ви виходите з лівого ряду.');
}
else {
let nameOfGood = ''; // Назва товару
let final_price = 0; // Кінцева ціна
if (userInput1 == '1') {
nameOfGood = 'Цукерки';
final_price = price1 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '2') {
nameOfGood = 'Молоко';
final_price = price2 * parseInt(userInput2); //вирахування ціни
milk_count = milk_count + parseInt(userInput2); // Збільшити кількість молока
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
else if (userInput1 == '3') {
nameOfGood = 'Цукор';
final_price = price3 * parseInt(userInput2); //вирахування ціни
inventory = inventory + `${nameOfGood}(${userInput2}),`; // Додати товар до інвентаря
}
cash = cash - final_price; // Оновити залишок грошей
if (cash >= 0) {
console.log(`>>>>>>>Ви купили ${nameOfGood}, кількість:[${userInput2}], ціна:[${final_price}], залишок грошей:[${cash}].`);
}
else {
console.log('Ви витратили забагато грошей!');
console.log('Ви програли!');
throw new Error('ВИ ПРОГРАЛИ, ПЕРЕЗАГРУЗІТЬ СТОРІНКУ, ЩОБ ПОЧАТИ З ПОЧАТКУ!');
}
}
}В даному коді ми маємо блок else, що виконується, якщо умова в попередньому if не була виконана. Це означає, що користувач не вибрав опцію "0" (тобто не вирішив нічого не купувати) і ми продовжуємо виконання програми.
У цьому блоку ми маємо декілька умовних операторів if/else if для перевірки значення змінної userInput1, яка вказує на вибрану користувачем опцію.
У першому умовному операторі
ifперевіряється, чи вибрана опція "1". Якщо це так, то зміннійnameOfGoodприсвоюється значення "Цукерки", а зміннаfinal_priceобчислюється шляхом помноження ціниprice1на ціле число, яке отримується зuserInput2(введене користувачем число). Крім того, товар додається до інвентарю, який представлений рядкомinventory, і ціна товару віднімається від доступних грошейcash. Якщо залишок грошей після покупки дорівнює або більший за нуль, виводиться повідомлення про покупку, вказуючи назву товару, кількість, ціну та залишок грошей. В іншому випадку, якщо залишок грошей від'ємний, виводиться повідомлення про те, що користувач витратив забагато грошей, та викидається помилка, яка пропонує перезавантажити сторінку.У наступному умовному операторі
else ifперевіряється, чи вибрана опція "2". Якщо це так, то процес виконується аналогічно попередньому блокуif, з використанням зміннихprice2таmilk_countдля обчислення кінцевої ціни та збільшення кількості молока відповідно.У третьому умовному операторі
else ifперевіряється, чи вибрана опція "3". Якщо це так, то процес виконується аналогічно попередньому блокуif, але з використанням зміннихprice3та без змін кількості продукту.
У кінці блоку коду ми також перевіряємо, чи достатньо грошей, щоб продовжити покупки, тобто чи cash більше або дорівнює нулю. Якщо це так, то гра продовжується і знову пропонується вибрати ряд товарів. Якщо грошей недостатньо (cash від'ємний), то виводиться повідомлення про програш, кидається помилка і гра завершується.
let isWin = milk_count >= 3 && bread_count >= 2; // Змінна для перевірки, чи гравець переміг у грі шляхом покупки достатньої кількості молока та хліба
console.log('
'); // Виведення двох порожніх рядків у консоль
if (isWin) {
console.log('Ви виграли!'); // Виведення повідомлення про перемогу у консоль
console.log(`Ви купили ${milk_count} пакетів молока та ${bread_count} буханок хліба!`); // Виведення повідомлення про кількість придбаних продуктів у консоль
console.log('Ваш інвентар: ' + inventory); // Виведення повідомлення про інвентар гравця у консоль
console.log('Залишок грошей: ' + cash); // Виведення повідомлення про залишок грошей гравця у консоль
} else {
console.log('Ви програли!'); // Виведення повідомлення про програш у консоль
console.log('Ваш інвентар: ' + inventory); // Виведення повідомлення про інвентар гравця у консоль
console.log('Залишок грошей: ' + cash); // Виведення повідомлення про залишок грошей гравця у консоль
}Цей код перевіряє, чи гравець переміг у грі шляхом покупки достатньої кількості молока та хліба. Основна логіка коду полягає в перевірці значення змінної isWin. Для цього використовується умовний оператор if.
У рядку let isWin = milk_count >= 3 && bread_count >= 2;, значення змінної isWin обчислюється за допомогою логічного оператора &&. Цей оператор перевіряє, чи кількість milk_count більше або дорівнює 3 і кількість bread_count більше або дорівнює 2. Якщо обидві умови виконуються, то isWin отримує значення true, в іншому випадку - false.
Наступні рядки виводять різні повідомлення у консоль залежно від значення isWin. Якщо isWin має значення true, тобто гравець переміг, виводяться наступні повідомлення:
- "Ви виграли!"
- Повідомлення про кількість придбаних продуктів у форматі: "Ви купили [кількість молока] пакетів молока та [кількість хліба] буханок хліба!"
- Повідомлення про інвентар гравця у форматі: "Ваш інвентар: [inventory]"
- Повідомлення про залишок грошей гравця у форматі: "Залишок грошей: [cash]"
Якщо isWin має значення false, тобто гравець програв, виводяться наступні повідомлення:
- "Ви програли!"
- Повідомлення про інвентар гравця у форматі: "Ваш інвентар: [inventory]"
- Повідомлення про залишок грошей гравця у форматі: "Залишок грошей: [cash]"
Таким чином, цей код перевіряє, чи гравець переміг у грі шляхом покупки достатньої кількості молока та хліба, і виводить відповідне повідомлення у консоль.