You are on page 1of 10

MySDL Adventure

Developer: Amar Tufo Ubuntu Linux 14.04


2014,AmarTufoInteractive
O Autoru
Amar Tufo e !tu"ent #ilo$of!%o& fa%ulteta u 'araevu i in"ie !oftver "eveloper
!a vi(e o" ) &o"ina i!%u!tva u ra$li*itim obla!tima pro&ramirana u&lavnom
mali+ multime"ialni+ apli%acia. U&lavnom e po$nat %ao "eveloper ,inox
-la.er/a, male mu$i*%e apli%acie $a 0in"o1! ) %oa e !voe me!to na(la i na
'ource#or&e !atu. I$me2u o!talo&, Amar e i 1eb "eveloper, blo&&er i o!niva*
1eb !tranice AmarTufoInteractive.
Uvo":
Toli%o puta !am po%u(avao "a nau*im 344 pro&ram!%i e$i% %ro$ ra$li*ite
%ni&e %oe oba(navau 344 e$i% %ro$ tipove po"ata%a, variable, %la!e,
%on!tru%tore, po%a$iva5e, obe%te, polimorfi$am, en%ap!ulacia I na!le2ivane.
Ali &"e e $abava u tome6 -rava $abava u pro&ramiranu na!tae on"a %a"a
!tavarno ne(to napravite I to ne(to prora"i pre" vama. 7ami!lite !vou i"eu,
!%icirate u na papiru, prene!ete na va(e ra*unalo I po"arite o 8ivot. 9 to e
$abava pro&ramirana. :vo (to !toi pre" vama nie ni%a%va %ni&a, nie *lana%,
ovo e moa pri*a o i!%u!tvu, $nanu %oe !am !te%ao tie%om pro&ramirana
ra$ni+ apli%acia, !vome po%u(au "a $ai!ta ne(to napravim a to e i&rica. :va
mali priru*ni% 5e obra"iti pro&ramirane i&rice po" Linux platformom o"
temela "o %raa. :va mali priru*ni% 5e vam po%a$ati %a%o pro&ramirati
unutar Linux Ubuntu/a ;14.04 e %o" mene<, %a%o napi!ati va( prvi 344
pro&ram unutar te%!tualno& ure"ni%a 9mac!/a I %a%o %ompalirati i$borni %o"
pre%o Terminala %ori!te5i =33>=44 %ompaler. ?i moe $nane nie veli%o,
$ato nemote pomi!liti "a !am a ne%i !uper pro&ramer, ne%i vrlo "obar
pro&ramer, ne a !am o( u (%oli, ali pola+%o po!taem %valitetan pro&ramer
%oi !voe $nane mo8e oprav"ati I pono!no &a po%a$ati.
ta je SDL i kako ga instalirati unutar Ubuntu Linux 14.04
'DL ili ;'impleDirect,e"iaLa.er< e ra$vona bibliote%a $a pro&ramirane 2D,
@D i&rica. :ri&inalno e napi!ana u 3 pro&ram!%om e$i%u, ali ra"i vrlo "obro
unutar 344 e$i%a. :mo&u*ava ra$vo apli%acia, i&rica %oe ra"e na vi(e
platformi %ao (to e 0in"o1!, Linux, ,ac:'A, 'olari! I ta%o "ale. ?e&ova
in!talacia na Ubuntu Linux/u !e mo8e obaviti pre%o Terminala. Bo" mene e
trenutno Ubuntu Linux 14.04 ali u%oli%o %ori!tite 1@.10 ili 1@.04, %oman"e %oe
!lie"e ra"it 5e I %o" va!. 7a po*eta% 5emo !amo in!talirati 'DL bibliote%u, a
%a%o bu"emo napre"ovali "ale %ro$ ova mali priru*ni% on"a 5emo in!talirati I
o!tale prate5e bibliote%e %oe nam bu"u trebale, recimo 'DLCttf, 'DLCima&e,
ili 'DLCmixer. Da%le, otvaranem terminala une!ite !le"e5u %oman"u:
sudo at!get install libsdl1."!dev
'l1: :"abir Terminala i$ Da!+/a
Bli%om na Da!+ na va(em Ubuntu, te %ucanem ter, poavit 5e vam !e Terminal
I %a"a !e poavi otvorite &a, te unutar ne&a une!ite %oman"u i$na", (to bi
trebalo "a i$&le"a ova%o.
'l2: In!talacia 'DL bibliote%e pre%o Terminala
A%o !te ve5 ra"ili ne(to ! 'DL bibliote%om on"a nema potrebe "a u nanova
in!talirate, er *ete u !uprotnom "obiti o"&ovor %a%o e 'DL ve* in!taliran na
va( !i!tem. -o!le"na !tvar be$ %oe nie"an pro&ramer ne mo8e, to e "obar
te%!tualni e"itor. ,ala apli%acia %oa prepo$nae !inta%!u 344 pro&ram!%o&
e$i%a I %oa nam poma8e "a na pravilan na*in napi(emo i$vorni %o" na(e&
pro&rama. U !amom !am uvo"u !pomenuo "a *emo %ori!titi 9mac!. Derovali
ili ne, I ne&a mo8emo in!talirati pre%o terminala vrlo e"no!tavnom
%oman"om, a ona e !le"e*a:
sudo at!get install e#a$s
Boraci !u i!ti %ao i %o" in!talirana 'DL/a. U%oli%o vam e in!taliran %ao I %o"
mene on"a nema potreba "a &a nanova in!talirate. A evo %a%o 9mac! i$&le"a
%a"a !e prvi put po%rene.
'l@: I$&le" 9mac! te%!t e"itora
%a&to Linux a ne 'indo(s!u
?ate8e pitane %oe vam i%o mo8e po!taviti e!te: E7a(to Linux a ne 0in"o1!F6
Ba%o o"&ovoriti na ovo pitane a "a pritome ne uvrie"imo 0in"o1!
"evelopere niti preuveli*amo !am Linux. -o!toi e"na mala mana !va%e o!obe
%oa po*ne "a &ovori o Linuxu uop(te. Ba"a !pomenete ova poam, !vi vam
o"vrate: E)aj !oerativni siste#! koriste sa#o *akeriF, ili E)ko to koristi
+ogati, a 'indo(s je skulji, ljudi #ilijone - #ilijone ubijaju svaki danF. 9+
evo ov"e na!tae problem. :%oreli Linuxa(i *e o"ma+ "a vam %a8u "a
&rie(ite. -rvo pravilan i$ra$ e =?U>Linux (to bi naravno u prevo"u bilo =nu!
?ot Unix ili Linux nie Unix. Dru&o !am Linux nie operativni !i!tem, ne&o e
$apravo %ernel, e$&ro %oe po&oni ba$irane operativne !i!teme na i!tom
%ernelu. -a ta%o imamo Linux Debian, Linux ,int, Bali Linux, -3 Linux, Linux
#e"ora, Linux Ubuntu I pre&r(t "ru&i+ !lavni+ distribu$ija. 9+ !a"a ovo
"i!tribucia !am mar%irao namerno $ato (to unutar !vieta Linux/a operativni
!i!temi !e ba$irau na temelu "ru&o& pa !e ta%vi operativni !i!temi na$ivau
"i!tribuciama. 9vo recimo, Linux Ubuntu e ba$iran na o!novu Debiana pa
ta%o %ori!ti .D9G formate "atote%a, ili Linux ,int e u potpuno!ti ba$iran na
o!novu Ubuntu/a pa e !to&a ne&ov %oman"ni terminal potpuno e"na%
Ubuntu/ovom, !tim (to ,int ima lep(i &rafi*%i i$&le" u o"no!u na Ubuntu. 9+
vi"ite ov"e !mo previ(e oti(li unutar Linux/a pa 5e ne%o %a$ati %a%o a
favori$iram Ubuntu Linux !amo $ato (to !am @ &o"ine na nemu, ma ne. 9vo
$a(to Linux a ne 0in"o1!. Hecimo "a pi(ete i&ricu na 0in"o1!/u %oa e
ba$irana na 'DL/u, e+ !a"a ov"e imate e"an mali problem. ,orate $nati
pre%ompalirati 'DL i$ i$vorno& %o"a %ori!te*i $a to po!eban !ofver, I on"a
naravno morate imati namane Di!ual 344 2010 9xpre! ili $nati ra"iti unutar
3o"eGloc%! ID9/a ;Inte&rate" Development 9nviroment<, inte&ri!ano ra$vono
o%ru8ene. ?a%on (to !te !e o"lu*ili %oa o" ova "va ra$vona o%ru8ena "a
%ori!tite, morate manualno unutar Lin%era nave!ti I "o"ati %oe bibliote%e
%ori!tite, recimo !"l.+, !"lCima&e.+, !"lCmixer.+ I ta%o "ale. A on"a morate
"ebu&er/u %a$ati &"e vam e lo%acia =33>=44 %ompalera a%o %ori!tite
3o"eGloc%! a &ore $a Di!ual 344 2010 morate nave!ti lo%aciu "o ,in=0
%ompalera %oi upravo !a"r8i va( =33>=44 %ompaler ili lo%aciu in$lude
fol"era &"e !e nala$i va(a !"l.+ bibliote%a. ?emote me !+vatiti po&re(no nie
"a va! !tra(im, ali ne volim brate "a tro(im pola !ata ili !ate "ra&oceno&
vremena na %onfi&uraciu I po!tavlane ra$vono& o%ru8ena $a potrebe 'DL/a,
e+ to ne volim. ?a Linux/u !ve (to treba "a ura"ite e!te "a otvorite va(
terminal I une!ete %oman"u $a in!talaciu 'DL ra$vone bibliote%e be$ ob$ira
"a li %ori!tite Ubuntu ili ne%u "ru&u "i!tru. ?aravno %oman"a $a in!talaciu
'DL/a ov"e o"&ovara !tri%tno $a Ubuntu, te !e ne mo8e %ori!titi $a "ru&e
"i!tre o!im a%o nemau i!tu !inta%!u %ao !am Ubuntu.
Ali evo e"ne "obre vie!te, a%o !te na Linux ,intu on"a 5e ova %oman"a
perfe%tno ra"iti. Dobra vie!t e ta (to !u vam pomenuti alati $a ra$li%u o"
0in"o1!/a ve* unaprie" in!talirani. ' ob$irom "a *e !vi na(i i$vorni %o"ovi
biti %ompalirani pre%o Terminala %ori!te*i upravo =33>=44, nema on"a
ni%a%ve potrebe ra"iti ne%e manualne po!tav%e niti "o"avane bibliote%a tamo
&"e ne treba.
'l4: Tux ma!%ota Linux/a
.reiranje glavnog ro/ora
?a%on (to !mo upo$nali 'DL, vrieme "a uronemo unutar ne&ova !vieta I
%reiramo na( prvi 'DL pro&ram. Derovatno va! $anima (to to pi(emo I %oi e
to pro&ram. Ge$ ob$ira "a li vi pravite apli%aciu ili i&ricu morate napraviti
&lavni pro$or. =lavni pro$or treba "a ima ove fun%cie a to !u clo!e, minimi$e,
maximi$e, %ao I na!lov !amo& pro$ora (to e obi*no !amo ime apli%acie. ?o
!ve nave"ene fun%cie $avi!e u&lavnom o" namene va(e apli%acie, mo8"a vi
uop(te ne 8elite "a vam apli%acia ima minimi$e a niti maximi$e mo&u*no!t, no
to e opet va(a vola. U na!tav%u *emo %reirati pro$or veli*ine I40x4J0 !a
&ame petlom ili &lavnom petlom. Kto *e nam ona6 9 pa vi"et *ete I (to. ?e
8urite6
#include <SDL/SDL.h>
int main(int argc, char** argv)
{
SDL_Init(SDL_INI_!"!#$%IN&)'
SDL_Sur(ace* )creen'
)creen * SDL_Set"ide+,+de(-./, .0/, 12, SDL_S3S4#567!)'
//creating main l++8
9++l running * true'
//creating 5:S regulat+r
c+n)t int 5:S * 1/'

//creating (e; )et<) +( un)igned integer varia9le)
4int12 )tart' //12 9it<) l+ng integer

;hile(running) //main game l++8 )tart) here
{
)tart * SDL_&etic=)()'
SDL_!vent event'
;hile(SDL_:+ll!vent(>event))
{
//);itch ca)e meth+d
);itch(event.t?8e)
{
ca)e SDL_@4IA
running * (al)e'
9rea=' //main game l++8 end) here
B
B
//l+ginc >> render
SDL_5li8()creen)'
//5:S regulati+n )8ace tr+ugh I( )tatement
i((C////5:S>SDL_&etic=)()D)tart)
SDL_Dela?(C////5:SD(SDL_&etic=)()D)tart))'
B
//cl+)e the SDL
SDL_@uit()'

return /'
B
-o%u(ao !am !re"iti I ulep(ati i$vorni %o" ta%o "a i!ta%nem !va%u $a!ebnu
fun%ciu ili !va%i po!ebni "io u %o"u. Ta%o "a !u !vietlo plavom o$na*ene
bibliote%e ili +e"eri %ao (to e Linclu"e M'DL>'DL.+N, !vietlom $elenom !u
o$na*ene !ve 'DL fun%cie %oe !u %ori(tene u nave"enom pro&ramu, I
naran2a!tom boom !u o$na*eni %omentari. 'inta%!a i$vorno& %o"a e 344 I
%o" %ompalirana ;prevo2ena< i$vorno& %o"a %omentari ne i&rau ni%a%vu
ulo&u, "a%le %ompaler i+ ni%a%o ne tretira fun%ciama ne&o uputama
pro&rameru i$vorno& %o"a &"e !e %oa fun%cia nala$i unutar pro&rama.
?aime %omentari !u ite%a%o "obra pra%!a !va%o& pro&ramera er %a"a vam !e
poavi bu& unutar pro&rama la%(e vam &a e i!praviti a%o !te %omentari!ali va(
i$vorni %o" "o% !te &a pi!ali. 9+ !a"a o!vrnimo !e na na( i$vorni %o" I
po&le"amo na e"an mali i$"voeni li!tin& a to e na(a 1+ile petla, &lavna
petla ili &ame petla.
C ;hile(running) //main game l++8 )tart) here
2 {
1 )tart * SDL_&etic=)()'
. SDL_!vent event'
E ;hile(SDL_:+ll!vent(>event))
- {
F //);itch ca)e meth+d
0 );itch(event.t?8e)
G {
C/ ca)e SDL_@4IA
CC running * (al)e'
C2 9rea=' //main game l++8 end) here
C1 B
C. B
-o%u(at 5u (to e ta*nie mo&u5e I ra$umlivie "a vam oba!nim (ta e &ame
petla ili 1+ile petla. U nave"enom li!tin&u %oi mo8ete vi"eti ov"e &ore,
nala$i !e &ame petla. =ame petla ;en&: &ame loop< e %lu*na %omponenta
!va%e i&rice. Unutar te petle !u po+raneni !vi na*ini upravlana va(e i&rice,
%ontrole, &lavni menii it". 9+ !a"a (to e bitno u ve$i &ame petle. Gitno e (to
unutar ovo&a li!tin&a po!toi e"an uviet i$vr(avana &lavne petle. Di"ite, a
!am !tavio u %omentar na linii 1 >>main &ame loop !tart! +ere. ?a linii 1 !e
nala$i 1+ile petla unutar %oe e po+ranen u!lov, 1+ile;runnin&< . :va u!lov
nam &ovori "a !e e pro&ram i$vr(io, te "a e $apo*eta &lavna petla, a ona !e
i$vr(ava o" linie 1 "o linie 12 ! poavom &lavno&-ro$ora. ?aime, na(a &ame
petla i!pitue u!lov %a"a !e poavi &lavni pro$or, da li je korisnik kliknuo
#i&e# na $lose taster glavnog0ro/ora, a%o e!te, ta !e po"ata% po+rani
unutar 'DLC-oll9vent;Oevent< fun%cie, $atim !e &lavni-ro$or $atvori I on"a
!e i$vr(i linia ca!e 'DLCPuit (to automat!%i $atvori &lavni-ro$or, pre%ine !e
i$vr(avane &lavne petle ta%o (to !e ponovo unutar Oevent po+rani po"ata%
runnin& Q fal!eR I nare"bom brake na linii 12 !e i$a2e i$ &lavne petle ili &ame
petle.
Bomentari:
,olimo va! "a na%on (to pro*itate ovo (to e pre" vama "ate !voe %omentare,
!u&e!tie, po+vale I %riti%e. :vo "elo !e proi$vo"i u e"u%aci!%u !vr+u !amo&
autora, ne&ove namere "a pobol(a I unaprie"i !voe $nane. 'vr+a ovo&a
"ela e ra$vo 2D i&rice pre%o 'DL i 344 unutar Linuxoli%o& o%ru8ena, !to&a
imate na umu "a !u namere autora ovo&a "ela nabole te "a autor ne %ra"e
ni*ie "elo, niti u na!tav%u ovo&a ra"a ne*e ni%a%o %omentari!ati tu2e i"ee,
ra"ove I ta%o "ale. ,olimo va! "a va(i %omentari bu"u a!ni, ra$umlivi %a%o
bi autor mo&ao "a %rene "ale I "ovr(i ovo "elo. Unaprie" Svala6
Developer: Amar TufoR

You might also like