/// /// Исходный код текстовой онлайн игры "Пример таблицы с разноцветными ячейками" скачан с сайта https://apero.ru/ /// Пройти онлайн или скачать последнюю версию этой игры можно по адресу: https://apero.ru/Текстовые-игры/Пример-таблицы-с-разноцветными-ячейками /// Авторы: Мастер Про /// Версия: от 2024-02-13 23:40:08 /// \запуск [table][tr][td=5][/td][td][color=orange]Пример таблицы с разноцветными ячейками разного размера и количества.[/color][/td][td=5][/td][/tr][/table] //таблицы бывают двух видов, [table][tr][td][/td][/tr][/table] и [tab]...[/tab], отличие в том что первый вид растягивается на всю страницу по ширине, а второй в зависимости от контента, выше используется таблица для выравнивания теста по центру. [color=green]Автор: Мастер Про[/color] //[color=название цвета green или его состовляющие #90ff00]сам текст[/color] \(старт, [color=#0090aa]Запустить пример "Таблица с разноцветными ячейками"[/color]) \СТОП \старт //массив ниже содержит 18 различных цветов, записанных в форме rgb, # — специальный символ, далее указывается "кол-во" красного, затем "кол-во" зеленого, а в конце "кол-во" синего, "кол-во" записывается в виде 2 символов в 16-й системе счисления, где 00 — "кол-во" цвета равно 0(если кол-во" всех трех цветов также равно 0, то ячейка будет черного цвета, ff — ячейка будет красная, зеленая или синия, если указать "кол-во" всех цветов как ff, то ячейка будет белого цвета, например, #ff0000 обозначает красный цвет, #00ff00 — зеленый, а #0000ff — синий цвет, #ffff00 — желтый цвет \(цветa=("#ff0000";"#00ff00";"#0000ff";"#00ffff";"#ff00ff";"#9000aa";"#509000";"#005090";"#900050";"#606000";"#006060";"#600060";"#303030";"#606060";"#909090";"#aa9000";"#00aa90";"#ffff00")) //определяем размеры таблицы \(количество_строк=АПЕРО.случайно(1;9)) //кол-во строк \(количество_столбцов=АПЕРО.случайно(1;9)) //кол-во столбцов \(было_соотношение=0) //НОВОЕ!// Сбрасывает соотношение высоты к ширине ячеек \(высота_строки=АПЕРО.случайно(20;60)) //высота строки \(ширина_столбца=АПЕРО.случайно(20;60)) //ширина столбца //цикл выбора цвета для каждой ячейки ниже \(цикл.выбора) //этот цикл выбирает для каждой ячейки случайный цвет \(таблицa.построение) //переход на локацию с таблицей \СТОП \цикл.выбора \ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ( \(счетчик_строк=счетчик_строк+1) //начинаем с первой строки, до присвоения переменная счетчика равна 0, после равна 0+1=1, далее будет равна 1+1=2 и тд. \ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов=счетчик_столбцов+1) //начинаем с первого столбца, до присвоения переменная счетчика равна 0, после равна 0+1=1 \(индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов)=АПЕРО.случайно(1;18))\) \(счетчик_столбцов=0)\) \(счетчик_строк=0) //переменные используются как счетчики, каждый шаг цикла присвает ячейке определенный цвет, затем переход на ячейку расположенную правее, (1;1—>1;9) после того, как достигает крайней правой ячейки переходит на одну ячейку вниз и начинает присваевать цвет с начала строки за счет того, что переменная счетчик_столбцов обнуляется (1;9—2;1), после прохода последней строки, обнуляется переменная счетчик_строк, чтобы цикл можно было использовать вновь \СТОП \таблицa.построение //цикл построения таблицы, переменные-счетчики счетчик_строк и счетчик_столбцов [tab=1]\ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ([tr=\(высота_строки)/*указываем высоту строки*/] \(счетчик_строк=счетчик_строк+1)\ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов=счетчик_столбцов+1) [td=\(ширина_столбца) /*указываем ширину столбца*/ \(цветa.номер\(индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов))) /* берем значение из массива(он нужен чтобы хранить цвета, вызов цвета через АПЕРО.случайно не будет хранить цвет ячейки) для ячейки с позицией (счетчик_строк;счетчик_столбцов)*/][/td]\)\(счетчик_столбцов=0)[/tr]\)[/tab]\(счетчик_строк=0) //цвет текста кнопки выбирается случайным образом, он не хранится в памяти. \(старт, [color=\(цветa.номер\(АПЕРО.случайно(1;17)))]Перегенерировать таблицу[/color]) \ФЛАЖОК(показ_функций, " Показывать дополнительные функции?") \(таблицa.построение, обновить) //представляет собой прямоугольник в котором ставится галочка, текст в кавычках показывается рядом с флажком, если галочка стоит, то переменная(первый параметр равна 1, если флажок пустой, то переменная равна 0) //присвоение переменной протсходит при обновлении/переходе, поэтому рядом сделана кнопка для обновления страницы \ЕСЛИ(показ_функций=1) \ТО(\(дополнительные функции)\) \СТОП \дополнительные функции //ниже используются локации с параметрами, в данных примерах, значения в скобках, например для локации "\(добавить1(1;0)" указывает на добавление строк(если 1, то строка добавится, если 0, то нет), также состоит дело и со столбцами, в данном примере добавится 1 строка снизу Добавить \(добавить1(1;0), [color=green]строку снизу,[/color]) \(добавить1(0;1), [color=blue]столбeц справа, [/color]) \(добавить1(1;1), [color=red]строку снизу и столбeц справа.[/color]) Добавить \(добавить2(1;0), [color=green]строку сверху,[/color]) \(добавить2(0;1), [color=blue]столбeц слева, [/color]) \(добавить2(1;1), [color=red] строку сверху и столбeц слева.[/color]) //ниже идут функции удаления строк и/или столбцов \ЕСЛИ(количество_строк>1 ИЛИ количество_столбцов>1) \ТО(Удалить\) \ЕСЛИ(количество_строк>1) \ТО (\(удалить1(1;0), [color=green]строку снизу[/color])\) \ЕСЛИ(количество_столбцов>1) \ТО(\(удалить1(0;1), [color=blue]столбeц справа[/color])\) \ЕСЛИ(количество_строк>1 И количество_столбцов>1) \ТО(\(удалить1(1;1), [color=red]строку снизу и столбeц справа[/color])\) \ЕСЛИ(количество_строк>1 ИЛИ количество_столбцов>1) \ТО(Удалить\) \ЕСЛИ(количество_строк>1) \ТО(\(удалить2(1;0), [color=green]строку сверху[/color])\) \ЕСЛИ(количество_столбцов>1) \ТО(\(удалить2(0;1), [color=blue]столбeц слева[/color])\) \ЕСЛИ(количество_строк>1 И количество_столбцов>1) \ТО(\(удалить2(1;1), [color=red]строку сверху и столбeц слева[/color])\) //функции ниже меняют соотношение сторон ячеек \ЕСЛИ(было_соотношение!=1) \ТО(\(соотношение(2;1),[color=green] Сделать прямоугольные ячейки (высота больше ширины)[/color])\) \ЕСЛИ(было_соотношение!=2) \ТО(\(соотношение(1;2),[color=blue] Сделать прямоугольные ячейки (ширина больше высоты)[/color])\) \ЕСЛИ(было_соотношение!=3) \ТО(\(соотношение(1;1),[color=red] Сделать квадратные ячейки (высота равна ширине)[/color])\) \СТОП \добавить1(строчки;столбики) \ЕСЛИ(строчки>0) \ТО( \(количество_строк=количество_строк+строчки) \ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов=счетчик_столбцов+1) \(индексы ячеек.номер\(количество_строк).номер\(счетчик_столбцов)=АПЕРО.случайно(1;18)) \) \(счетчик_столбцов=0) \) //добавляет строку с тем же количеством столбцов заполняет ячейки случайнымы цветами \ЕСЛИ(столбики>0) \ТО( \(количество_столбцов=количество_столбцов+столбики) \ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ( \(счетчик_строк=счетчик_строк+1) \(индексы ячеек.номер\(счетчик_строк).номер\(количество_столбцов)=АПЕРО.случайно(1;18)) \) \(счетчик_строк=0) \) //добавляет столбец, проходя по всем строчкам, выбирает цвет для него \(таблицa.построение) \СТОП \добавить2(строчки;столбики) \ЕСЛИ(строчки>0) \ТО( \(количество_строк=количество_строк+строчки) \(счетчик_строк=количество_строк) \ЦИКЛ(счетчик_строк>0) \СДЕЛАТЬ( \(счетчик_строк2=счетчик_строк-1) \ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов=счетчик_столбцов+1) \(индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов)=индексы ячеек.номер\(счетчик_строк2).номер\(счетчик_столбцов)) \) \(счетчик_строк=счетчик_строк-1) \(счетчик_столбцов=0) \) \(счетчик_строк=0) \(счетчик_строк2=0) \ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов=счетчик_столбцов+1) \(индексы ячеек.номер1.номер\(счетчик_столбцов)=АПЕРО.случайно(1;18)) \) \(счетчик_столбцов=0) \) //смещает существующие строки на 1 и добавляет строку слева \ЕСЛИ(столбики>0) \ТО( \(количество_столбцов=количество_столбцов+столбики) \(счетчик_столбцов=количество_столбцов) \ЦИКЛ(счетчик_столбцов>0) \СДЕЛАТЬ( \(счетчик_столбцов2=счетчик_столбцов-1) \ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ( \(счетчик_строк=счетчик_строк+1) \(индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов)=индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов2)) \) \(счетчик_столбцов=счетчик_столбцов-1) \(счетчик_строк=0) \) \(счетчик_столбцов=0) \(счетчик_столбцов2=0) \ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ( \(счетчик_строк=счетчик_строк+1) \(индексы ячеек.номер\(счетчик_строк).номер1=АПЕРО.случайно(1;18)) \) \(счетчик_строк=0) \) //смещает существующие столбцы на 1 и добавляет столбец сверху \(таблицa.построение) \СТОП \соотношение(высота;ширина) \ЕСЛИ(высота=ширина) \ТО( \(высота_строки=АПЕРО.дополнить(АПЕРО.корень(высота_строки*ширина_столбца))) \(ширина_столбца=высота_строки) \(было_соотношение=3) \) //делает ячейки квадратными \ЕСЛИ(высота=2*ширина) \ТО( \(высота_строки=АПЕРО.дополнить(АПЕРО.корень(высота_строки*ширина_столбца))+18) \ЕСЛИ(высота_строки>60) \ТО(\(высота_строки=60)\) \(ширина_столбца=высота_строки/2) \(было_соотношение=1) \) //изменяет соотношение высоты к ширине ячеек \ЕСЛИ(высота=0.5*ширина) \ТО( \(высота_строки=АПЕРО.дополнить(АПЕРО.корень(высота_строки*ширина_столбца))) \ЕСЛИ(высота_строки>30) \ТО(\(высота_строки=30)\) \(ширина_столбца=высота_строки*2) \(было_соотношение=2) \) //изменяет соотношение высоты к ширине ячеек \(таблицa.построение) \СТОП \удалить1(строчки;столбики) \ЕСЛИ(строчки>0) \ТО( \(количество_строк=количество_строк-1)\) \ЕСЛИ(столбики>0) \ТО( \(количество_столбцов=количество_столбцов-1)\) //данные не удаляются, смещается граница их использования, но при добавлении строки/столбца они будут заменены \(таблицa.построение) \СТОП \удалить2(строчки;столбики) \ЕСЛИ(строчки>0) \ТО( \(счетчик_строк=1) \ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ( \(счетчик_строк2=счетчик_строк+1) \ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов=счетчик_столбцов+1) \(индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов)=индексы ячеек.номер\(счетчик_строк2).номер\(счетчик_столбцов)) \) \(счетчик_строк=счетчик_строк+1) \(счетчик_столбцов=0) \) \(счетчик_строк=0) \(счетчик_строк2=0) \(количество_строк=количество_строк-строчки) \) //данные не удаляются, смещается граница их использования, но при добавлении строки/столбца они будут заменены \ЕСЛИ(столбики>0) \ТО( \(счетчик_столбцов=1) \ЦИКЛ(счетчик_столбцов<количество_столбцов) \СДЕЛАТЬ( \(счетчик_столбцов2=счетчик_столбцов+1) \ЦИКЛ(счетчик_строк<количество_строк) \СДЕЛАТЬ( \(счетчик_строк=счетчик_строк+1) \(индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов)=индексы ячеек.номер\(счетчик_строк).номер\(счетчик_столбцов2)) \) \(счетчик_столбцов=счетчик_столбцов+1) \(счетчик_строк=0) \) \(счетчик_столбцов=0) \(счетчик_столбцов2=0) \(количество_столбцов=количество_столбцов-столбики) \) //данные не удаляются, смещается граница их использования, но при добавлении строки/столбца они будут заменены \(таблицa.построение) \СТОП // Обновление от 13 февраля 2024 года 23:40, далее обновления не планируются