-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo02.lpr
86 lines (77 loc) · 2.42 KB
/
demo02.lpr
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
program demo02;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes
{ you can add units after this },sdl2;
var
SDLWindow : PSDL_Window; //вікно
SDLRenderer : PSDL_Renderer; //візуалізатор
SDLEvent : PSDL_Event; //події
isRun : Boolean; //ознака виконання циклу
function Initialize(aCaption : PChar; _w,_h : Integer) : Boolean;
begin
result:=false;
//ініціалізація бібліотеки SDL 2.0
if SDL_Init(SDL_INIT_EVERYTHING)>=0 then begin
//успішна ініціалізація - створюємо вікно
SDLWindow:=SDL_CreateWindow(aCaption,
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
_w,
_h,
SDL_WINDOW_SHOWN);
//якщо вікно створене, створюємо візуалізатор
if SDLWindow<>nil then begin
SDLRenderer:=SDL_CreateRenderer(SDLWindow,-1,0);
if SDLRenderer=nil then begin
WriteLN('SDL error: ',SDL_GetError);
Exit;
end;
end;
//виділення пам'яті для структури обробки подій
New(SDLEvent);
//встановлення ознаки виконання циклу і його запуск
isRun := true;
result:=true;
end;
end;
procedure DoEvents;
begin
//намагаємось відловити подію закриття вікна
if SDL_PollEvent(SDLEvent)=1 then begin
if SDLEvent^.type_=SDL_QUITEV then isRun:=false;
end;
end;
procedure GameLogic;
begin
//тут в майбутньому буде щось прораховуватись
end;
procedure Draw;
begin
//встановимо колір вікна в голубий
SDL_SetRenderDrawColor(SDLRenderer,0,128,255,255);
//очисстити вікно
SDL_RenderClear(SDLRenderer);
//показати вікно на екран
SDL_RenderPresent(SDLRenderer);
end;
procedure Cleanup;
begin
//прибрати за собою - в оберненому порядку створення
Dispose(SDLEvent);
SDL_DestroyRenderer(SDLRenderer);
SDL_DestroyWindow(SDLWindow);
SDL_Quit();
end;
begin
if Initialize('Demo02',640,480) then
while isRun=true do begin
DoEvents;
GameLogic;
Draw;
end;
Cleanup;
end.