Материал из Скретч Вики

Версия от 18:36, 25 января 2023; Gohoski (обсуждение | вклад) (перевод scratchblocks на русский + Шаблон:Перевести)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)


Интернациональная Вики.png В другой языковой вики есть более полная страница Сохранение в облаке.
Вы можете помочь Скретч Вики, докончив перевод.

Шифрование облачных переменных — процесс преобразования нечисловых данных и списков в числовой формат, пригодный для облака. Обычно используется для создания списков победителей или в многопользовательских играх.

Пример «Список победителей»

Что нужно для создания

Нам понадобятся несколько переменных. Все названия приведены в пример, однако, если их заменить, то нужно заменить названия и в скриптах ниже.

(символы)
(i)
(i2)
(i3)
(☁ data)

Ещё нам понадобится список пользователей в виде списка, например, пользователи.

Шифрование

Для начала поочерёдно возьмём элементов массива, разделим их каким-нибудь разделителем, например, 00 и преобразуем всё в числовой формат (например, в двузначные числа).

В примере элементы разделены с помощью 00. Такой разделитель используется, потому что в позиции 0 нет ничего. После шифровки у нас получится длинное число, пригодное для облачной переменной. Все замены представлены в переменной символы. Мы будем заменять символы на их позицию в переменной. В примере для зашифровки буквы b будет использовано число 12.

когда щёлкнут по зелёному флагу
задать [символы v] значение [0123456789abcdefghijklmnopqrstuvwxyz]

определить зашифровать
задать [i v] значение [0]
задать [☁ data v] значение []
повторить (длина списка [пользователи v]) раз 
  изменить [i v] на (1)
  задать [i2 v] значение [0]
  повторить (длина (элемент (i) в [пользователи v])) раз 
    изменить [i2 v] на (1)
    задать [i3 v] значение [0]
    повторять пока не <(буква (i2) в (элемент (i) в [пользователи v])) = (буква (i3) в (z))> 
      изменить [i3 v] на (1)
    end
    если <(i3) < [10]> , то 
      задать [☁ data v] значение (объединить (☁ data) (объединить [0] (i3)))
    иначе 
      задать [☁ data v] значение (объединить (☁ data) (i3))
    end
  end
  задать [☁ data v] значение (объединить (☁ data) [00])
end

Расшифровка

определить расшифровать
задать [i v] значение [1]
удалить (все v) из [пользователи v]
добавить [] к [пользователи v]
повторить ((длина (☁ data)) / (2)) раз 
  если <(объединить (буква (i) в (☁ data)) (буква ((i) + (1)) в (☁ data))) = [00]> , то 
    добавить [] к [пользователи v]
  иначе 
    заменить элемент (last v) в [пользователи v] на (объединить (элемент (last v) в [пользователи v]) (буква (объединить (буква (i) в (☁ data)) (буква ((i) + (1)) в (☁ data))) в (символы)))
  end
  изменить [i v] на (2)
end
удалить (last v) из [пользователи v]

См. также

Cookie-файлы помогают нам предоставлять наши услуги. Используя наши сервисы, вы соглашаетесь с использованием cookie-файлов.