-
Notifications
You must be signed in to change notification settings - Fork 8
/
06-рейлиб.хуя
67 lines (54 loc) · 3.88 KB
/
06-рейлиб.хуя
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
вкл рейлиб;
конст ЦВЕТ_ФОНА := 16%ФФ181818нат;
конст ЦВЕТ_КРАСНЫЙ := 16%ФФ0000ФФнат;
конст ШИРИНА := 50;
конст ВЫСОТА := 50;
// ВАЖНО! Т.к. мы не выравниваем структуры так, как это делает Си, эта
// структура не может быть передана в Рейлиб.
структ Вектор2 нч
икс: вещ;
игрек: вещ;
кц
конст ОБЪЁМ := 10;
пер позиции: массив(ОБЪЁМ, Вектор2);
пер дельты: массив(ОБЪЁМ, Вектор2);
про случайное_вещественное(): вещ то
вернуть получить_случайное_число(0, 100) как вещ / 100.0;
про главная() нч
установить_случайное_семя(69нат);
для индекс := 0..ОБЪЁМ-1 нч
позиции(индекс).икс := случайное_вещественное()*50.0;
позиции(индекс).игрек := случайное_вещественное()*10.0;
дельты(индекс).икс := случайное_вещественное()*400.0;
дельты(индекс).игрек := случайное_вещественное()*200.0;
кц
открыть_окно(800, 600, адрес(«Привет, Raylib!»));
установить_целевую_частоту_кадров(60);
пер пауза: лог := ложь;
пока !пора_закрыть_окно() нч
пер дельта_времени : вещ := получить_время_кадра();
пер ширина_экрана : вещ := получить_ширину_экрана() как вещ;
пер высота_экрана : вещ := получить_высоту_экрана() как вещ;
если нажата_клавиша(КЛАВИША_ПРОБЕЛ) то пауза := !пауза;
начать_рисовать();
очистить_фон(ЦВЕТ_ФОНА);
для индекс := 0..ОБЪЁМ-1 нч
если !пауза нч
пер новая_позиция: Вектор2;
новая_позиция.икс := позиции(индекс).икс + дельты(индекс).икс*дельта_времени;
если новая_позиция.икс -? 0.0 или новая_позиция.икс + ШИРИНА как вещ +? ширина_экрана
то дельты(индекс).икс := -(дельты(индекс).икс); // СДЕЛАТЬ: можно ли как-то распарсить чтобы не нужны были скобки?
иначе то позиции(индекс).икс := новая_позиция.икс;
новая_позиция.игрек := позиции(индекс).игрек + дельты(индекс).игрек*дельта_времени;
если новая_позиция.игрек -? 0.0 или новая_позиция.игрек + ВЫСОТА как вещ +? высота_экрана
то дельты(индекс).игрек := -(дельты(индекс).игрек);
иначе то позиции(индекс).игрек := новая_позиция.игрек;
кц
нарисовать_прямоугольник(позиции(индекс).икс как цел,
позиции(индекс).игрек как цел,
ШИРИНА, ВЫСОТА, ЦВЕТ_КРАСНЫЙ);
кц
закончить_рисовать();
кц
закрыть_окно();
кц