Kuo toliau tuo mažiau matau susidomėjimo tuo ką rašau, bet kažkaip nesinori viską numesti kai iki pabaigos liko visai nedaug. Taigi paskutinė dalis.

SDL (kitaip sakant Simple DirectMedia Layer).
Dar kitaip sakant tai yra toks labai geras dalykas kurio dėka galima su Perl (ir daug kitų kalbų) padaryti tai, paprastai galima daryti tik su C ir C++. Pirmiausiai reiks instaliuoti SDL.

Čia yra Perl kurtas žaidimas ir jis naudoja SDL ir jam reik instaliuoti SDL: http://fb-win32.sourceforge.net/
Tas pats tiks ir jūsų žaidimui jei jį sukursite ir jo reiks dabar. Linux irgi turi savo paketą sdl-perl.

Čia yra truputis media medžiagos kurią naudos mūsų nagrinėjami pavyzdžiai

001
Čia paprasčiau būt negali. Užkraunam visus naudingus SDL modulius ir sukuriam kintamąjį $app kuris bus mūsų vaizdo plokštuma ir inicijuojam garsą su SDL:Mixer panašiu būdu.

25 ir tolesnės eilutės sukuria tučią, begalinį veikimo ciklą. Tai tarsi žaidimo širdis kuri vis plaka iš naujo neleisdama programai užgesti. Jos viduje turės būti ir pats žaidimo kodas. SDL_QUIT tampa tiesa kaip vartotojas su pele uždaro langą, taigi 36 eilutė užtikrina gerą programos išsijungimą.

Jei 35 eilutę įdėsim:

Tai bus galima paekspermetuoti su kitų mygtukų vardais. Juos sužinoti.

Čia gausiai naudojamos SDL::Timer funcijos norint valdyti programos darbą laike

Dabar čia jau padarytas žaidimo meniu Čia tiesiog naudojama: SDL::Color, SDL::TTFont, SDL::Cursor

Dabar jau artejam prie 200 eilučių ir jau yra pauzė ir klaviatūros mygtukų priėmimas Čia.

Reikalai darosi nuobodūs….pamėginkim išsiaiškint su pele.
Pele mus aprūpina SDL::Event ir panaudotas bus motion_xrel() kuris „stebi“ pelės judėjimą X ašimi. Žaidimo ekranas susikirstytas į X ir Y ašis kaip Dekarto plokštuma ir vienetai yra pikseliai. Žinoma mums reikia, kad viskas nejudėtų kai įjungta pauzė ir tinkamai viską išdėlioti.
Čia

SDL::React naudojamas judesiui. Jis tiesiog „prisimena“ padėtis ir jo viduje yra metodai kurių dėka su tomis padėtimis galima dirbti. Daugma kito kodo naujo tiesiog dirba su tokiais dalykais kaip juodų pėdsakų trynimas paskui judančius objektus. Dedant # ir taip ekspermentuojant nesunku pamatyt ką tiksliai viena ar kita eilutė duoda. Tiesa dar yra naujas masyvas kuris saugos tas vietas kurias reiks perpiešti. Žinoma galima pastoviai perpiešti viską su fill(0, $spalva), bet tai bereikalingas kompiuterio apkrovimas. Bet vis dėlto ir tai naudos šitas žaidimas vėliau, kai bus būtina.

Be to sekantis kodas bus dar ir praturtintas X ašimi lakstančiu kaku norinčiu žmogeliuku. Svarbu suprasti, kaip kuriamas judesys. Kiekvienas kadras turi paslinktą elementą per kažkiek pikselių. Ir kai didinsim sudėtingumą, judesio greitį. Tai tiesiog per daugiau pikselių paslinksim elementą per daugiau pikselių piešiant vieną kadrą. Taigi greitis pas mus matuojamas: pikseliai per kadrą. Mes laikom, kad mūsų žaidimas veiks visur vienodai ftp bus vienodas ir todėl realus greitis vienodas.

Aš neiaiškinu daug smulkmenų tokių kaip tikriausiai jums kiek keistas <=> operatorius. Tikiuosi patys galit isiaiškint ką jis daro badymų keliu.

….Jau 200+ eilučių

Kad iš viso to būtų žaidimas mums trūksta:
1) Bombų
2) Bombų gaudymo ir taškų

Bombos realizuojamos su tuo pačiu jau girdėtu SDL::React tik sunkiau, nes jų judesys priklauso ir nuo X ir nuo Y.

Taškus skaičiuosim su rects_overlap pagalba. Tai labai žaidimams svarbus metodas kurio pagalba galima fiksuoti susidūrimus.
Tai ką jau galima žaisti…
Beabėjo linkmybės kūrimo čia tik prasideda.
Čia būtų smagu ir kada nors pralaimėti ir išsaugoti taškus į bylą „rekordai.txt“, ir sukurti daugiau lygių vis sunkesnių, bet tai jau senesnių, rašytų dalių klausimai kurios turėtumėte nesunkiai spręsti.

Babėjo aš čia neparodžiau visų SDL galimybių ir jums reiktų pažiūrėti Perl SDL dokomentaciją ir ten butinai rasite dar ką nors įdomaus ir pritaikomo jūsų kuriamam žaidimui. Per SDL jūs galite dirbti ir su OpenGL.

Uždavinys paskutinis: sukurti paprastą, grafinį 2D žaidimą.

PABAIGA