From 7a004bf4a63adc3bfbc7b0096cf56eeec8900d53 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Mar 20 2020 14:29:55 +0000 Subject: documentation --- diff --git a/doc/build/placeholder b/doc/build/placeholder new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/doc/build/placeholder diff --git a/doc/helianthus-doc-ru.odt b/doc/helianthus-doc-ru.odt new file mode 100644 index 0000000..2c2f415 Binary files /dev/null and b/doc/helianthus-doc-ru.odt differ diff --git a/doc/ru/camera.html b/doc/ru/camera.html new file mode 100644 index 0000000..d3a65d7 --- /dev/null +++ b/doc/ru/camera.html @@ -0,0 +1,65 @@ + + + + +Камера - Helianthus + + + +
+ +

Камера

+ +

Камера позволяет вам перемещать позицию обзора и масштаб при рисовании спрайтов. При использовании камеры вам не надо изменять позицию всех спрайтов чтобы имитировать смену точки обзора.

+ +

Для работы с камерой её нужно включить функцией cameraOn,

+ +

Затем используя функции cameraSetX, cameraSetY, cameraSetZoom задать положение и масштаб вашей камеры.

+ +

Камера действует только на отображение спрайтов, на прочие функции рисования она не влияет.

+ +

Функции:

+ +

void cameraOn();

+ +

Включить камеру. Спрайты будут рисоваться с учётом положения камеры.

+ +

void cameraOff();

+ +

Выключить камеру. Спрайты будут рисоваться как обычно — без учёта положения камеры.

+ +

int cameraIsActive();

+ +

Возвращает TRUE если камера включена или FALSE если выключена. См. также cameraOn, cameraOff.

+ +

double cameraMouseX();

+

double cameraMouseY();

+ +

Данные функции возвращают координаты мыши с учётом текущего положения камеры. См. также mouseX, mouseY.

+ +

double cameraGetX();

+

double cameraGetY();

+

void cameraSetX(double x);

+

void cameraSetY(double y);

+ +

Получить (Get) и задать (Set) координаты камеры.

+ +

double cameraGetZoom();

+

void cameraSetZoom(double zoom);

+ +

Получить (Get) и задать (Set) масштаб камеры.

+ +
+ + diff --git a/doc/ru/common.html b/doc/ru/common.html new file mode 100644 index 0000000..c235887 --- /dev/null +++ b/doc/ru/common.html @@ -0,0 +1,154 @@ + + + + +Запуск и общие функции - Helianthus + + + +
+ +

Запуск и общие функции

+ +

Для подключения и использования библиотеки Helianthus нужно:
+- подключить файл <helianthus.h>
+- создать и зарегистрировать функции для начальной загрузки и для перерисовки кадра (см. worldSetInit и worldSetDraw)
+- вызвать функцию worldRun для запуска вашей программы

+ +

Вот что должно получиться:

+ +
+#include <helianthus.h>
+
+void init() {
+    // Здесь будут команды для начальной загрузки.
+    // Они выполнятся только один раз в самом начале.
+}
+
+void draw() {
+    // Здесь будут команды для движения и рисования.
+    // Во время работы программы они будут запускаться
+    // несколько раз в секунду.
+}
+
+int main() {
+    worldSetInit(&init); 
+    worldSetDraw(&draw);
+    worldRun();
+    return 0;
+}
+
+ + +

Функции:

+ +

void worldSetInit(Callback init);

+ +

Задать функцию для начальной инициализации (загрузки). Эта функция будет запущена только один раз в самом начале работы программы, как только будет вызвана функция worldRun.

+ +

Параметры:

+ +

init — указатель на функцию начальной инициализации (загрузки). Функция быть работать без параметров и не должна возвращать значение.

+ +

void worldSetDraw(Callback draw);

+ +

Задать основную функцию вашей программы — функцию для перерисовки кадра. Во время работы программы заданная функция будет запускаться несколько раз в секунду перед перерисовкой каждого кадра. Поместите в неё команды для движения и рисования.

+ +

Параметры:

+ +

draw — указатель на функцию перерисовки кадра. Функция быть работать без параметров и не должна возвращать значение.

+ +

void worldRun();

+ +

Запустить вашу программу на Helianthus. Перед вызовом этой функции нужно зарегистрировать функции начальной загрузки и перерисовки кадра (см. выше)

+ +

void worldStop();

+ +

Остановить и закрыть программу. Программа всегда закрывается если пользователь нажмёт на крестик в верхнем правом углу окна, но вы можете добавить и свои способы выхода из программы. Например, в функцию перерисовки вы можете вставить возможность выхода по нажатию клавиши Esc (см. также раздел «Клавиатура и мышь»):

+ +
+void draw() {
+    …
+    if (keyWentPressed("escape")) {
+        worldStop()
+    }
+    …
+}
+
+ + +

int worldGetWidth();

+ +

Возвращает ширину окна в пикселях. См. также worldSetWidth.

+ +

void worldSetWidth(int width);

+ +

Установить ширину окна. См. также worldGetWidth.

+ +

Параметры:

+ +

width — новая ширина окна.

+ +

int worldGetHeight();

+ +

Возвращает высоту окна в пикселях. См. также worldSetHeight.

+ +

void worldSetHeight(int height);

+ +

Установить высоту окна. См. также worldGetHeight.

+ +

Параметры:

+ +

height — новая ширина окна.

+ +

double worldGetFrameRate();

+ +

Возвращает частоту перерисовки окна, количество кадров в секунду. См. также worldSetFrameRate.

+ +

void worldSetFrameRate(double frameRate);

+ +

Установить частоту перерисовки окна. См. также worldGetFrameRate.

+ +

Параметры:

+ +

frameRate — количество кадров в секунду, от 1 до 100.

+ +

double worldGetTimeStep();

+ +

Возвращает длительность одного кадра в секундах. См. также worldGetFrameRate.

+ +

int worldGetFrameCount();

+ +

