Blame doc/ru/common.html

7a004b
7a004b
7a004b
<meta charset="UTF-8">
7a004b
<link href="style.css" rel="stylesheet" type="text/css">
7a004b
<title>Запуск и общие функции - Helianthus</title>
7a004b
7a004b
7a004b
7a004b
  

Helianthus

7a004b
  

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

7a004b
  

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

7a004b
  

Рисование

7a004b
  

Спрайты

7a004b
  

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

7a004b
  

Камера

7a004b
  

Звук

7a004b
  
7a004b
  

Все функции

7a004b
7a004b
7a004b
7a004b

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

7a004b
7a004b

Для подключения и использования библиотеки Helianthus нужно:

7a004b
- подключить файл <helianthus.h>
7a004b
- создать и зарегистрировать  функции для начальной загрузки и для перерисовки кадра (см. worldSetInit и worldSetDraw)
1badb6
- также вы можете зарегистрировать функцию для выполнения каких-либо действий при завершении программы (worldSetDeinit);
7a004b
- вызвать функцию worldRun для запуска вашей программы

7a004b
7a004b

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

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

После завершения работы Helianthus (при окончании выполнения функции worldRun) все созданные вами объекты библиотеки будут удалены автоматически. Если вы хотите удалить что-то вручную, смотрите функции удаления для соответствующих объектов (spriteDestroy, groupDestroy, soundDestroy, fontDestroy, closeDirectory).

1badb6
1badb6

Вы можете задать размер окна программы функциями worldSetWidth, worldSetHeight и задать заголовок окна функцией worldSetTitle.

1badb6
1badb6

Изначально окно имеет фиксированный размер, который вы можете менять только из программы, командами указанными выше. Однако вы можете это изменить и разрешить пользователю изменять размер окна, смотрите функцию worldSetResizable.

1badb6
1badb6

Окно программы непрерывно перерисовывается с частотой 24 кадра в секунду. Частоту перерисовки вы можете поменять при помощи функции worldSetFrameRate.

1badb6
1badb6

Программа ведёт отсчёт времени и кадров с момента запуска вы можете получить значение этих счётчиков пи помощи функций worldGetSeconds и worldGetFrameCount. Длительность одного кадра можно узнать вызвав функцию worldGetTimeStep.

1badb6
1badb6

Также Helianthus предоставляет некоторые общие функции которые не представлены в стандартном я зыке C:

1badb6
- помощники в генерации случайных чисел (randomNumber, randomFloat);
1badb6
- функции для чтения папок (см. openDirectory);
1badb6
- функции проверки существования файлов и папок — fileExists, directoryExists.
1badb6
- функции для создания всплывающие окна с текстовыми сообщениями (messageBox) и окон для ввода текста (askText, askTextEx).

1badb6
7a004b

Функции:

7a004b
7a004b

void worldSetInit(Callback init);

7a004b
7a004b

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

7a004b
7a004b

Параметры:

7a004b
7a004b

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

7a004b
7a004b

void worldSetDraw(Callback draw);

7a004b
7a004b

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

7a004b
7a004b

Параметры:

7a004b
7a004b

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

7a004b
1badb6

void worldSetDeinit(Callback deinit);

1badb6
1badb6

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

1badb6
1badb6

Параметры:

1badb6
1badb6

deinit — указатель на функцию которая будет выполнена перед завершением программы.

1badb6
7a004b

void worldRun();

7a004b
7a004b

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

7a004b
7a004b

void worldStop();

7a004b
7a004b

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

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

int worldGetWidth();

7a004b
7a004b

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

7a004b
7a004b

void worldSetWidth(int width);

7a004b
7a004b

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

7a004b
7a004b

Параметры:

7a004b
7a004b

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

7a004b
7a004b

int worldGetHeight();

7a004b
7a004b

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

7a004b
7a004b

void worldSetHeight(int height);

7a004b
7a004b

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

7a004b
7a004b

Параметры:

7a004b
7a004b

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

7a004b
1badb6

int worldGetResizable();

1badb6
1badb6

Возвращает TRUE если пользователь имеет возможность изменять размер окна, в противном случае возвращает FALSE.

1badb6
1badb6

void worldSetResizable(int resizable);

1badb6
1badb6

Включает или выключает возможность измерения размеров окна пользователем. Когда включено пользователь может менять размер окна растягивая его, хватаясь за границы, и, появляется кнопка для разворачивания окна на весь экран.

1badb6
1badb6

Параметры:

1badb6
1badb6

resizable — если TRUE, то разрешает пользователю изменять размер окна.

1badb6
1badb6

const char* worldGetTitle();

1badb6
1badb6

Возвращает установленный ранее заголовок окна (строка текста).

1badb6
1badb6

void worldSetTitle(const char *title);

1badb6
1badb6

Установить заголовок окна.

1badb6
1badb6

Параметры:

1badb6
1badb6

title — новый заголовок окна.

1badb6
7a004b

double worldGetFrameRate();

