📘 CraftCode v0.1 — Полная документация
CraftCode — это упрощённый скриптовый язык, созданный специально для CraftOS.
Он был разработан для того, чтобы пользователи CraftOS могли самостоятельно создавать свои приложения, интерфейсы и небольшие программы прямо внутри системы.
Главная цель CraftCode:
- простота
- лёгкость в обучении
- понятный и логичный синтаксис
- возможность начать программировать без опыта
CraftCode специально сделан таким, чтобы каждый новичок мог понять,
как он работает и сразу начать использовать его в своих проектах.
Версии:
v0.2 — Редактируемый код, обновляемые объекты, улучшенная архитектура
v0.1 — первая стабильная документация
Дальше будет больше:
- новые функции
- оптимизация и мини-инструменты
Если ты видишь этот текст — проект жив и развивается.
Полная официальная документация:
🔧 Переменные
Локальные переменные (видны везде, включая функции)
var score = 0 // Число
var name = "Player" // Строка
var isActive = true // Булево значение
Глобальные переменные (просто присваивание)
myVariable = 42 // Глобальная переменная
score = 100 // Глобальная переменная
В чём разница:
- var создаёт переменную, которая видна во всём коде (рекомендуется)
- без var переменная глобальная и может конфликтовать
🎨 Создание UI элементов
Прямоугольник (Box)
createBox(x, y, width, height, "color")
// Пример:
createBox(100, 100, 80, 80, "red")
// С переменной:
var myBox = createBox(100, 100, 80, 80, "blue")
Круг (Circle)
createCircle(x, y, radius, "color")
// Пример:
createCircle(200, 200, 50, "green")
// С переменной:
var myCircle = createCircle(150, 150, 40, "yellow")
Текст (Text)
createText("текст", x, y, "color", size, id?) // id — опционально
// Простой текст:
createText("Hello CraftOS!", 150, 100, "white", 24)
// Обновляемый текст с ID:
createText("Score: 0", 150, 150, "white", 20, "scoreText")
// В функции обновляем:
function updateScore() {
// Создаёт новый или обновляет существующий объект с этим ID
createText("Score: 100", 150, 150, "white", 20, "scoreText")
}
// Новые возможности v0.2:
// - Идентификаторы для текстовых объектов
// - Автоматическое обновление существующего текста
// - Возможность обновлять текст без создания новых объектов
Кнопка (Button)
createButton("текст", x, y, "color", callback)
// Пример:
createButton("Click me", 150, 200, "green", onClick)
function onClick() {
createText("Clicked!", 150, 250, "white", 18)
}
Иконка (Icon)
createIcon("путь/к/иконке.jpg", x, y, size)
// Пример:
createIcon("icons/settings_icon.jpg", 100, 300, 60)
🖱️ События (Touch & Tap)
onTouch - Касание
var box = createBox(100, 100, 80, 80, "red")
onTouch(box, handleTouch)
function handleTouch() {
createText("Touched!", 100, 200, "white", 18)
}
onTap - Тап (клик)
var circle = createCircle(200, 200, 50, "blue")
onTap(circle, handleTap)
function handleTap() {
createText("Tapped!", 200, 300, "green", 18)
}
❌ Удаление объектов
var box = createBox(100, 100, 80, 80, "red")
remove(box) // Удаляет объект с экрана
🔀 Условия (If/Else)
if (score > 10) {
createText("High score!", 150, 300, "green", 20)
} else if (score > 5) {
createText("Good!", 150, 300, "yellow", 18)
} else {
createText("Keep going", 150, 300, "white", 16)
}
// Операторы сравнения:
> больше
< меньше
== равно
!= не равно
>= больше или равно
<= меньше или равно
🎨 Цвета
Предустановленные цвета
"red" // Красный
"green" // Зелёный
"blue" // Синий
"yellow" // Жёлтый
"white" // Белый
"black" // Чёрный
"purple" // Фиолетовый
"orange" // Оранжевый
"pink" // Розовый
"gray" // Серый
Кастомные RGB цвета
// Создание своего цвета:
createBox(100, 100, 80, 80, rgb(255, 100, 50))
// RGB цвет в переменной:
var myColor = rgb(100, 200, 255)
var box = createBox(150, 150, 80, 80, myColor)
// Примеры RGB цветов:
rgb(255, 0, 0) // Ярко-красный
rgb(0, 255, 0) // Ярко-зелёный
rgb(0, 0, 255) // Ярко-синий
rgb(255, 255, 0) // Жёлтый
rgb(255, 128, 0) // Оранжевый
rgb(128, 0, 255) // Фиолетовый
rgb(0, 255, 255) // Голубой
rgb(255, 192, 203) // Розовый
rgb(64, 64, 64) // Тёмно-серый
rgb(200, 200, 200) // Светло-серый
// Комбинированное использование:
// Строковый цвет
createBox(100, 100, 80, 80, "red")
// RGB цвет
createBox(200, 100, 80, 80, rgb(255, 0, 0))
// Цвет из переменной
var neonGreen = rgb(57, 255, 20)
createButton("Click", 150, 300, neonGreen, onClick)
📝 Комментарии
// Это комментарий - игнорируется при выполнении
🎮 Полные примеры приложений
Пример 1: Счётчик кликов (v0.2 с обновляемым текстом)
var score = 0
createText("Click Counter", 150, 50, "white", 28)
var button = createBox(150, 150, 100, 100, "green")
createText("Click!", 150, 150, "white", 20)
// Обновляемый текст с ID - текст не дублируется!
createText("Score: 0", 150, 250, "white", 20, "scoreText")
onTap(button, addScore)
function addScore() {
score = score + 1
// v0.2: создаёт новый или обновляет существующий текст с ID "scoreText"
createText("Score: " + score, 150, 250, "white", 20, "scoreText")
if (score > 10) {
createText("Amazing! Score: " + score, 150, 300, "yellow", 24)
}
}
Пример 2: Интерактивные фигуры
var score = 0
var redBox = createBox(100, 100, 80, 80, rgb(255, 50, 50))
var blueCircle = createCircle(250, 100, 40, rgb(50, 150, 255))
createText("Touch the shapes!", 150, 50, "white", 24)
onTouch(redBox, touchBox)
onTap(blueCircle, tapCircle)
function touchBox() {
score = score + 1
createText("Box +1", 100, 200, "red", 18)
}
function tapCircle() {
score = score + 5
createText("Circle +5", 250, 200, "blue", 18)
if (score > 20) {
createText("HIGH SCORE!", 150, 300, rgb(255, 215, 0), 28)
}
}
Пример 3: Калькулятор цветов
var red = 255
var green = 100
var blue = 50
// v0.2: Обновляемый предпросмотр цвета
var preview = createBox(150, 100, 150, 150, rgb(red, green, blue), "colorPreview")
createText("Color Mixer", 150, 30, "white", 24)
var btnRed = createButton("More Red", 150, 280, "red", addRed)
var btnGreen = createButton("More Green", 150, 330, "green", addGreen)
function addRed() {
red = red + 10
if (red > 255) {
red = 0
}
// v0.2: обновляем предпросмотр без создания нового объекта
preview = createBox(150, 100, 150, 150, rgb(red, green, blue), "colorPreview")
}
function addGreen() {
green = green + 10
if (green > 255) {
green = 0
}
preview = createBox(150, 100, 150, 150, rgb(red, green, blue), "colorPreview")
}
Пример 4: Локальные vs Глобальные переменные (v0.2)
// Локальные переменные (рекомендуется) - видны везде
var playerName = "Alex"
var health = 100
var level = 1
// Глобальные переменные (просто присваивание)
xp = 50 // Глобальная переменная
gold = 100 // Глобальная переменная
function levelUp() {
// Локальные переменные видны в функциях
level = level + 1
health = health + 10
// Глобальные тоже видны
xp = xp + level * 10
createText("Level: " + level, 150, 200, "yellow", 24, "levelText")
}
📌 Важные правила v0.2
✅ Каждая команда на новой строке
✅ Функции должны быть объявлены ДО использования
✅ Цвета-строки в кавычках: "red", а не red
✅ RGB без кавычек: rgb(255, 0, 0)
✅ Фигурные скобки {} обязательны для функций и условий
✅ Значения RGB от 0 до 255 (автоматически конвертируются)
✅ v0.2: Используй var для переменных (локальные)
✅ v0.2: Используй ID для текста, если нужно обновлять его
✅ v0.2: Теперь можно редактировать код прямо в редакторе!
✅ v0.2: Автоматическая очистка при переходе между сценами
🚀 Доступные иконки(Будут добавляться с обновлениями):
icons/settings_icon.jpg // Настройки
code_editor_icon.png // Редактор кода
// Больше иконок скоро...