|
|
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 |
|
|
|
acc470 |
Остановить и закрыть программу. Программа всегда закрывается если пользователь нажмёт на крестик в верхнем правом углу окна, но вы можете добавить и свои способы выхода из программы. Например, в функцию перерисовки вы можете вставить возможность выхода по нажатию клавиши 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 |
|