7a004b
7a004b

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

7a004b
7a004b

void worldSetFrameRate(double frameRate);

7a004b
7a004b

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

7a004b
7a004b

Параметры:

7a004b
7a004b

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

7a004b
7a004b

double worldGetTimeStep();

7a004b
7a004b

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

7a004b
7a004b

int worldGetFrameCount();

7a004b
7a004b

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

7a004b
7a004b

double worldGetSeconds();

7a004b
1badb6

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

7a004b
7a004b

int randomNumber(int min, int max);

7a004b
7a004b

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

7a004b
7a004b

Параметры:

7a004b
7a004b

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

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

7a004b
7a004b

double randomFloat();

7a004b
7a004b

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

7a004b
1badb6

Directory openDirectory(const char *path);

1badb6
1badb6

Если папка существует, то функция читает список файлов в папке и сохраняет этот список в памяти. Возвращает значение типа Directory, которое является адресом в памяти — указателем на описание списка внутри библиотеки Helianthus.

1badb6
1badb6

Если папка не существует или её по какой-то причине невозможно открыть, то функция возвращает нулевой указатель (NULL).

1badb6
1badb6

Имена файлов можно получить при помощи функций directoryGetCount и directoryGet. После использования список нужно удалить функцией closeDirectory.

1badb6
1badb6

Пример:

1badb6
1badb6
1badb6
Directory dir = openDirectory("my/directory");
1badb6
if (dir) {
1badb6
    for(int i = 0; i < directoryGetCount(dir); ++i) {
1badb6
        printf("file: %s", directoryGet(dir, i));
1badb6
    }
1badb6
    closeDirectory(dir);
1badb6
}
1badb6
1badb6
1badb6
1badb6

Параметры:

1badb6
1badb6

path — путь к папке.

1badb6
1badb6

void closeDirectory(Directory directory);

1badb6
1badb6

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

1badb6
1badb6

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

1badb6
1badb6

int directoryGetCount(Directory directory);

1badb6
1badb6

Возвращает количество файлов в списке. См. также openDirectory и directoryGet.

1badb6
1badb6

const char* directoryGet(Directory directory, int i);

1badb6
1badb6

Возвращает имя файла с указанным номером из ранее открытого списка. См. также openDirectory и directoryGet.

1badb6
1badb6

Параметры:

1badb6
1badb6

i — номер файла в списке.

1badb6
1badb6

int fileExists(const char *path);

1badb6
1badb6

Возвращает TRUE (число 1) если файл по заданному пути существует, иначе возвращает FALSE (число 0).

1badb6
1badb6

Параметры:

1badb6
1badb6

path — путь к проверяемому файлу.

1badb6
1badb6

int directoryExists(const char *path);

1badb6
1badb6

Возвращает TRUE (число 1) если папке по заданному пути существует, иначе возвращает FALSE (число 0).

1badb6
1badb6

Параметры:

1badb6
1badb6

path — путь к проверяемой папке.

1badb6
1badb6

void messageBox(const char *message);

1badb6
1badb6

Показать окно с текстовым сообщением. Работа программы будет приостановлена, до тех пор пока пользователь не закроет окно (нажав на кнопку OK, например).

1badb6
1badb6

Параметры:

1badb6
1badb6

message — текстовое сообщение.

1badb6
1badb6

void askText(const char *question, char *answer, int maxAnswerSize);

1badb6
1badb6

Создаёт окно для ввода текста. Пользователю будет предоставлена для редактирования строка текста из параметра answer. Работа программы будет приостановлена, до тех пор пока пользователь не закончит ввод и не закроет окно. См. также askTextEx.

1badb6
1badb6

Параметры:

1badb6
1badb6

question — сообщение для пользователя;

1badb6
answer — указатель на строку куда будет сохранён ответ, также этот параметр используется чтобы задать начальное значение для текстового поля;
1badb6
maxAnswerSize — максимальный размер для строки ответа в байтах включая ограничивающий нулевой байт.

1badb6
1badb6

void askTextEx(const char *question, char *answer, int maxAnswerSize, int multiline, int password);

1badb6
1badb6

Создаёт окно для ввода текста. Пользователю будет предоставлен для редактирования текст из параметра answer. Позволяет работать с многострочным текстом и прятать вводимые символы (для ввода пароля). Работа программы будет приостановлена, до тех пор пока пользователь не закончит ввод и не закроет окно. См. также askText.

1badb6
1badb6

Параметры:

1badb6
1badb6

question — сообщение для пользователя;

1badb6
answer — указатель на строку куда будет сохранён ответ, также этот параметр используется чтобы задать начальное значение для текстового поля;
1badb6
maxAnswerSize — максимальный размер для строки ответа в байтах включая ограничивающий нулевой байт;
1badb6
multiline — если TRUE, то будет отображаться поле для ввода многострочного текста;
1badb6
password — если TRUE, то вводимые символы будут спрятаны (можно использовать для ввода паролей).

1badb6
7a004b
7a004b
7a004b