Это, Titanoboa - язык программирования понятный и для машины, и для человека. Это делает язык быстрым, и в то же время понятным. Автор - Kisel13.
В релизах, найдите самый новый и скачайте windows.zip
Установите Java (Если нужно)
Закиньте файлы из архива в C:\Titanoboa\
Запустите CMD от имени администратора.
Введите:
assoc .boa=Titanoboa
ftype Titanoboa="C:\Titanoboa\boa.bat" "%1"
Warning
На Android не работет модуль canvas!
В последнем релизе, скачайте boa.jar.
Создайте в downloads папку boa, а потом закиньте в неё boa.jar.
Затем поставьте Termux, лучше всего из f-droid.
В Termux по порядку пропишите эти команды:
pkg install openjdk-17 (Не забудте согласиться на установку.)
termux-setup-storage (Нужно вводить каждый раз при перезаходе в Termux. При первом вводе дайте разрешение.)
cd storage/downloads/boa/
Теперь, в любом текстовом редакторе напишите скрипт на Titanoboa. Сохраните скрипт там же где и boa.jar. Для запуска скрипта напишите:
java - jar boa.jar скрипт.boa
Установите JRE через терминал. В разных ОС по-разному.
Скачайте boa.jar из последнего релиза.
Закиньте в любую папку (Лучше всего в папку вашего пользователя).
По сути все!
Вся суть обновления заключается в замене старого boa.jar на новый.
Для того чтобы запустить скрипт, просто откройте его. Редактировать можно в любых редакторах, но в NotePad++ есть синтаксис.
Для запуска скрипта напишите:
java - jar boa.jar скрипт.boa
Перед этим убедитесь что вы прописали termux-setup-storage, и находитесь в storage/downloads/boa/
Редактировать можно в любых редакторах.
Для запуска скрипта напишите:
java - jar boa.jar скрипт.boa
Перед этим убедитесь что вы находитесь в папке, где у вас boa.jar.
Редактировать можно в любых редакторах.
Ниже приведена документация по языку.
//строковый
/*
блочный
*/
Переменные объявляются легко, писать тип данных не надо. Пример:
a = 10
b = "Hello"
print a
print b
Вывод:
10
Hello
Можно создать массив и манипулировать им. Отсчет начинается с нуля. Пример:
abc = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
print abc
print abc[10] + abc[20]
Вывод:
[a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
ku
Создаются через функцию newarray. От количества аргументов зависит то, скольки-мерным будет массив, сами аргументы, размер массива по этой оси. Пример:
x = newarray(5, 5)
x[3][2] = "a"
print x
print x [3][2]
Вывод:
[[0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, a, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0]]
a
Выводит значение переменной или текст с новой строки. Пример:
x = "blablabla"
print x
print "Hello, world!"
Вывод:
blablabla
Hello, world!
Простейшие арифметические действия. Также можно складывать и умножать строки. Пример:
print 1 + 1
print 2 - 1
print 10 * 10
print 100 / 2
Вывод:
2
1
100
50
Операторы сравнения. Также можно сравнивать строки. Таблица:
Оператор | Действие |
---|---|
== | Равно |
> | Больше |
< | Меньше |
<= | Меньше или равно |
>= | Больше или равно |
!= | Не равно |
Выполняет код если условие верно. Пример:
if (x == 9) {
print "x это 9"
}
Выполняет код если условие верно. Пример:
if (x == 9) {
print "x это 9"
} else {
print "x не 9"
}
Выполняет код если условие верно. Пример:
if (x == 9) {
print "x это 9"
} else if (x = 10) {
print "x не 9, x это 10"
}
Выполняет код по кругу пока условие верно. Пример
i = 1
while (i < 10) {
print(i)
i = i + 1
}
Вывод:
1
2
3
4
5
6
7
8
9
10
Выполняет код по кругу пока условие верно. Пример:
do {
print i
i = i + 1
} while (i < 10)
Вывод:
1
2
3
4
5
6
7
8
9
10
Первый параметр в for это счётчик, переменная которая обычно хранит то сколько раз цикл выполнился, второй это условие при котором цикл продолжится, третий - шаг, обычно увеличение счётчика. В скобках{} код, который будет выполняться по кругу. Пример:
for (i = 0, i < 10, i = i + 1) {
print i
}
Вывод:
1
2
3
4
5
6
7
8
9
10
Прерывает цикл даже если условия выполняются.
Пропускает все следующие команды в цикле, заново проверяя условие, и выполняя его.
Импорт модулей. Пример:
use "math"
Объявление функций. Функции бывают двух типов - возвращающая(возвращает значения через return) и void(ничего не возвращает). Пример:
//Возвращающая
def sum(a, b) {
return a + b
}
//Void
def summ(a, b) {
print a + b
}
Вы можете использовать возвращающую функцию везде, так же, как переменную. Пример:
print sum(10, 15)
Вызвать void функцию можно так:
summ(10, 15)
если функция не принимает на вход значений:
func()
newarray - описана в многомерные массивы.
rand(от, до) - возвращает случайное число в определённом диапазоне. Пример:
print rand (0, 100)
echo - выводит несколько значений в одну строчку. Пример:
x = 10
echo ("x =", x)
Вывод:
x = 10.0
input(Текст поля) - возвращает то что написал пользователь. Пример:
x = input("Ввод: ") //Строка
z = toInt(input("Ввод: ")) //Число
print x
print z
wait - останавливает программу пока пользователь не нажмёт enter.
exit - завершает программу.
about - выводит короткое описание языка.
sleep(Время) - останавливает программу на определённое значение миллисекунд поданное на вход.
thread - мега крутая штука, которая позволяет выполнять какую то функцию параллельно другому коду.
toInt(Строка) - преобразовывает строку в число (Если возможно).
toString(Число) - преобразовывает число в строку.
trim(Строка) - (Зачем-то) убирает пробелы в начале и конце строки.
Математика
abs - Возвращает абсолютное значение числа.
cos - Возвращает косинус угла в радианах.
sin - Возвращает синус угла в радианах.
sqrt - Возвращает квадратный корень числа.
toDegrees - Преобразует угол из радианов в градусы.
toRadians - Преобразует угол из градусов в радианы.
pow - Возводит число в указанную степень.
atan2 - Возвращает арктангенс угла между двумя координатами.
PI - Константа, представляющая число π (пи).
E - Константа, представляющая число e (основание натурального логарифма).
Холст, геометрические фигуры, окна.
window - Создает графическое окно с заданными параметрами. Аргументы: (опционально) название окна, ширина, высота.
prompt - То же что и input(), только созадёт графичесское окно ввода.
keypressed - Возвращает последнюю нажатую клавишу (код клавиши) или -1, если ни одна клавиша не была нажата. Коды:
Код | Кнопка |
---|---|
VK_UP | Стрелка вверх |
VK_DOWN | Стрелка вниз |
VK_LEFT | Стрелка влево |
VK_RIGHT | Стрелка вправо |
VK_FIRE | Enter |
VK_ESCAPE | ESC |
mousehover - Возвращает массив из двух элементов: x-координата и y-координата текущего положения мыши на холсте.
line, oval, foval, rect, frect, clip - Рисуют линию, овал, заливной овал, прямоугольник, заливной прямоугольник и устанавливают область отсечения соответственно. Аргументы: координаты и размеры фигур (целые числа).
drawstring - Рисует строку на холсте. Аргументы - текст, x-координата и y-координата начальной точки.
color - Устанавливает текущий цвет для рисования. Аргументы: код цвета (целое число) или значения красного, зеленого и синего компонентов (целые числа).
repaint - Обновляет холст, вызывая его перерисовку.
playMusic(Путь) - воспроизводит звуки в формате wav (Параллельно выполнению другого кода).
Дата и время.
currentDate - Возвращает текущую дату в формате "день-месяц-год"
getYear - Возвращает текущий год.
getMonth - Возвращает текущий месяц.
getDay - Возвращает текущий день.
currentTime - Возвращает текущее время в формате "часы:минуты:секунды" (например, "15:30:45").
getHour - Возвращает текущее значение часов.
getMin - Возвращает текущее значение минут.
getSec - Возвращает текущее значение секунд.
Работа с файлами.
runFile(Путь) - запускает программы в формате .exe.
readFile(Путь) - возвращает содержимое текстового файла.
writefile(Путь, Текст) - записывает текст в файл. Если файла нет - создаёт, и записывает. Если в файле уже что-то есть, очищает и записывает.
deleteFile(Путь) - удаляет файл.
renameFile(Путь, Новое имя) - переименовывает файл.
moveFile(Путь к файлу, Новый путь(с именем)) - перемещает файл.
copyFile(Путь к файлу, Путь для копии(с именем)) - копирует файл.
createDirectory(Имя папки) - создаёт папку.
deleteDirectory(Имя папки) - удаляет папку.
Как пишутся модули.
Откройте исходники в NetBeans
Создайте класс в com.kisel.boa.lib.modules, и назовите так как ваш модуль. Под этим именем он будет импортироваться.
Шаблон:
package com.kisel.boa.lib.modules;
import com.kisel.boa.lib.StringValue;
import com.kisel.boa.lib.Function;
import com.kisel.boa.lib.ArrayValue;
import com.kisel.boa.lib.NumberValue;
import com.kisel.boa.lib.Value;
import com.kisel.boa.lib.Functions;
import com.kisel.boa.lib.Variables;
import java.text.SimpleDateFormat;
import java.util.Date;
public final class std implements Module {
@Override
public void init() {
Functions.set("ИмяФункции", new Function() {
Тело функции
return NumberValue.ZERO; //Если функция ничего не возвращает
return ЗначениеИлиПеременная //Если функция что-то возвращает
});
Variables.set("ИмяПеременной", new Number/StringValue(Значение));
}
}
После написания удалите импорты которые так и не использовали.
Соберите. Замените старый C:\Titanoboa\boa\boa.jar на новый.
Публикуйте на github в виде файла .java(Не скомпилированного файла класса). И в readme.md пишите о том как добавить:
Откройте исходники titanoboa в NetBeans
Закиньте файл модуля в com.kisel.boa.lib.modules.
Соберите. Замените старый C:\Titanoboa\boa\boa.jar на новый.
Храните исходники, чтобы пересобрать с добавлением других модулей.
К создателю модуля, хранение исходников Titanoboa тоже относится.