Продажа зелья
Часть раздела Основы путешествия по Lua на Coddy. Урок 82 из 90.
Задание
ЛегкоЗавершите проект магазина зелий, реализовав систему проведения продаж. Опираясь на уже созданный поиск, создайте систему, которая обрабатывает продажу зелья, уменьшая его запас и подтверждая транзакцию.
Будут предоставлены следующие входные данные:
- Строка с названием зелья для продажи
Замените вывод Found, Price и Stock из предыдущего шага обработкой продажи, чтобы выводились только две приведённые ниже строки. Прочитайте название зелья одним вызовом io.read(): при каждом запуске поступает одна строка входных данных.
Используйте числовой цикл for, чтобы пройти по таблице inventory и найти указанное зелье. Найдя подходящее зелье с помощью оператора равенства ==, уменьшите значение stock на 1, чтобы смоделировать продажу.
После обновления запаса выведите подтверждающее сообщение с названием зелья и его новым уровнем запаса в следующем формате:
Sold 1 [potion name]
Remaining stock: [new stock count]Используйте конкатенацию строк, чтобы объединить описательный текст с названием зелья и обновлённым количеством в запасе. После обработки продажи используйте оператор break, чтобы выйти из цикла.
Попробуйте сами
-- Inventory table with potion data
inventory = {
{name = "Health Potion", price = 15, stock = 8},
{name = "Mana Potion", price = 12, stock = 5},
{name = "Strength Potion", price = 25, stock = 3},
{name = "Speed Potion", price = 18, stock = 2}
}
-- Read the potion name to search for
search_name = io.read()
-- Use a numeric for loop to search through the inventory
for i = 1, #inventory do
if inventory[i].name == search_name then
print("Found: " .. inventory[i].name)
print("Price: " .. inventory[i].price .. " gold")
print("Stock: " .. inventory[i].stock .. " units")
break
end
endВсе уроки раздела Основы
4Операторы 2: Сравнение и логика
Операторы равенстваОператоры сравненияОператор 'and'Оператор 'or'Оператор 'not'Сокращенные вычисленияЗначения Truthy и FalsyИтоги: Простая логика7Основы условной логики
Оператор if-thenОператор if-then-elseОператор elseifИтоги — Сундук с сокровищами10Таблицы, часть 1: Списки
Что такое таблица?Создание таблицыДоступ к элементам по индексуИзменение элементов по индексуОператор длины '#'table.insert()table.remove()Итоги: управление участниками группы13Проект: Простой магазин зелий
Настройка проектаДобавление зелья2Переменные и типы данных
Что такое переменная?ЧислаСтрокиБулевы значенияЗначение 'nil'Функция type()Правила именованияИтоги — Профиль персонажа5Базовый вывод
Вывод литераловВывод переменныхВывод нескольких значенийОбъединение строк и переменныхФункция tostring()ВводПриведение типовПовторение — Отчет о состоянииПовторение — До 1208Основы работы со строками
string.len()string.upper и string.lowerstring.sub()string.rep()string.find()Повторение — Форматирование имени пользователя3Операторы 1: Арифметика и конкатенация
Арифметические операторыОператор остатка от деленияОператор возведения в степеньКонкатенация строкПриоритет операторовПовторение: Простые вычисления6Проект: Вывод характеристик персонажа
Приветственное сообщениеОбъявление характеристик персонажа9Основы функций
Объявление функцииВызов функцииФункции с параметрамиФункции с несколькими параметрамиОператор 'return'Повторение — Калькулятор площадиПотренируйтесь самостоятельно: Онлайн-компилятор Lua