Возвращает количество кадров прошедшее с момента запуска программы (с момента вызова функции worldRun. См. также worldGetSeconds.

+ +

double worldGetSeconds();

+ +

Возвращает количество секунд прошедшее с момента запуска программы (с момента вызова функции worldRun. См. также worldGetFrames.

+ +

int randomNumber(int min, int max);

+ +

Возвращает случайное целое число от min до max включительно.

+ +

Параметры:

+ +

min — минимальное значение для случайного числа;
+max — максимальное значение для случайного числа.

+ +

double randomFloat();

+ +

Возвращает случайное дробное число в диапазоне от 0 до 1.

+ +
+ + diff --git a/doc/ru/drawing.html b/doc/ru/drawing.html new file mode 100644 index 0000000..93f3ece --- /dev/null +++ b/doc/ru/drawing.html @@ -0,0 +1,272 @@ + + + + +Рисование - Helianthus + + + +
+ +

Рисование

+ +

Перечисленные ниже функцию позволяют рисовать на экране различные фигуры и текст.

+ +

Для указания цвета используется его текстовое наименование.
+Вот список наименований:
+    "transparent",
+    "black",
+    "white",
+    "gray",
+    "red",
+    "green",
+    "blue",
+    "yellow",
+    "magenta",
+    "cyan",
+    "yellow",
+    "magenta",
+    "cyan",
+    "brown".

+ +

Также поддерживаются цвета в кодировка #RRGGBBAA:
+    #000000 — чёрный;
+    #ff0000 — красный;
+    #0000ff — синий;
+    #00ff00aa — зелёный полупрозрачный.

+ +

Вы можете сгенерировать текстовое наименования для любого цвета по его числовым составляющим при помощи функций rgb и rgba.

+ +

Для рисования линий и многоугольников используются функции moveTo, lineTo, closePath, strokePath. При этом функции stroke и fill задают цвет линий и заливки. Функция strokeWeight задаёт толщину линий. Вот пример рисования красного треугольника с чёрным контуром:

+ +
+fill("red");
+stroke("black");
+strokeWeight(10);
+moveTo(100, 300);
+lineTo(300, 300);
+lineTo(50, 200);
+closePath();
+
+ + +

Также существуют отдельные функции для рисования прямоугольников, линий, эллипсов и дуг окружности, смотрите описания функций ниже.

+ +

Для вывода текста используются функции text, textAlign, textFont и textSize. Смотрите их описание ниже.

+ +

Функции:

+ +

void background(const char *color);

+ +

Установить цвет фона. Начиная со следующего все кадры будут рисоваться на выбранном фоне.

+ +

Параметры:

+ +

color — текстовое наименование цвета.

+ +

void fill(const char *color);

+ +

Установить цвет заливки. После вызова этой функции все фигуры будут заполняться выбранным цветом. См. также noFill.

+ +

Параметры:

+ +

color — текстовое наименование цвета.

+ +

void noFill();

+ +

Отключить заливку фигур. После вызова этой функции все фигуры будут рисоваться без заполнения. См. также fill.

+ +

void stroke(const char *color);

+ +

Установить цвет контура. После вызова этой функции все фигуры будут рисоваться с контуром выбранного цвета. Также эта функция задаёт цвет рисования текста См. также noStroke.

+ +

Параметры:

+ +

color — текстовое наименование цвета.

+ +

void noStroke();

+ +

Отключить рисование контура. После вызова этой функции все фигуры будут рисоваться без прорисовки контура. См. также stroke.

+ +

Важно: Так как текст рисуется цветом контура, эта функция полностью отключает вывод текста.

+ +

void strokeWeight(double weight);

+ +

Установить толщину линий и контуров. После вызова этой функции все линии и контуры будут рисоваться с заданной толщиной.

+ +

Параметры:

+ +

weight — толщина линии.

+ +

char* rgb(double r, double g, double b);

+ +

Функция возвращает текстовое наименование цвета для заданных числовых значений яркости красной, зелёной и синей составляющих.

+ +

Параметры:

+ +

r — яркость красной составляющей цвета, дробное число от 0 до 1;
+g — яркость зелёной составляющей цвета, дробное число от 0 до 1;
+b — яркость синей составляющей цвета, дробное число от 0 до 1.

+ +

char* rgba(double r, double g, double b, double a);

+ +

Функция возвращает текстовое наименование цвета для заданных числовых значений яркости красной, зелёной и синей составляющих, а также прозрачности.

+ +

Параметры:

+ +

r — яркость красной составляющей цвета, дробное число от 0 до 1;
+g — яркость зелёной составляющей цвета, дробное число от 0 до 1;
+b — яркость синей составляющей цвета, дробное число от 0 до 1;
+a — прозрачность, дробное число от 0 до 1, при этом 0 — цвет полностью прозрачный, 1 — цвет непрозрачный.

+ +

void moveTo(double x, double y);

+ +

Начать рисование новой фигуры, и задать начальное положение пера. Перед запуском этой функции убедитесь что вы завершили рисование предыдущей фигуры функцией closePath или strokePath.

+ +

Параметры:

+ +

x, y — координаты в которые будет помещено перо.

+ +

void lineTo(double x, double y);

+ +

Наметить линию от текущих координат пера до заданной точки, а также перевести перо в указанною точку. Настоящая линия будет нарисована позже при помощи функции closePath или strokePath. См. также функцию moveTo.

+ +

Важно: если положение пера не было задано, то линия не намечается, вместо этого просто задаётся начальное положение пера.

+ +

void resetPath();

+ +

Убрать все намеченные функцией lineTo или arcPath линии и отменить их рисование. Положение пера также забывается.

+ +

void closePath();

+ +

Завершить контур соединив начальную и конечную точки линией и нарисовать заполненную фигуру с контуром. Цвета заполнения и контура задаются функциями fill и stroke. См. также функции moveTo и lineTo. После вывода фигуры на экран положение пера и все намеченные линии забываются.

+ +

void strokePath();

+ +

Нарисовать ранее намеченные линии. В отличии от функции closePath, данная функция не соединяет начальную и конечную точки, а просто рисует только те линии которые были намечены. Цвет контура задаётся функцией stroke, а вот заполнение цветом не производится. После вывода намеченных линий на экран, их расположение и позиция пера забываются.

+ +

void rect(double x, double y, double width, double height);

+ +

Нарисовать прямоугольник. Цвета заполнения и контура задаются заранее функциями fill и stroke.

+ +

Параметры:

+ +

x, y — координаты левого верхнего угла прямоугольника;
+width — ширина прямоугольника;
+height — высота прямоугольника.

+ +

void ellipse(double x, double y, double width, double height);

+ +

Нарисовать эллипс. Эллипс рисуется таким чтобы от вписался в ограничивающий прямоугольник (см. функцию rect). Следовательно для того чтобы нарисовать окружность нужно передать одинаковую ширину и высоту ограничивающего прямоугольника. Цвета заполнения и контура задаются заранее функциями fill и stroke.

+ +

Параметры:

+ +

x, y — координаты левого верхнего угла ограничивающего прямоугольника;
+width — ширина ограничивающего прямоугольника;
+height — высота ограничивающего прямоугольника.

+ +

void arc(double x, double y, double w, double h, double start, double stop);

+ +

Нарисовать дугу эллипса заданного ограничивающим прямоугольником. Дуга задаётся значением начального и конечного угла. Цвет линии задаётся функцией stroke.

+ +

Параметры:

+ +

x, y — координаты левого верхнего угла ограничивающего прямоугольника;
+width — ширина ограничивающего прямоугольника;
+height — высота ограничивающего прямоугольника;
+start — начальный угол в градусах;
+end — конечный угол в градусах.

+ +

void arcPath(double x, double y, double w, double h, double start, double stop);

+ +

Наметить дугу эллипса заданного ограничивающим прямоугольником так как если бы она рисовалась функциями moveTo и lineTo. Дуга задаётся значением начального и конечного угла. Окончательное рисование будет выполнено после вызова функции closePath или strokePath.

+ +

Параметры:

+ +

x, y — координаты левого верхнего угла ограничивающего прямоугольника;
+width — ширина ограничивающего прямоугольника;
+height — высота ограничивающего прямоугольника;
+start — начальный угол в градусах;
+end — конечный угол в градусах.

+ +

void line(double x1, double y1, double x2, double y2);

+ +

Провести прямую линию от первой указанной точки до второй. Цвет линии задаётся функцией stroke.

+ +

Параметры:

+ +

x1, y1 — координаты первой точки;
+x2, y2 — координаты второй точки.

+ +

void point(double x, double y);

+ +

Нарисовать точку в указанных координатах. Цвет задаётся функцией stroke. Диаметр точки задаётся функцией strokeWeight.

+ +

Параметры:

+ +

x, y — координаты точки.

+ +

void regularPolygon(double x, double y, int sides, double size);

+ +

Нарисовать правильный многоугольник заданного размера с центром в указанной точке. Цвета заполнения и контура задаются функциями fill и stroke.

+ +

Параметры:

+ +

x, y — координаты центра многоугольника;
+sides — количество сторон;
+size — размер многоугольника — диаметр описанной окружности.

+ +

void text(const char *text, double x, double y);

+ +

Вывести текст в заданной точке. Расположение текста относительно указанной точки задаётся функцией textAlign. Шрифи и размер задаются функциями textFont и textSize. Цвет текста задаётся функцией stroke.

+ +

Параметры:

+ +

text — текст для вывода;
+x, y — координаты начальной точки.

+ +

void textAlign(HAlign hor, VAlign vert);

+ +

Установить расположение текста относительно начальной точки (см. функцию text)

+ +

Параметры:

+ +

hor — горизонтальное расположение начальной точки текста, может принимать значения:
+    HALIGN_LEFT — начальная точка находится по левому краю текста;
+    HALIGN_CENTER — начальная точка находится в середине текста;
+    HALIGN_RIGHT — начальная точка находится по правому краю текста.
+vert — вертикальное расположение начальной точки текста, может принимать значения:
+    VALIGN_TOP — начальная точка находится по верхнему краю текста;
+    VALIGN_CENTER — начальная точка находится в середине текста;
+    VALIGN_BOTTOM — начальная точка находится по нижнему краю текста.

+ +

void textFont(const char *font);

+ +

Установить шрифт для текста (см. функцию text). Указанный шрифт должен быть установлен в системе. Можете посмотреть списки шрифтов в любом установленном на вашем компьютере текстовом редакторе.

+ +

Параметры:

+ +

font — текстовое наименование шрифта.

+ +

void textSize(double size);

+ +

Установить размер текста (см. функцию text).

+ +

Параметры:

+ +

size — размер текста в пикселях.

+ +
+ + diff --git a/doc/ru/functions.html b/doc/ru/functions.html new file mode 100644 index 0000000..9f9b788 --- /dev/null +++ b/doc/ru/functions.html @@ -0,0 +1,216 @@ + + + + +Все функции - Helianthus + + + +
+

Все функции

+

Запуск и общие функции

+worldSetInit
+worldSetDraw
+worldRun
+worldStop
+worldGetWidth
+worldSetWidth
+worldGetHeight
+worldSetHeight
+worldGetFrameRate
+worldSetFrameRate
+worldGetTimeStep
+worldGetFrameCount
+worldGetSeconds
+randomNumber
+randomFloat
+

Клавиатура и мышь

+keyDown
+keyWentDown
+keyWentUp
+mouseDown
+mouseWentDown
+mouseWentUp
+mouseDidMove
+mouseX
+mouseY
+

Рисование

+background
+fill
+noFill
+stroke
+noStroke
+strokeWeight
+rgb
+rgba
+moveTo
+lineTo
+resetPath
+closePath
+strokePath
+rect
+ellipse
+arc
+arcPath
+line
+point
+regularPolygon
+text
+textAlign
+textFont
+textSize
+

Спрайты

+createSprite
+createSpriteEx
+spriteDestroy
+spriteDestroyTimer
+spriteGetX
+spriteGetY
+spriteSetX
+spriteSetY
+spriteGetVelocityX
+spriteGetVelocityY
+spriteSetVelocityX
+spriteSetVelocityY
+spriteSetVelocityXY
+spriteSetSpeedAndDirection
+spriteGetSpeed
+spriteGetDirection
+spriteGetWidth
+spriteSetWidth
+spriteGetHeight
+spriteSetHeight
+spriteGetScale
+spriteSetScale
+spriteGetScaledWidth
+spriteGetScaledHeight
+spriteGetRotation
+spriteSetRotation
+spriteGetRotationSpeed
+spriteSetRotationSpeed
+spriteGetRotateToDirection
+spriteSetRotateToDirection
+spriteGetMirrorX
+spriteSetMirrorX
+spriteGetMirrorY
+spriteSetMirrorY
+spriteGetDepth
+spriteSetDepth
+spriteGetVisible
+spriteSetVisible
+spriteGetTag
+spriteSetTag
+spriteGetDebug
+spriteSetDebug
+spriteOverlap
+spriteCollide
+spriteBounceOff
+spritePush
+spriteCollideEx
+spriteGetBounciness
+spriteSetBounciness
+spriteSetCollider
+spriteSetColliderCircle
+spriteSetColliderRectangle
+spriteSetColliderEx
+spriteSetAnimation
+spriteSetNoAnimation
+spritePlay
+spritePause
+spriteNextFrame
+spriteSetFrame
+spriteSetShapeColor
+spriteSetTintColor
+spritePointTo
+mouseIsOver
+mousePressedOver
+worldGetSpriteCount
+worldGetSprite
+drawSprites
+

Группы спрайтов

+createGroup
+createEdgesGroup
+createEdgesGroupEx
+groupDestroy
+groupDestroyEx
+groupAdd
+groupRemove
+groupClear
+groupClearEx
+groupContains
+groupGetCount
+groupGet
+groupOverlap
+groupCollide
+groupBounceOff
+groupPush
+groupCollideEx
+groupOverlapGroup
+groupCollideGroup
+groupBounceOffGroup
+groupPushGroup
+groupCollideGroupEx
+groupOverlapBetween
+groupCollideBetween
+groupCollideBetweenEx
+groupGetMinDepth
+groupGetMaxDepth
+groupDestroyEach
+groupDestroyTimerEach
+groupSetVisibleEach
+groupSetWidthEach
+groupSetHeightEach
+groupSetDepthEach
+groupSetVelocityXEach
+groupSetVelocityYEach
+groupSetVelocityEach
+groupSetLifetimeEach
+groupSetRotateToDirectionEach
+groupSetRotationEach
+groupSetRotationSpeedEach
+groupSetScaleEach
+groupSetMirrorXEach
+groupSetMirrorYEach
+groupSetTagEach
+groupPointToEach
+groupSetSpeedAndDirectionEach
+groupSetAnimationEach
+groupSetNoAnimationEach
+groupSetShapeColorEach
+groupSetTintColorEach
+groupSetColliderEach
+groupSetColliderCircleEach
+groupSetColliderRectangleEach
+groupSetColliderEachEx
+

Камера

+cameraOn
+cameraOff
+cameraIsActive
+cameraMouseX
+cameraMouseY
+cameraGetX
+cameraGetY
+cameraSetX
+cameraSetY
+cameraGetZoom
+cameraSetZoom
+

Звук

+createSound
+soundDestroy
+soundPlay
+soundStop
+ +
+ + diff --git a/doc/ru/groups.html b/doc/ru/groups.html new file mode 100644 index 0000000..beb8b9d --- /dev/null +++ b/doc/ru/groups.html @@ -0,0 +1,185 @@ + + + + +Группы спрайтов - Helianthus + + + +
+ +

Группы спрайтов

+ +

Вы можете объединять спрайты в группы. Группы помогут вам если вам нужно выполнять одинаковый действия со множеством спрайтов. Вы можете одной командой задать одинаковую скорость сразу всем спрайтам в группе, либо включить/выключить видимость спрайтов в группу и прочее.

+ +

Создать группу можно функцией createGroup, которая возвращает значение типа Group, которое по сути является адресом в памяти — указателем на описание группы внутри библиотеки Helianthus.

+ +

Для добавления спрайта в группу используйте функцию groupAdd, для удаления из группы - groupRemove.

+ +

Все функции работы с группами повторяют функции работы с одиночными спрайтами, только применяются они одновременно ко всем спрайтам в группе. Поэтому заглядывайте и в раздел «Спрайты».

+ +

Функции:

+ +

Group createGroup();

+ +

Создать пустую группу. В дальнейшем вы можете добавить в неё спрайты функцией groupAdd.

+ +

Group createEdgesGroup();

+ +

Создать группу спрайтов ограничивающих края экрана. Используйте эту группу если вам нужно сделать так чтобы спрайт отталкивался от краёв экрана. Смотрите описание физической модели в разделе «Спрайты».

+ +

Group createEdgesGroupEx(double x1, double y1, double x2, double y2, double borderWidth);

+ +

Создать группу спрайтов ограничивающих прямоугольник. Функция аналогична функции createEdgesGroup, только рамка создаётся не вокруг краёв экрана, а вокруг заданного вами прямоугольника.

+ +

Параметры:

+ +

x1, y1 — координаты верхнего левого угла прямоугольника;
+x2, y2 — координаты нижнего правого угла прямоугольника;
+borderWidth — толщина рамки.

+ +

void groupDestroy(Group group);

+ +

Удалить группу. Спрайты, которые содержались в группе продолжат существовать, просто они больше не будут состоять в данной группе.

+ +

Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на группу. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на группу, группа удалена. Вы можете занести в эту переменную другую группу, но использовать старое значение переменной больше нельзя это приведёт к ошибкам и непредсказуемому поведению программы.

+ +

void groupDestroyEx(Group group, int destroySprites);

+ +

Удалить группу, с возможностью удаления и спрайтов тоже. См. также groupDestroy.

+ +

Параметры:

+ +

destroySprites — если TRUE, то перед удалением группы будут удалены и все содержащиеся в ней спрайты (см. spriteDestroy).

+ +

void groupAdd(Group group, Sprite sprite);

+ +

Добавить спрайт в группу.

+ +

Параметры:

+ +

sprite — спрайт для добавления.

+ +

void groupRemove(Group group, Sprite sprite);

+ +

Исключить спрайт из группы.

+ +

Параметры:

+ +

sprite — спрайт для исключения.

+ +

void groupClear(Group group);

+ +

Исключить из группы все спрайты. Группа станет пустой. См. также groupRemove.

+ +

void groupClearEx(Group group, int destroySprites);

+ +

Очистить группу с возможностью удаления всех спрайтов. См. также groupClear, groupDestroyEx, spriteDestroy.

+ +

Параметры:

+ +

destroySprites — если TRUE, то спрайты вместо исключения из группы будут полностью удалены.

+ +

int groupContains(Group group, Sprite sprite);

+ +

Возвращает TRUE, если спрайт содержится в группе, иначе возвращает FALSE.

+ +

Параметры:

+ +

sprite — спрайт для проверки.

+ +

int groupGetCount(Group group);

+ +

Возвращает количество спрайтов в группе.

+ +

Sprite groupGet(Group group, int i);

+ +

Возвращает содержащийся в группе спрайт по указанному номеру.

+ +

Параметры:

+ +

i — номер спрайта в группе.

+ +

int groupOverlap(Group group, Sprite sprite);

+

int groupCollide(Group group, Sprite sprite, double bounciness);

+

int groupBounceOff(Group group, Sprite sprite, double bounciness);

+

int groupPush(Group group, Sprite sprite, double bounciness);

+

int groupCollideEx(Group group, Sprite sprite, int keepVelocityGroup, int keepVelocitySprite, double bounciness);

+ +

Функции обнаружения и решения столкновений между группой и спрайтом. Смотрите аналогичные функции из раздела «Спрайты». Каждый спрайт из группы будет взаимодействовать с указанным в параметрах функции спрайтом.

+ +

int groupOverlapGroup(Group a, Group b);

+

int groupCollideGroup(Group a, Group b, double bounciness);

+

int groupBounceOffGroup(Group group, Group other, double bounciness);

+

int groupPushGroup(Group group, Group other, double bounciness);

+

int groupCollideGroupEx(Group a, Group b, int keepVelocityA, int keepVelocityB, double bounciness);

+ +

Функции обнаружения и решения столкновений между группой и группой. Смотрите аналогичные функции из раздела «Спрайты». Каждый спрайт из первой группы будет взаимодействовать с каждым спрайтом из второй группы.

+ +

int groupOverlapBetween(Group group);

+

int groupCollideBetween(Group group, double bounciness);

+

int groupCollideBetweenEx(Group group, int keepVelocity, double bounciness);

+ +

Функции обнаружения и решения столкновений между спрайтами в группе. Смотрите аналогичные функции из раздела «Спрайты». Каждый спрайт в группе взаимодействует со всеми другими спрайтами в группе.

+ +

double groupGetMinDepth(Group group);

+ +

Возвращает минимальную глубину среди всех спрайтов в группе.

+ +

double groupGetMaxDepth(Group group);

+ +

Возвращает максимальную глубину среди всех спрайтов в группе.

+ +

void groupDestroyEach(Group group);

+ +

Полностью удалить каждый спрайт в данной группе. Группа станет пустой. См. также groupClearEx, spriteDestroy.

+ +

void groupDestroyTimerEach(Group group, double lifetime);

+ +

Задать таймер на удаление для каждого спрайта в группе. См. также spriteDestroyTimer.

+ +

void groupSetVisibleEach(Group group, int visible);

+

void groupSetWidthEach(Group group, double width);

+

void groupSetHeightEach(Group group, double height);

+

void groupSetDepthEach(Group group, double depth);

+

void groupSetVelocityXEach(Group group, double x);

+

void groupSetVelocityYEach(Group group, double y);

+

void groupSetVelocityEach(Group group, double x, double y);

+

void groupSetLifetimeEach(Group group, double lifetime);

+

void groupSetRotateToDirectionEach(Group group, int rotateToDirection);

+

void groupSetRotationEach(Group group, double rotation);

+

void groupSetRotationSpeedEach(Group group, double rotationSpeed);

+

void groupSetScaleEach(Group group, double scale);

+

void groupSetMirrorXEach(Group group, int mirrorX);

+

void groupSetMirrorYEach(Group group, int mirrorY);

+

void groupSetTagEach(Group group, int tag);

+

void groupPointToEach(Group group, double x, double y);

+

void groupSetSpeedAndDirectionEach(Group group, double speed, double angle);

+

void groupSetAnimationEach(Group group, const char *path);

+

void groupSetNoAnimationEach(Group group);

+

void groupSetShapeColorEach(Group group, const char *color);

+

void groupSetTintColorEach(Group group, const char *color);

+ +

Установить параметры для каждого спрайта в группе. Смотрите аналогичные функции из раздела «Спрайты».

+ +

void groupSetColliderEach(Group group, Collider type, double xOffset, double yOffset, double rotationOffset);

+

void groupSetColliderCircleEach(Group group, double xOffset, double yOffset, double radius);

+

void groupSetColliderRectangleEach(Group group, double xOffset, double yOffset, double rotationOffset, double width, double height, double cornersRadius);

+

void groupSetColliderEachEx(Group group, Collider type, double xOffset, double yOffset, double rotationOffset, double width, double height, double radius);

+ +

Установить параметры физического тела для каждого спрайта в группе. Смотрите аналогичные функции из раздела «Спрайты».

+ +
+ + diff --git a/doc/ru/index.html b/doc/ru/index.html new file mode 100644 index 0000000..d8c5156 --- /dev/null +++ b/doc/ru/index.html @@ -0,0 +1,28 @@ + + + + +Helianthus + + + +
+ +

Helianthus

+ +

Мультимедиа библиотека для того чтобы изучать язык C было весело и интересно.

+ +
+ + diff --git a/doc/ru/input.html b/doc/ru/input.html new file mode 100644 index 0000000..4c6ebf2 --- /dev/null +++ b/doc/ru/input.html @@ -0,0 +1,104 @@ + + + + +Клавиатура и мышь - Helianthus + + + +
+ +

Клавиатура и мышь

+ +

Во время работы программы вы можете узнавать положение мыши и состояние клавиш. Координаты указателя мыши можно получить функциями mouseX и mouseY. Узнать состояние клавиш клавиатуры и кнопок мыши можно функциями keyDown и mouseDown соответственно.

+ +

Для указания клавиши нужно написать её текстовое наименование, например: "a", "1", "left", "right", "up", "down", "return" (для Enter), "escape" и и.д.

+ +

Названия клавиш взяты из библиотеки GTK, их полный список вы можете посмотреть в файле (для Linux), список очень большой:
+    file:///usr/include/gtk-3.0/gdk/gdkkeysyms.h
+или в интернете:
+    https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkkeysyms.h
+Обратите внимание, что наименование нужно писать маленькими (строчными) буквами и приставку GTK_KEY_ нужно убрать. Например, если вы нашли в большом списке клавишу GDK_KEY_BackSpace — значит в вашей программе вам нужно написать "backspace".

+ +

Наименований для кнопок мыши всего три: "left", "middle" и "right".

+ +

Кроме этого существуют функции для определения момента нажатия и отпускания клавиш и кнопок. На тот случай когда некоторые действия нужно выполнить только один раз в момент нажатия (или отпускания) клавиши. Смотрите функции keyWentDown, keyWentUp, mouseWentDown, mouseWentUp.

+ +

Функции:

+ +

int keyDown(const char *code);

+ +

Функция возвращает TRUE (число 1) если указанная клавиша в нажата (и удерживается) в данный момент и FALSE (число 0) если клавиша отпущена.

+ +

Параметры:

+ +

code — текстовое наименование клавиши.

+ +

int keyWentDown(const char *code);

+ +

Функция возвращает TRUE (число 1) если указанная клавиша стала нажатой в момент времени между предыдущим и текущим кадром. В последующих кадрах, даже если клавиша остаётся нажатой, функция возвращает FALSE (число 0).

+ +

Важно: Примерно через секунду после нажатия и удержания клавиши, keyWentDown всё таки сработает ещё раз — так будто клавиша была повторно нажата. Другими словами поведение функции такое же как и у текстового редактора: если удерживать клавишу некоторое время редактор повторяет печать символа несколько раз.

+ +

Параметры:

+ +

code — текстовое наименование клавиши.

+ +

int keyWentUp(const char *code);

+ +

Функция возвращает TRUE (число 1) если указанная клавиша перестала быть нажатой в момент времени между предыдущим и текущим кадром. Во всех других случаях возвращает FALSE (число 0).

+ +

Параметры:

+ +

code — текстовое наименование клавиши.

+ +

int mouseDown(const char *code);

+ +

Функция возвращает TRUE (число 1) если указанная кнопка мыши в нажата (и удерживается) в данный момент и FALSE (число 0) если кнопка отпущена.

+ +

Параметры:

+ +

code — текстовое наименование кнопки мыши.

+ +

int mouseWentDown(const char *code);

+ +

Функция возвращает TRUE (число 1) если указанная кнопка мыши стала нажатой в момент времени между предыдущим и текущим кадром. Во всех последующих кадрах, даже если кнопка остаётся нажатой, функция возвращает FALSE (число 0).

+ +

Параметры:

+ +

code — текстовое наименование кнопки мыши.

+ +

int mouseWentUp(const char *code);

+ +

Функция возвращает TRUE (число 1) если указанная кнопка мыши перестала быть нажатой в момент времени между предыдущим и текущим кадром. Во всех других случаях возвращает FALSE (число 0).

+ +

Параметры:

+ +

code — текстовое наименование кнопки мыши.

+ +

int mouseDidMove();

+ +

Функция возвращает TRUE (число 1) если с момента отрисовки предыдущего кадра положение мыши изменилось, и возвращает FALSE (число 0) ели мышь оставалась неподвижной.

+ +

double mouseX();

+ +

Возвращает координату X указателя мыши.

+ +

double mouseY();

+ +

Возвращает координату Y указателя мыши.

+ +
+ + diff --git a/doc/ru/sound.html b/doc/ru/sound.html new file mode 100644 index 0000000..0a8bb64 --- /dev/null +++ b/doc/ru/sound.html @@ -0,0 +1,60 @@ + + + + +Звук - Helianthus + + + +
+ +

Звук

+ +

Библиотека Helianthus позволяет вам воспроизводить звуки из файлов WAV, OGG, MP3 и FLAC.

+ +

Загрузить звук можно функцией createSound, которая возвращает значение типа Sound, которое по сути является адресом в памяти — указателем на описание звуковой волны внутри библиотеки Helianthus.

+ +

Для воспроизведения и остановки звука используйте функции soundPlay и soundStop.

+ +

Функции:

+ +

Sound createSound(const char *path);

+ +

Загрузить звук из указанного файла.

+ +

Параметры:

+ +

path — путь к звуковому файлу.

+ +

void soundDestroy(Sound sound);

+ +

Удалить звук.

+ +

Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на звук. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на звук, звук уже удалён. Вы можете занести в эту переменную другой звук, но использовать старое значение переменной больше нельзя это приведёт к ошибкам и непредсказуемому поведению программы.

+ +

void soundPlay(Sound sound, int loop);

+ +

Воспроизвести звук.

+ +

Параметры:

+ +

loop — если TRUE, то повторять воспроизведение звука до тех пор пока он не будет остановлем командой soundStop (подходит, например, для фоновой музыки). Если FALSE, то воспроизвести звук один раз.

+ +

void soundStop(Sound sound);

+ +

Остановить воспроизведение звука.

+ +
+ + diff --git a/doc/ru/sprites.html b/doc/ru/sprites.html new file mode 100644 index 0000000..cff6456 --- /dev/null +++ b/doc/ru/sprites.html @@ -0,0 +1,446 @@ + + + + +Спрайты - Helianthus + + + +
+ +

Спрайты

+ +

Спрайт — это изображаемый на экране объект, который сохраняет свою позицию и изображения от кадра к кадру. Другими словами для рисования спрайта не нужно каждый раз указывать его координаты, цвет и расположение — он хранит эти параметры внутри себя, их достаточно задать только один раз.

+ +

Спрайты будут выводится на экран командой drawSprites, она рисует на экране сразу все спрайт. Её достаточно вызвать только один раз за кадр.

+ +

Спрайт может изображаться в виде прямоугольника выбранного вами цвета (spriteSetShapeColor), либо в виде картинки из выбранного вами файла (spriteSetAnimation). Кроме того спрайт может содержать анимацию, для этого вместо одного изображения в него можно загрузить папку с картинками — кадрами. Эти кадры могут переключаться автоматически (spritePlay) или по вашей команде (spriteSetFrame, spriteNextFrame).

+ +

Положение спрайта задаётся координатами его центра (spriteSetX, spriteSetY), и углом поворота (spriteSetRotation). Кроме того вы можете задать ширину и высоту спрайта (spriteSetWidth, spriteSetHeight)

+ +

Создать спрайт можно функции createSprite, которая возвращает значение типа Sprite, которое по сути является адресом в памяти — указателем на описание спрайта внутри библиотеки Helianthus.

+ +

Пример:

+ +
+#include <helianthus.h>
+
+Sprite mysprite;
+
+void init() {
+    // Создать новый спрайт с центром в точке (200, 200)
+    mysprite = createSprite(200, 200);
+
+    // Загрузить файл изображения.
+    spriteSetAnimation(mysprite, "picture.png"); 
+}
+
+void draw() {
+    // Повернуть спрайт на один 10 градусов перед рисованием.
+    spriteSetRotation(mysprite, 10); 
+
+    // Вывести все спрайты на экран.
+    // Ввесь один спрайт, в данном случае.
+    drawSprites();
+}
+
+int main() {
+    worldSetInit(&init);
+    worldSetDraw(&draw);
+    worldRun();
+    return 0;
+}
+
+ + +

Физика и обнаружение столкновений

+ +

Спрайты в библиотеке Helianthus имеют физическую модель. Они могут обладать скоростью и отталкиваться друг от друга.

+ +

Изначально физическое представление спрайта это прямоугольник соответствующий видимой форме спрайта. Но это может быть изменено, например, вы можете представить спрайт для физической модели в виде круга, при этом видимое изображение останется прежним (spriteSetCollider).

+ +

Физическое тело спрайта позволяет вам определять находится ли над спрайтом указатель мыши, см. функции mouseIsOver и mousePressedOver.

+ +

Помимо описания формы и размеров физического тела спрайта вам, скорее всего, понадобится задать и его скорость (spriteSetVelocityXY).

+ +

Для обнаружения столкновений и расчёта скоростей и позиций объектов после столкновения необходимо запустить одну из специальных функций. Они представлены в таблице ниже. Каждая из этих функций работает с двумя выбранными вами спрайтами и рассчитывает столкновения только между ними.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Имя функцииПервый спрайт сохраняет свою скорость?Второй спрайт сохраняет свою скорость?Описание
spriteOverlapДа.Да.Спрайты проходят друг через друга, функция просто сообщает вам о факте касания.
spriteCollideНет.Нет.Спрайты отталкиваются друг от друга — обычное столкновение двух объектов
spriteBounceOffНет.Да.Первый спрайт отталкивается от второго, второй же продолжает своё движение так, словно ничего не было.
spritePushДа.Нет.Первый сайт движется так будто и не было столкновения, второй же отталкивается от первого и меняет свою скорость и направление движения.
spriteCollideExЗадаётся параметрами функции.Задаётся параметрами функции.Это универсальная функция, которая вмещает в себя возможности предыдущих четырёх функций.
+ + +

Также указанные функции (кроме spriteOverlap) имеют параметр bounciness — это показатель энергии столкновения.

+ +

Если bounciness меньше 1, то взаимная скорость спрайтов после столкновения уменьшится, как если бы столкнулись мешки с песком.

+ +

Если больше 1, то скорости после столкновения увеличатся. Можете представить себе супер-упругий волшебный мячик, который после падения на пол подпрыгивает выше чем падал.

+ +

Параметр bounciness есть и у каждого спрайта (spriteSetBounciness). При расчёте параметры bounciness от обоих спрайтов и параметр bounciness из функции перемножаются и получается окончательное значение bounciness для расчётов.

+ +

Таким образом запустив, например, функцию spritePush для двух ваших спрайтов вы тем самым инициируете расчёт физического взаимодействия межу ними. И кроме того вы одновременно с этим указываете какую роль в физической модели занимает ваш объект. Например для spritePush первый спрайт будет представлять из себя какую-то тяжёлую мощную платформу, сдвинуть которую второй спрайт не может — он просто отталкивается от неё сам, а платформа двигается (или стоит) как ни в чём ни бывало.

+ +

Однако работы всего лишь с двумя спрайтами мало для полноценной физической модели. В помощь вам Helianthus предлагает группы спрайтов. Поместив свои спрайты в различные группы (или в одну группу) вы можете одной командой вызвать расчёт столкновений между всеми спрайтами в группе или между спрайтами одной группы со спрайтами другой группы или между группой и одиночным спрайтом.

+ +

Также функция createEdgesGroup поможет вам создать группу спрайтов обозначающую границы экрана, чтобы ваши объекты отталкивались от краёв экрана.

+ +

Подробнее о группах и их функциях смотрите в разделе «Группы спрайтов».

+ +

Функции:

+ +

Sprite createSprite(double x, double y);

+ +

Создаёт спрайт с центром в указанной точке. См. также createSpriteEx.

+ +

Параметры:

+ +

x, y — координаты центра нового спрайта.

+ +

Sprite createSpriteEx(double x, double y, double width, double height);

+ +

Создаёт спрайт заданного размера с центром в указанной точке. См. также createSprite.

+ +

Параметры:

+ +

x, y — координаты центра нового спрайта;
+width — ширина нового спрайта;
+height — высота нового спрайта.

+ +

void spriteDestroy(Sprite sprite);

+ +

Удаляет спрайт. Спрайт удаляется также из всех групп в которые он был включён.

+ +

Если же вы просто хотите спрятать спрайт не удаляя его, чтобы он просто больше не отображался на экране, то обратите внимание на функцию spriteSetVisible.

+ +

Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на спрайт. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на спрайт, спрайт удалён. Вы можете занести в эту переменную другой спрайт, но использовать старое значение переменной больше нельзя это приведёт у ошибкам и непредсказуемому поведению программы.

+ +

void spriteDestroyTimer(Sprite sprite, double lifetime);

+ +

Задаёт таймер для удаления спрайта через определённое время. Рекомендуется больше не обращаться в к этому спрайту из вашей программы и не хранить указатель на него. Так как неизвестно существует ли спрайт ещё или уже сработал таймер удаления. Смотрите также функцию spriteDestroy и примечание к ней.

+ +

Параметры:

+ +

lifetime — время в секундах по истечении которого спрайт должен быть удалён. Если 0 или меньше, то спрайт будет удалён немедленно. Если больше 0, то спрайт будет в один из промежутков между вызовами функции перерисовки кадра.

+ +

double spriteGetX(Sprite sprite);

+

double spriteGetY(Sprite sprite);

+

void spriteSetX(Sprite sprite, double x);

+

void spriteSetY(Sprite sprite, double y);

+ +

Получить (Get) либо задать (Set) координаты центра спрайта.

+ +

double spriteGetVelocityX(Sprite sprite);

+

double spriteGetVelocityY(Sprite sprite);

+

void spriteSetVelocityX(Sprite sprite, double x);

+

void spriteSetVelocityY(Sprite sprite, double y);

+

void spriteSetVelocityXY(Sprite sprite, double x, double y);

+ +

Получить (Get) либо задать (Set) координаты вектора скорости спрайта. См. также spriteSetSpeedAndDirection.

+ +

void spriteSetSpeedAndDirection(Sprite sprite, double speed, double angle);

+ +

Задать скорость спрайта через угол направления и абсолютное значение скорости. Если вы не понимаете смысла слов «абсолютное значение», то в здесь подразумевается обычное бытовое значение смысла слова скорость. В данном случае она измеряется в пикселях в секунду.

+ +

Параметры:

+ +

speed — абсолютное значение скорости;
+angle — угол направления движения в градусах. Не путайте, пожалуйста, с отображаемым поворотом спрайта (spriteSetRotation, spriteSetRotateToDirection).

+ +

double spriteGetSpeed(Sprite sprite);

+ +

Возвращает абсолютное значение скорости спрайта. См. также spriteSetSpeedAndDirection.

+ +

double spriteGetDirection(Sprite sprite);

+ +

Возвращает направление движения в градусах. См. также spriteSetSpeedAndDirection. Не путайте, пожалуйста, с отображаемым поворотом спрайта (spriteGetRotation).

+ +

double spriteGetWidth(Sprite sprite);

+

void spriteSetWidth(Sprite sprite, double width);

+ +

Получить (Get) либо задать (Set) ширину спрайта.

+ +

double spriteGetHeight(Sprite sprite);

+

void spriteSetHeight(Sprite sprite, double height);

+ +

Получить (Get) либо задать (Set) высоту спрайта.

+ +

double spriteGetScale(Sprite sprite);

+

void spriteSetScale(Sprite sprite, double scale);

+ +

Получить (Get) либо задать (Set) масштабирование спрайта. Вы можете увеличить ли уменьшить весь спрайт и его физическое тело с сохранением всех пропорций. См. также spriteGetScaledWidth, spriteGetScaledHeight.

+ +

double spriteGetScaledWidth(Sprite sprite);

+ +

Возвращает ширину спрайта с учётом масштабирования. См. также spriteSetScale.

+ +

double spriteGetScaledHeight(Sprite sprite);

+ +

Возвращает высоту спрайта с учётом масштабирования. См. также spriteSetScale.

+ +

double spriteGetRotation(Sprite sprite);

+

void spriteSetRotation(Sprite sprite, double rotation);

+ +

Получить (Get) или задать (Set) поворот спрайта. Не путайте, пожалуйста, с направлением движения спрайта. См. также spriteSetSpeedAndDirection, spriteSetRotateToDirection, spritePointTo.

+ +

double spriteGetRotationSpeed(Sprite sprite);

+

void spriteSetRotationSpeed(Sprite sprite, double rotationSpeed);

+ +

Получить (Get) или задать (Set) скорость вращения спрайта. Да, спрайт имеет ещё и скорость вращения. Вы можете её задать в градусах в секунду и спрайт будет вращаться сам. См. также spriteSetRotation.

+ +

int spriteGetRotateToDirection(Sprite sprite);

+

void spriteSetRotateToDirection(Sprite sprite, int rotateToDirection);

+ +

Получить (Get) или задать (Set) автоматический поворот спрайта вдоль направления движения. rotateToDirection может принимать значение TRUE (число 1) или FALSE (число 0).

+ +

Когда rotateToDirection равно TRUE, спрайт будет автоматически поворачиваться в направлении своего движения (вектора скорости). См. также spriteSetSpeedAndDirection, spriteSetRotation.

+ +

int spriteGetMirrorX(Sprite sprite);

+

void spriteSetMirrorX(Sprite sprite, int mirrorX);

+ +

Получить (Get) или задать (Set) отражение спрайта по оси X.
+Если mirrorX больше или равно 0, то спрайт рисуется как обычно.
+Если mirrorX меньше нуля то рисуется зеркальное отражение спрайта по горизонтали.

+ +

int spriteGetMirrorY(Sprite sprite);

+

void spriteSetMirrorY(Sprite sprite, int mirrorY);

+ +

Получить (Get) или задать (Set) отражение спрайта по оси Y.
+Если mirrorY больше или равно 0, то спрайт рисуется как обычно.
+Если mirrorY меньше нуля то рисуется зеркальное отражение спрайта по вертикали.

+ +

double spriteGetDepth(Sprite sprite);

+

void spriteSetDepth(Sprite sprite, double depth);

+ +

Получить (Get) или задать (Set) показатель глубины спрайта. На переднем плане рисуются спрайты с наименьшим значением глубины, на заднем — с наибольшим. Таким образом задавая глубину спрайтов вы определяете порядок их отрисовки.

+ +

int spriteGetVisible(Sprite sprite);

+

void spriteSetVisible(Sprite sprite, int visible);

+ +

Получить (Get) или задать (Set) видимость спрайта. Может принимать значение TRUE (число 1) — спрайт видно, или FALSE (число 0) — спрайт спрятан.

+ +

int spriteGetTag(Sprite sprite);

+

void spriteSetTag(Sprite sprite, int tag);

+ +

Получить (Get) или задать (Set) метку спрайта. Этот параметр не используется внутри спрайта — заносите сюда любое число которое хотите связать с данным спрайтом.

+ +

int spriteGetDebug(Sprite sprite);

+

void spriteSetDebug(Sprite sprite, int debug);

+ +

Получить (Get) или задать (Set) отображение отладочной информации для данного спрайта. Может принимать значение TRUE (число 1) — включено, или FALSE (число 0) — выключено.

+ +

Когда включено, для данного спрайта рисуется его рамка, центр и значение глубины, даже если спрайт невидим.

+ +

Если в вашей программе что-то пошло не так, включите эту опцию для ваших спрайтов, возможно вы увидите причину ошибки.

+ +

int spriteOverlap(Sprite a, Sprite b);

+ +

Возвращает TRUE если спрайты касаются или накладываются друг на друга. В противном случае возвращает FALSE.

+ +

int spriteCollide(Sprite a, Sprite b, double bounciness);

+ +

Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новые скорости и позиции для указанных спрайтов и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».

+ +

Параметры:

+ +

bounciess — показатель энергии столкновения.

+ +

int spriteBounceOff(Sprite sprite, Sprite other, double bounciness);

+ +

Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новую скорость и позицию для спрайта sprite (спрайт other не меняет своих параметров) и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».

+ +

Параметры:

+ +

bounciess — показатель энергии столкновения.

+ +

int spritePush(Sprite sprite, Sprite other, double bounciness);

+ +

Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новую скорость и позицию для спрайта other (спрайт sprite не меняет своих параметров) и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».

+ +

Параметры:

+ +

bounciess — показатель энергии столкновения.

+ +

int spriteCollideEx(Sprite a, Sprite b, int keepVelocityA, int keepVelocityB, double bounciness);

+ +

Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новые скорости и позиции для указанных спрайтов и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».

+ +

Параметры:

+ +

bounciess — показатель энергии столкновения;
+keepVelocityA — если TRUE то спрайт a не меняет своих параметров и продолжает движение, так будто столкновения не было;
+keepVelocityB — если TRUE то спрайт b не меняет своих параметров и продолжает движение, так будто столкновения не было.

+ +

double spriteGetBounciness(Sprite sprite);

+

void spriteSetBounciness(Sprite sprite, double bounciness);

+ +

Получить (Get) или задать (Set) показатель энергии столкновения для данного спрайта. См. описание физической модели в разделе «Спрайты».

+ +

void spriteSetCollider(Sprite sprite, Collider type, double xOffset, double yOffset, double rotationOffset);

+ +

Устанавливает параметры физического тела спрайта. Размеры тела определяются размерами самого спрайта. Для круга диаметр равен ширине спрайта.

+ +

Параметры:

+ +

type — форма COLLIDER_CIRCLE (круг) или COLLIDER_RECTANGLE (прямоугольник);
+xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
+rotationOffset — поворот физического тела относительно спрайта.

+ +

void spriteSetColliderCircle(Sprite sprite, double xOffset, double yOffset, double radius);

+ +

Задать физическое тела спрайта в виде круга.

+ +

Параметры:

+ +

xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
+radius — радиус круга, если меньше 0, то будет использоваться половина от ширины спрайта.

+ +

void spriteSetColliderRectangle(Sprite sprite, double xOffset, double yOffset, double rotationOffset, double width, double height, double cornersRadius);

+ +

Задать физическое тела спрайта в виде прямоугольника. Прямоугольник может быть со скруглёнными углами.

+ +

Параметры:

+ +

xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
+rotationOffset — поворот физического тела относительно спрайта;
+width — ширина прямоугольника, если меньше 0, то будет использоваться ширина спрайта;
+height — высота прямоугольника, если меньше 0, то будет использоваться высота спрайта;
+cornersRadius — радиус скругления углов.

+ +

void spriteSetColliderEx(Sprite sprite, Collider type, double xOffset, double yOffset, double rotationOffset, double width, double height, double radius);

+ +

Устанавливает полный набор параметров физического тела спрайта.

+ +

Параметры:

+ +

type — форма COLLIDER_CIRCLE (круг) или COLLIDER_RECTANGLE (прямоугольник);
+xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
+rotationOffset — поворот физического тела относительно спрайта;
+width — ширина, используется только для прямоугольника, если меньше 0, то будет использоваться ширина спрайта;
+height — высота, используется только для прямоугольника, если меньше 0, то будет использоваться высота спрайта;
+radius — для круга — его радиус, для прямоугольника — радиус скругления углов.

+ +

void spriteSetAnimation(Sprite sprite, const char *path);

+ +

Задать файл изображения или анимации спрайта. Поддерживаются изображения в формате PNG. Если вместо файла указана папка, то из неё загружаются все файлы PNG в алфавитном порядке — анимация спрайта.

+ +

Параметры:

+ +

path — путь к файлу PNG или к папке с фалами PNG для анимации.

+ +

void spriteSetNoAnimation(Sprite sprite);

+ +

Убрать анимацию и изображение со спрайта — спрайт будет рисоваться в виде простого прямоугольника.

+ +

void spritePlay(Sprite sprite);

+ +

Включить воспроизведение анимации для спрайта. При каждом вызове функции перерисовки окна будет переключаться кадр. Частоту перерисовки окна, а следовательно и частоту кадров для анимации спрайтов, можно задать функцией worldSetFrameRate. См. также spritePause.

+ +

void spritePause(Sprite sprite);

+ +

Остановить анимацию спрайта. См. также spritePlay.

+ +

void spriteNextFrame(Sprite sprite);

+ +

Перейти к следующему кадру анимации. Если это был последний кадр, то перейти к первому (точнее к нулевому).

+ +

void spriteSetFrame(Sprite sprite, int frame);

+ +

Перейти к кадру с заданным номером.

+ +

Параметры:

+ +

frame - номер кадра, кадры нумеруются начиная с нуля.

+ +

void spriteSetShapeColor(Sprite sprite, const char *color);

+ +

Установить цвет прямоугольника спрайта. Только для спрайтов у которых нет изображения или анимации.

+ +

Параметры:

+ +

color — текстовое наименование цвета, см. раздел «Рисование».

+ +

void spriteSetTintColor(Sprite sprite, const char *color);

+ +

Установить цвет подкрашивания спрайта. Компоненты указанного цвета умножаются на компоненты цвета изображения (или базового прямоугольника) спрайта. Таким образом вы можете немного менять цвета в спрайте, а также устанавливать общую прозрачность спрайта.

+ +

Параметры:

+ +

color — текстовое наименование цвета, см. раздел «Рисование».

+ +

void spritePointTo(Sprite sprite, double x, double y);

+ +

Повернуть спрайт по направлению к указанной точке. См. также spriteSetRotation.

+ +

Параметры:

+ +

x, y — координаты точки.

+ +

int mouseIsOver(Sprite sprite);

+ +

Функция возвращает TRUE (число 1) если указатель мыши находится над указанным спрайтом, иначе возвращает FALSE (число 0). См. также раздел «Спрайты».

+ +

int mousePressedOver(Sprite sprite);

+ +

Функция возвращает TRUE (число 1) если любая кнопка мыши нажата (и удерживается) в то время как указатель мыши находится над указанным спрайтом, иначе возвращает FALSE (число 0). См. также раздел «Спрайты».

+ +

int worldGetSpriteCount();

+ +

Возвращает количество спрайтов существующих в программе в данный момент. См. также worldGetSprite.

+ +

Sprite worldGetSprite(int i);

+ +

Возвращает спрайт по указанному номеру. См. также worldGetSpriteCount.

+ +

void drawSprites();

+ +

Вывести все спрайты на экран.

+ +
+ + diff --git a/doc/ru/style.css b/doc/ru/style.css new file mode 100644 index 0000000..c9e4794 --- /dev/null +++ b/doc/ru/style.css @@ -0,0 +1,100 @@ + +body { + margin: auto; + padding: 0; + border: 0; + max-width: 1100px; + height: 100%; + background-color: rgb(100, 100, 100); + font-family: serif; + font-size: 12pt; + line-height: 1.5; +} + +.navigation { + margin: 0; + border: 0; + position: fixed; + width: 300px; + padding: 20px; +} + +.navigation a { + font-family: sans-serif; + font-weight: bold; + text-decoration: none; + color: rgb(220, 220, 220); + color: white; +} +.navigation a:visited { color: rgb(200, 200, 200); } +.navigation a:hover { color: white !important; } +.navigation a:active { color: rgb(180, 180, 180); } + +.navigation hr { + border: 0; + border-top: 1px solid gray; + margin-left: 20px; + width: 100px; +} + + +.content { + margin: 0 0 0 300px; + padding: 20px; + border: 0; + max-width: 800px; + min-height: 100%; + background-color: white; +} + +.content a { + font-family: sans-serif; + font-weight: bold; + text-decoration: none; +} + +p { + margin-top: 10px; + margin-bottom: 20px; +} + +h1, h2, h3, h4, h5 { + font-family: sans-serif; + font-weight: bold; +} + +h1 { + font-size: 18pt; +} + +h2 { + font-size: 14pt; +} + +h3 { + font-size: 12pt; + margin-top: 30px; + margin-bottom: 5px; +} + +h3+h3 { + margin-top: 0; +} + +h4 { + font-size: 10pt; + margin-top: 0; + margin-bottom: 0; +} + +table, th, td { + border: 1px solid gray; + border-collapse: collapse; + padding: 5px; +} + +pre { + border: 1px solid gray; + background-color: rgb(230, 230, 230); + padding: 10px; +} \ No newline at end of file