<?xml version="1.0" encoding="windows-1250" ?>
<rss version="2.0">
<channel>
<docs>https://www.mycity.rs/Obavestenja/MyCity-RSS-feeds.html</docs>
<title>MyCity :: C / C++</title>
<link>https://www.mycity.rs/C/</link>
<description>RSS feed 'C / C++' foruma</description>
<language>sr</language>
<ttl>15</ttl>
<lastBuildDate>Sat, 13 Jun 2026 00:57:39 +0100</lastBuildDate>
<item>
	<title>[4] Allegro - Glavni ciklus igre</title>
	<link>https://www.mycity.rs/C/4-Allegro-Glavni-ciklus-igre.html</link>
	<guid>https://www.mycity.rs/?p=1537528</guid>
	<author>nobody@mycity.rs (NIx Car)</author>
	<description>U prošlom tutorijalu smo obradili kako da promenimo font, u ovom tutorijalu ćemo obrađivati glavnu petlju u kojoj se igra izvršava. Ovde ću pokazati kako da na ekranu prikažete reč, koja se pojavljuje slovo po slovo.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Napomena:&lt;/span&gt; Kod za C i C++ se razlikuju. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;C&lt;/span&gt;
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include&amp;lt;allegro.h&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
//posto radimo sa stringovima, dodajemo biblioteku string.h
&lt;br /&gt;
#include&amp;lt;string.h&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
//Ovde sam uveo novu boju, za bojenje teksta na ekranu
&lt;br /&gt;

&lt;br /&gt;
#define TamnoPlava makecol &amp;#40;44, 117, 255&amp;#41;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
#define SirinaEkrana 800
&lt;br /&gt;
#define VisinaEkrana 600
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_init&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;install_keyboard&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_color_depth&amp;#40;32&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_gfx_mode&amp;#40;GFX_AUTODETECT_WINDOWED, SirinaEkrana, VisinaEkrana, 0, 0&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_window_title&amp;#40;&amp;quot;Lekcija 4&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //Uvodimo brojac kako bismo string koji imamo, slovo po slovo, kopirali u jedan prazan string.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int brojac = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; char rec&amp;#91;10&amp;#93; = &amp;quot;Lekcija 4&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char CrtajRec&amp;#91;10&amp;#93; = &amp;quot;&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //Uslov izlaska iz petlje nam je da brojac mora da bude veci ili jednak broju karaktera koje ima promenljiva rec.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while&amp;#40;brojac &amp;lt; strlen&amp;#40;rec&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; CrtajRec&amp;#91;brojac&amp;#93; = rec&amp;#91;brojac&amp;#93;; //Posto ovde kopiramo karaktere, a ne citav string, mozemo koristiti operator dodele, a ne funkciju strcpy&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; brojac++;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; //Ispisujemo trenutni string na ekran.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textout_centre_ex&amp;#40;screen, font, CrtajRec, SirinaEkrana / 2, VisinaEkrana / 2, TamnoPlava, -1&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Funkcija rest zamrzava ekran na odredjeni broj milisekundi, na isti nacin kao funkcija delay&amp;#40;&amp;#41; ili Sleep&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rest&amp;#40;200&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clear_bitmap&amp;#40;screen&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_exit&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
END_OF_MAIN&amp;#40;&amp;#41;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;C++&lt;/span&gt;
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include&amp;lt;allegro.h&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
//posto radimo sa stringovima, dodajemo biblioteku string
&lt;br /&gt;
#include&amp;lt;string&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
//Ovde sam uveo novu boju, za bojenje teksta na ekranu
&lt;br /&gt;

&lt;br /&gt;
#define TamnoPlava makecol &amp;#40;44, 117, 255&amp;#41;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
#define SirinaEkrana 800
&lt;br /&gt;
#define VisinaEkrana 600
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_init&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;install_keyboard&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_color_depth&amp;#40;32&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_gfx_mode&amp;#40;GFX_AUTODETECT_WINDOWED, SirinaEkrana, VisinaEkrana, 0, 0&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_window_title&amp;#40;&amp;quot;Lekcija 4&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Uvodimo brojac kako bismo string koji imamo, slovo po slovo, kopirali u jedan prazan string.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int brojac = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;string rec = &amp;quot;Lekcija 4&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;string CrtajRec = &amp;quot;&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; //Uslov izlaska iz petlje nam je da brojac mora da bude veci ili jednak broju karaktera koje ima promenljiva rec. Za to koristimo metodu length&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while&amp;#40; brojac &amp;lt; rec.length&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; CrtajRec += rec&amp;#91;brojac&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; brojac++;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*Posto je Allegro 4 pisan za rad sa C-om, nas string mroamo konvertovati u string koji je Allegru citljiv.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;To cemo uraditi dodavanjem .c_str&amp;#40;&amp;#41; metode nakon pisanja imena&amp;nbsp; promenljive CratjRec.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textout_centre_ex&amp;#40;screen, font, CrtajRec.c_str&amp;#40;&amp;#41;, SirinaEkrana / 2, VisinaEkrana / 2, TamnoPlava, -1&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Funkcija rest zamrzava ekran na odredjeni broj milisekundi, na isti nacin kao funkcija delay&amp;#40;&amp;#41; ili Sleep&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rest&amp;#40;200&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clear_bitmap&amp;#40;screen&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_exit&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
END_OF_MAIN&amp;#40;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&lt;/code&gt;</description>
	<pubDate>Thu, 09 May 2013 14:08:03 +0100</pubDate>
</item>
<item>
	<title>[3] Allegro - Menjanje fonta</title>
	<link>https://www.mycity.rs/C/3-Allegro-Menjanje-fonta.html</link>
	<guid>https://www.mycity.rs/?p=1532595</guid>
	<author>nobody@mycity.rs (NIx Car)</author>
	<description>Posle dužeg vremena sam odlučio da napišem novi članak o Allegru. &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U prošlom tutorijalu smo videli kako da ispišemo tekst na ekranu. Taj font je jednoličan, i neće vam baš puno koristiti ako želite da napišete neku igru gde želite da imate slova različitih stilova, veličina i  boja.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Allegro 4&lt;/span&gt; ima jedan veliki &lt;span style=&quot;font-style: italic&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;problem&lt;/span&gt;&lt;/span&gt;, a to je da &lt;span style=&quot;font-weight: bold&quot;&gt;može isključivo da čita fontove koji su u .pcx formatu&lt;/span&gt; (a ne u .ttf koji je Windows-ov standardni fajl format za prikazivanje fontova). Taj problem je rešen u Allegru 5.
&lt;br /&gt;
Zato moramo željeni font da konvertujemo iz .ttf u .pcx format. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
To ćemo uraditi na sledeći način:
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Preuzmite sledeću arhivu:
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Ne morate je raspakivati&lt;/span&gt;, samo je otvorite i pokrenite &lt;span style=&quot;font-weight: bold&quot;&gt;ttf2pcx.exe&lt;/span&gt; 
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_227814554_Untitled.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Izaberite &lt;span style=&quot;font-style: italic&quot;&gt;Font&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;veličinu&lt;/span&gt; koju želite. 
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Napomena:&lt;/span&gt; Ukoliko želite dve različite visine za dva fonta istog stila, morate napraviti dva različita .pcx fajla.
&lt;br /&gt;

&lt;br /&gt;
Nakon odabira odgovarajućeg fonta, kliknite na dugme &lt;span style=&quot;font-weight: bold&quot;&gt;Export&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Ukoliko koristite IDE &lt;span style=&quot;font-style: italic&quot;&gt;Code::Blocks&lt;/span&gt;, font eksportujte u folder gde vam se nalazi sam projekat.
&lt;br /&gt;

&lt;br /&gt;
Ukoliko koristite &lt;span style=&quot;font-style: italic&quot;&gt;Visual Studio&lt;/span&gt;, font eksportujte u folder koji nosi ime kao vaš projekat, u folderu vašeg projekta (npr projekat se zove &lt;span style=&quot;font-weight: bold&quot;&gt;projc&lt;/span&gt;, i on se nalazi u podrazumevanoj lokaciji Visual Studija u kojoj se čuvaju projekti. Kod mene je to: &lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Users\Gara\Documents\Visual Studio 2012\Projects\projc&lt;/code&gt; U samom folderu videćete još jedan folder sa imenom projc. Tu trebate smestiti vaš font.). 
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_683443854_Untitled.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_85430491_Untitled.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Kada smo odradili najteži deo posla, preostaje nam samo da taj font dodamo u naš kod. Naš kod izgleda ovako:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include&amp;lt;allegro.h&amp;gt; 
&lt;br /&gt;

&lt;br /&gt;
/*Ovde uvodimo ova tri makroa, kako ne bismo za ispis svakog teksta unosili parametre za boju. */ 
&lt;br /&gt;

&lt;br /&gt;
#define Crvena makecol&amp;#40;255, 0, 0&amp;#41; 
&lt;br /&gt;
#define Zelena makecol&amp;#40;0, 255, 0&amp;#41; 
&lt;br /&gt;
#define Plava makecol&amp;#40;0, 0, 255&amp;#41; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
#define SirinaEkrana 800 
&lt;br /&gt;
#define VisinaEkrana 600 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41; 
&lt;br /&gt;
&amp;#123; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_init&amp;#40;&amp;#41;; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;install_keyboard&amp;#40;&amp;#41;; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_color_depth&amp;#40;32&amp;#41;; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_gfx_mode&amp;#40;GFX_AUTODETECT_WINDOWED, SirinaEkrana, VisinaEkrana, 0, 0&amp;#41;; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_window_title&amp;#40;&amp;quot;Lekcija 3&amp;quot;&amp;#41;; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;/*&amp;nbsp; &amp;nbsp;FONT je struktura u kojoj se nalaze metode za manipulisanje fontovima. 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Metoda load_font ucitava font koji smo napravili sa programom ttf2pcx tacnije to je njen prvi parametar 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;druga dva parametra treba da budu NULL, posto nam oni nece trebati. 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Ukoliko font sa takvim imenom ne postoji, metoda vraca NULL 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;*/ 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;FONT *Font1 =load_font&amp;#40;&amp;quot;font1.pcx&amp;quot;, NULL, NULL&amp;#41;; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;/*Ovde mozete da primetite da je drugi parametar Font1, a to je ime ucitanog fonta. 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Takodje, ukoliko je Font1 == NULL, program vam nece raditi.*/ 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;textout_ex&amp;#40;screen, Font1, &amp;quot;Zdravo svete!&amp;quot;, 100, 100, Zelena , -1&amp;#41;; 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;textout_centre_ex&amp;#40;screen, Font1, &amp;quot;Zdravo svete!&amp;quot;, SirinaEkrana /2, VisinaEkrana /2, Crvena, -1&amp;#41;; 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readkey&amp;#40;&amp;#41;; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;destroy_font&amp;#40;Font1&amp;#41;; /*Na kraju OBAVEZNO treba da se doda ova funkcija, kako ne bi doslo do memory leak-a. */&amp;nbsp; &amp;nbsp;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_exit&amp;#40;&amp;#41;; 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0; 
&lt;br /&gt;
&amp;#125; 
&lt;br /&gt;
END_OF_MAIN&amp;#40;&amp;#41; &lt;/code&gt;</description>
	<pubDate>Thu, 25 Apr 2013 22:47:01 +0100</pubDate>
</item>
<item>
	<title>[2] Allegro - Zatvaranje programa uz pomoc X dugmeta</title>
	<link>https://www.mycity.rs/C/2-Allegro-Zatvaranje-programa-uz-pomoc-X-dugmeta.html</link>
	<guid>https://www.mycity.rs/?p=1472385</guid>
	<author>nobody@mycity.rs (NIx Car)</author>
	<description>Kao sto ste u ranijim tutorijalima primetili, Allegro ima nedostatak da mu X dugme sa gornje desne strane nije ugradjen. Stoga, postoji nacin kako da &amp;quot;stvorimo&amp;quot; X dugme...
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;#include&amp;lt;allegro.h&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
#define SIRINA_EKRANA 800
&lt;br /&gt;
#define VISINA_EKRANA 600
&lt;br /&gt;

&lt;br /&gt;
bool zatvori = false; 
&lt;br /&gt;

&lt;br /&gt;
void proveraZatvaranja() 
&lt;br /&gt;
{
&lt;br /&gt;
	zatvori = true;
&lt;br /&gt;
}
&lt;br /&gt;
END_OF_FUNCTION(proveraZatvaranja) 
&lt;br /&gt;

&lt;br /&gt;
// Funkcija koja se koristi kao callback za zatvaranje prozora mora biti završena komandom END_OF_FUNCTION 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: green&quot;&gt;/*Uvodimo globalnu promenljivu zatvori tipa bool i funkciju proveraZatvaranja, koje 
&lt;br /&gt;
cemo koristiti kako bismo omogucili zatvaranje programa uz pomoc dugmeta X */&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
int main()
&lt;br /&gt;
{
&lt;br /&gt;
	allegro_init();
&lt;br /&gt;
	install_keyboard();
&lt;br /&gt;
	set_color_depth(32);
&lt;br /&gt;
	set_gfx_mode(GFX_AUTODETECT_WINDOWED, SIRINA_EKRANA, VISINA_EKRANA, 0, 0);
&lt;br /&gt;
	set_window_title(&amp;quot;Lekcija 2&amp;quot;);
&lt;br /&gt;
   
&lt;br /&gt;
	LOCK_FUNCTION(proveraZatvaranja);
&lt;br /&gt;
	&lt;span style=&quot;color: green&quot;&gt;//Funkcija koja se koristi kao callback za zatvaranje prozora mora biti zaključana komandom LOCK_FUNCTION 
&lt;br /&gt;
	&lt;/span&gt;
&lt;br /&gt;
LOCK_VARIABLE(zatvori);
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: green&quot;&gt;Sve promenljive koje se koriste u zaključanim funkcijama, a nisu deklarisane kao volatile moraju biti zaključane komandom LOCK_VARIABLE&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
	set_close_button_callback(proveraZatvaranja);
&lt;br /&gt;
	&lt;span style=&quot;color: green&quot;&gt;/*Uz pomoc ove funkcije postavljate dugme X u gornji desni ugao ekrana. 
&lt;br /&gt;
	Kada se klikne na dugme X, izvrsi se funkcija koja se nalazi kao parametar funkcije set_close_button_callback */&lt;/span&gt;
&lt;br /&gt;
	
&lt;br /&gt;

&lt;br /&gt;
	while(!zatvori)
&lt;br /&gt;
	{
&lt;br /&gt;
		textout(screen, font, &amp;quot;ZDRAVO SVETE!&amp;quot;, SIRINA_EKRANA/2, VISINA_EKRANA/2, makecol(255, 0, 0));	
&lt;br /&gt;
	}
&lt;br /&gt;
	&lt;span style=&quot;color: green&quot;&gt;//Kao sto se moze primetiti, uslov ove petlje ce biti sve dok zatvori ne dobije vrednost true, odnosno dokle god korisnik ne klikne na dugme X&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
	allegro_exit();
&lt;br /&gt;

&lt;br /&gt;
	return 0;
&lt;br /&gt;
}
&lt;br /&gt;
END_OF_MAIN()
&lt;br /&gt;

&lt;br /&gt;
&lt;/cite&gt;
&lt;br /&gt;
Ukoliko nekog zanima vise o LOCK_FUNCTION LOCK_VARIABLE makroima, neka poseti sledeci sajt:
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Big big credits to Srki_82  &lt;img src=&quot;https://www.mycity.rs/images/smiles/beer.gif&quot; alt=&quot;Ziveli&quot; border=&quot;0&quot; /&gt;  &lt;img src=&quot;https://www.mycity.rs/images/smiles/beer.gif&quot; alt=&quot;Ziveli&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Wed, 09 Jan 2013 12:17:24 +0100</pubDate>
</item>
<item>
	<title>[1] Allegro - ispis teksta na ekranu</title>
	<link>https://www.mycity.rs/C/1-Allegro-ispis-teksta-na-ekranu.html</link>
	<guid>https://www.mycity.rs/?p=1469211</guid>
	<author>nobody@mycity.rs (NIx Car)</author>
	<description>Sledeća stavka koju ću obrađivati u Allegro tutorijalu jeste štampanje teksta na ekran. 
&lt;br /&gt;

&lt;br /&gt;
Tekst je izuzetno bitan za gaming, zato sto se uz pomoc teksta ispisuje meni na ekranu, uz pomoc teksta se mogu pisati price koje se tiču same igre, i dr...
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;
&lt;br /&gt;
#include&amp;lt;allegro.h&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
#define SIRINA_EKRANA 800
&lt;br /&gt;
#define VISINA_EKRANA 600
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: green&quot;&gt;/* Ove dve globalne promenljive uvodimo iz prostog razloga sto ce nam u daljem programiranju u Allegru visina i sirina ekrana mnogo znaciti.
&lt;br /&gt;
Vi sami ne morate to raditi, no preporučujem vam da to radite, kako biste u toku daljeg programiranja ustedeli vreme.
&lt;br /&gt;
Npr cesto se desi da zaboravite koliki su vam sirina i visna ekrana, a zelite da vam tekst ili vas lik bude tacno na sredini ekrana. Stoga sam uveo ove konstante.*/&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
int main()
&lt;br /&gt;
{
&lt;br /&gt;
	  allegro_init();
&lt;br /&gt;
	  install_keyboard();
&lt;br /&gt;
	  set_color_depth(32);
&lt;br /&gt;
	  set_gfx_mode(GFX_AUTODETECT_WINDOWED, SIRINA_EKRANA, VISINA_EKRANA, 0, 0);
&lt;br /&gt;
	  set_window_title(&amp;quot;Lekcija 2&amp;quot;);
&lt;br /&gt;

&lt;br /&gt;
   &lt;span style=&quot;color: green&quot;&gt; //Standardne funkcije za inicijalizaciju, koje smo obradili u prosloj lekciji
&lt;br /&gt;

&lt;br /&gt;
    //Tekst se ispisuje pozivom funkcije textout&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
	textout(screen, font, &amp;quot;Zdravo svete!&amp;quot;, 300, 325,makecol(255, 0, 0));
&lt;br /&gt;
	
&lt;br /&gt;
	&lt;span style=&quot;color: green&quot;&gt;/*Prvi parametar funkcije trazi u koju BITMAPu zelimo nas tekst da upisem, Allegro ima ugradjenu bitmapu koja se zove screen
&lt;br /&gt;
	i ona predstavlja sam ekran.
&lt;br /&gt;
	
&lt;br /&gt;
	Sledeci parametar je koji font zelimo da stavimo. Posto jos ne znamo kako mozemo da stavimo sopstveni font koristicemo ugradjeni 
&lt;br /&gt;
	font u Allegru koji se poziva tako sto se u drugi parametar upise rec font.
&lt;br /&gt;
	
&lt;br /&gt;
	U trecem parametru pod znake navoda stavimo sta zelimo da napisemo na ekran
&lt;br /&gt;
	
&lt;br /&gt;
	U cetvrtom i petom parametru postavljamo na kojim koordinatama ekrana zelimo da nam se tekst ispise.
&lt;br /&gt;
	
&lt;br /&gt;
	U poslednjem parametru upisujete koje boje zelite da vam bude tekst. To cete uraditi tako sto cete upisati makecol() i tu stavljati boje.
&lt;br /&gt;
	Kao sto je poznato, u racunarskoj tehnici se koriste crvena(Red), zelena(Green) i plava(Blue) boja za prikaz teksta. Stoga parametri makecol funkcije moraju 
&lt;br /&gt;
	biti intenziteti ovih boja. Ukoliko se tesko snalazite, ostavite komentar, pa cu vam dobijanje boja detaljnije objasniti */
&lt;br /&gt;

&lt;br /&gt;
	//Ukoliko zelite da promenite i boju pozadine na kojoj se tekst nalazi, to mozete uraditi dodavanjem _ex ispred funkcije textout&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
	      textout_ex(screen, font, &amp;quot;Zdravo svete!&amp;quot;, 400, 400,makecol(255, 0, 0), makecol(0, 0,255));
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: green&quot;&gt;	//Boju pozadine dobijate na isti nacin kao sto ste dobili i boju samog teksta
&lt;br /&gt;

&lt;br /&gt;
	//Ukoliko zelite da centrirate tekst na odredjenu koordinate (isto kao Wordu ili nekim drugim editorima za obradu teksta), koristite funkciju textout_centre
&lt;br /&gt;
&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
	     textout_centre(screen, font, &amp;quot;Zdravo svete!&amp;quot;, SIRINA_EKRANA/2-100, VISINA_EKRANA/2-100, makecol(0,0,243));
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: green&quot;&gt;	//Kao i kod obicnog textout-a, i ovde, ukoliko zelite da imate pozadinu kod vaseg teksta, samo posle centre dodajte _ex&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
	    textout_centre_ex(screen, font, &amp;quot;Zdravo svete!&amp;quot;, SIRINA_EKRANA/2, VISINA_EKRANA/2, makecol(0,0,243), makecol(255, 0, 0));
&lt;br /&gt;

&lt;br /&gt;
	readkey();
&lt;br /&gt;
	allegro_exit();
&lt;br /&gt;

&lt;br /&gt;
	return 0;
&lt;br /&gt;
}
&lt;br /&gt;
END_OF_MAIN()
&lt;br /&gt;

&lt;br /&gt;
&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Credits: Srki_82  &lt;img src=&quot;https://www.mycity.rs/images/smiles/beer.gif&quot; alt=&quot;Ziveli&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pitanja su dobrodosla &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Sat, 05 Jan 2013 10:37:52 +0100</pubDate>
</item>
<item>
	<title>[0] Allegro - uvod i instalacija</title>
	<link>https://www.mycity.rs/C/0-Allegro-uvod-i-instalacija.html</link>
	<guid>https://www.mycity.rs/?p=1473036</guid>
	<author>nobody@mycity.rs (NIx Car)</author>
	<description>----------- &lt;span style=&quot;font-weight: bold&quot;&gt;Napisano: 04 Jan 2013 20:30&lt;/span&gt; ---------
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;text-align: center; display: block;&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Uvod u Allegro&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;1.Šta je to Allegro?&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Allegro je jedna od mnogobrojnih &lt;span style=&quot;font-style: italic&quot;&gt;3rd party&lt;/span&gt; grafičkih biblioteka, pisana za rad u C i C++ programskim jezicima. U starijoj verziji (verziji 4), koju ću obrađivati u ovim tutorijalima, podržano je 2D programiranje, dok je u novijoj verziji (verziji 5), moguće i 3D programiranje. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;2. Šta moram da znam kako bih počeo da koristim ovu biblioteku?&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Potrebno je poznavanje C ili C++ programskog jezika.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;3.Kako mogu da instaliram &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; i kako bih ga mogao koristiti u Visual Studiju 2010 ili Code::Blocks-u?&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Instalacija je krajnje jednostavna i potrebno je ispratiti neko od ova dva uputstva, u zavisnosti od razvojnog okruženja, kako biste mogli da koristite &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; biblioteku:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;text-align: center; display: block;&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Uputstvo za Visual C++ 2010&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Posetite ovaj link. 
&lt;br /&gt;
- Pod &lt;span style=&quot;font-weight: bold&quot;&gt;Windows Binaries&lt;/span&gt; izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Microsoft Visual Studio 2010,&lt;/span&gt; bilo &lt;span style=&quot;font-weight: bold&quot;&gt;.zip&lt;/span&gt; ili &lt;span style=&quot;font-weight: bold&quot;&gt;.7z&lt;/span&gt; arhivu.
&lt;br /&gt;
- Kada se preuzimanje završi, raspakujte sadržaj arhive bilo gde.
&lt;br /&gt;
- Nakon toga, sadržaj iz &lt;span style=&quot;font-weight: bold&quot;&gt;bin&lt;/span&gt; foldera prebacite u sledeći direktorijum:
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Za 32-bitni Windows:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Program Files \Microsoft Visual Studio 10.0\VC\bin&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Za 64-bitni Windows:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Program Files &amp;#40;x86&amp;#41;\Microsoft Visual Studio 10.0\VC\bin&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
- Po istom principu, prekopirajte sadržaj ostalih foldera (sav sadržaj iz foldera &lt;span style=&quot;font-weight: bold&quot;&gt;lib&lt;/span&gt; prebacite u folder &lt;span style=&quot;font-weight: bold&quot;&gt;lib&lt;/span&gt; od Visual C++ i sav sadržaj iz foldera &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt; prebacite u folder &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt; od Visual C++)
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; To je to! Biblioteka je uspešno instalirana!
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Međutim, Visual C++ ne može da prepozna da li vi želite da radite sa &lt;span style=&quot;font-style: italic&quot;&gt;Allegrom&lt;/span&gt;, stoga ćemo mu zadati komandu da je prepozna. 
&lt;br /&gt;

&lt;br /&gt;
- Idite na &lt;span style=&quot;font-weight: bold&quot;&gt;File -&amp;gt; New -&amp;gt; Empty Project&lt;/span&gt; i projektu zadajte ime po želji.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_123384717_1.jpg.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Kliknite desnim tasterom miša na &lt;span style=&quot;font-weight: bold&quot;&gt;Source Files -&amp;gt; Add -&amp;gt; New Item&lt;/span&gt; i imenujte svoj &lt;span style=&quot;font-style: italic&quot;&gt;source file&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_678616021_2.jpg.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Nakon toga, izaberite padajući meni &lt;span style=&quot;font-weight: bold&quot;&gt;Project-&amp;gt; Properties&lt;/span&gt;
&lt;br /&gt;
 
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_113102703_3.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U Properties-u izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Configuration Properties-&amp;gt; C/C++ -&amp;gt; Linker -&amp;gt; Input&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_135723255_4.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Sa desne strane izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Additional Dependencies&lt;/span&gt; i kliknite na dugme &lt;span style=&quot;font-weight: bold&quot;&gt;Edit&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_135723329_5.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U belo polje za unos teksta, ukucajte 
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;alleg.lib&lt;/code&gt;
&lt;br /&gt;
...i kliknite OK. 
&lt;br /&gt;

&lt;br /&gt;
- Trebali biste dobiti nesto kao na slici:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_193890492_6.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; To je to! Vaš kompajler je spreman za rad sa &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; bibliotekom.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;text-align: center; display: block;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Uputstvo za Code::Blocks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* Ukoliko nemate najnoviju verziju &lt;span style=&quot;font-style: italic&quot;&gt;Code::Blocks&lt;/span&gt;-a prezumite je sa ovog linka. 
&lt;br /&gt;
* Obavezno izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;codeblocks-12.11mingw-setup.exe&lt;/span&gt; jer u suprotnom nećete moći da ispratite ovo uputstvo do kraja!
&lt;br /&gt;

&lt;br /&gt;
- Nakon što ste instalirali &lt;span style=&quot;font-style: italic&quot;&gt;Code::Blocks&lt;/span&gt; posetite ovaj link, i preuzmite &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; biblioteku koja radi sa &lt;span style=&quot;font-weight: bold&quot;&gt;MinGW (gcc 3.3)&lt;/span&gt; kompajlerom. Možete je preuzeti bilo u &lt;span style=&quot;font-weight: bold&quot;&gt;.7z&lt;/span&gt; bilo u &lt;span style=&quot;font-weight: bold&quot;&gt;.zip&lt;/span&gt; formatu.
&lt;br /&gt;
- Sadržaj arhive raspakujte u bilo koji folder.
&lt;br /&gt;
- Nakon toga, sadržaj iz &lt;span style=&quot;font-weight: bold&quot;&gt;bin&lt;/span&gt; foldera prebacite u sledeći direktorijum:
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Za 32-bitni Windows:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Program Files\CodeBlocks\MinGW\bin&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Za 64-bitni Windows:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Program Files &amp;#40;x86&amp;#41;\CodeBlocks\MinGW\bin&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
- Po istom principu, prekopirajte sadržaj ostalih foldera (sav sadržaj iz foldera &lt;span style=&quot;font-weight: bold&quot;&gt;lib&lt;/span&gt; prebacite u folder &lt;span style=&quot;font-weight: bold&quot;&gt;lib&lt;/span&gt; &lt;span style=&quot;font-style: italic&quot;&gt;MiniGW&lt;/span&gt;-a i sav sadržaj iz foldera &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt; prebacite u folder &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt; od &lt;span style=&quot;font-style: italic&quot;&gt;MiniGW&lt;/span&gt;-a)
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; To je to! Uspešno ste instalirali &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; biblioteku!
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Međutim, &lt;span style=&quot;font-style: italic&quot;&gt;Code::Blocks&lt;/span&gt; i &amp;quot;ne zna&amp;quot; da li želite da radite sa &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; bibliotekom. 
&lt;br /&gt;

&lt;br /&gt;
Da bi mu naznačili, da želite da radite sa ovom bibliotekom, ispratite sledeću proceduru: 
&lt;br /&gt;

&lt;br /&gt;
- Kreirajte nov projekat klikom na &lt;span style=&quot;font-weight: bold&quot;&gt;File-&amp;gt; New -&amp;gt; Project&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_150803787_7.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U datom meniju, izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Console Application&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
* U meniju za izbor jezika možete izabrati ili C ili C++, pošto će kodovi raditi, do određene lekcije, i u C i C++ 
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;Napomena:&lt;/span&gt;Kod lekcija kod kojih se kod za C i C++ razlikuje, biće napomenuto!
&lt;br /&gt;

&lt;br /&gt;
- Zadajte svom projektu željeno ime, sačuvajte ga u željeni direktorijum i kliknite na &lt;span style=&quot;font-weight: bold&quot;&gt;Next&lt;/span&gt;, i nakon toga na &lt;span style=&quot;font-weight: bold&quot;&gt;Finish&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_678617191_8.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Nakon toga kliknite na &lt;span style=&quot;font-weight: bold&quot;&gt;Settings-&amp;gt; Compiler&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_135723499_9.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Otvorite karticu &lt;span style=&quot;font-weight: bold&quot;&gt;Linker Settings&lt;/span&gt; i na desnoj strani nađite opciju: &lt;span style=&quot;font-weight: bold&quot;&gt;Other linker options.&lt;/span&gt;
&lt;br /&gt;
- Tu ukucajte sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;-lalleg&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
- Trebalo biste da dobijete nešto kao na slici:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_113102926_10.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- Kliknite na OK.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Čestitam! Uspešno ste podesili &lt;span style=&quot;font-style: italic&quot;&gt;Code::Blocks&lt;/span&gt; da radi sa &lt;span style=&quot;font-style: italic&quot;&gt;Allegro&lt;/span&gt; bibliotekom. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Kako biste bili sigurni da ste dobro ispratili uputstvo ukucajte sledeći kod u vaš &lt;span style=&quot;font-style: italic&quot;&gt;source file&lt;/span&gt;:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include&amp;lt;allegro.h&amp;gt; /*header fajl allegro-a, samo ce vam on biti potreban u narednih par lekcija */ 
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41; 
&lt;br /&gt;
&amp;#123; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_init&amp;#40;&amp;#41;;&amp;nbsp; &amp;nbsp;//Preko ove funkcije se inicijalizujue sam allegro 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;install_keyboard&amp;#40;&amp;#41;; //Preko ove funkcije se instalira tastatura 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;install_mouse&amp;#40;&amp;#41;;&amp;nbsp; //Preko ove funkcije se instalira miš 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;install_timer&amp;#40;&amp;#41;;&amp;nbsp; //Preko ove funkcije se instalira tajmer 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;install_sound&amp;#40;DIGI_AUTODETECT, MIDI_AUTODETECT, &amp;quot;A&amp;quot;&amp;#41;; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //preko ove funkcije se instalira zvuk 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;/* Mnoge od ovih funkcija koje sam koristio necemo koritistiti u prvih par lekciija, ali je dobro da se zna da one postoje */ 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_color_depth&amp;#40;32&amp;#41;;&amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*Ovde kao parametar mozete staviti ili 16 ili 32 opciju, u zavisnosti od toga koja dubina boja vama odgovara */ 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_gfx_mode&amp;#40;GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0&amp;#41;; 
&lt;br /&gt;
&amp;nbsp;/*Preko ovoga se postavlja sam ekran. Ukoliko zelite da vam se program pokrene u fullscreenu izbacite _WINDOWED deo. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Drugi parametar ove funkcije predstavlja duzinu ekrana a treci parametar predstavlja visinu ekrana. 
&lt;br /&gt;

&lt;br /&gt;
Poslednja dva parametra vam nece trebati u praksi, stoga nema potrebe ni da ih objasnjavam. */ 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;set_window_title&amp;#40;&amp;quot;Lekcija&amp;quot;&amp;#41;; 
&lt;br /&gt;
//Naziv aplikacije koje ce biti ispisano u gornjem levom uglu prozora aplikacije. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readkey&amp;#40;&amp;#41;; /*ova funkcija je identicna funkciji getch&amp;#40;&amp;#41;; sto znaci da ceka da korisnik pritisne neko dugme kako bi se kod nastavio izvrsavati */ 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;allegro_exit&amp;#40;&amp;#41;; //izlazak iz allegra 
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0; //kraj programa 
&lt;br /&gt;
&amp;#125; 
&lt;br /&gt;
END_OF_MAIN&amp;#40;&amp;#41; 
&lt;br /&gt;
/* Obavezno je staviti ovo na kraju programa u suprotnom program nece raditi tj nece se iskompajlirati! */
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Ukoliko ste sve ispratili do kraja, program bi trebao da vam se pokrene bez problema &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Credits: ThePhilosopher, Srki_82  &lt;img src=&quot;https://www.mycity.rs/images/smiles/beer.gif&quot; alt=&quot;Ziveli&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;

&lt;br /&gt;
----------- &lt;span style=&quot;font-weight: bold&quot;&gt;Dopuna: 10 Jan 2013 1:19&lt;/span&gt; ---------
&lt;br /&gt;

&lt;br /&gt;
 Svima koji su pratili ovaj tutorijal i naisli na gresku, ja se najiskrenije izvinjavam. 
&lt;br /&gt;
Problem je u tome sto je ovaj tutorijal pisan za verziju 4.2 a ne za verziju 4.4 koja je data u linkovima.  &lt;img src=&quot;https://www.mycity.rs/images/smiles/brickwall.gif&quot; alt=&quot;GUZ - Glavom U Zid&quot; border=&quot;0&quot; /&gt;  Linkovi su ispravljeni, i tutorijal sada najnormalnije radi. Izvinjavam se jos jednom &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Zahvaljujem drugu Momiru Kosticu koji je uocio ovaj moj veliki previd  &lt;img src=&quot;https://www.mycity.rs/images/smiles/beer.gif&quot; alt=&quot;Ziveli&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Fri, 04 Jan 2013 20:30:13 +0100</pubDate>
</item>
<item>
	<title>[2] Pravljenje igre Sokoban u C++ [programiranje]</title>
	<link>https://www.mycity.rs/C/2-Pravljenje-igre-Sokoban-u-C-programiranje-2.html</link>
	<guid>https://www.mycity.rs/?p=1476883</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>----------- &lt;span style=&quot;font-weight: bold&quot;&gt;Napisano: 02 Dec 2012 16:45&lt;/span&gt; ---------
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 24px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[1] Uvod&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[2] Igra i stanja igre&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[3] Glavna petlja&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[4] Glavni meni&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[5] Logika za učitavanje i pomeranje&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[6] Prikaz i igranje nivoa&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[7] Završavanje i testiranje igre&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[1] Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U ovom delu ćemo napraviti igru uz pomoć objektno orijentisanog programiranja (OOP). Podelićemo program na logične celine i time ćemo sebi olakšati pisanje programa. Svaka celina će videti samo onaj deo programa koji je za nju bitan, a to znači da će kod biti mnogo jednostavniji za čitanje i imaćemo manje šansi da napravimo grešku prilikom pisanja.
&lt;br /&gt;

&lt;br /&gt;
Za početak, napravite nov projekat, dajte mu ime &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-sb&lt;/span&gt; i podesite sve što je potrebno za upotrebu &lt;span style=&quot;font-style: italic&quot;&gt;SFML-a&lt;/span&gt; kao što smo uradili u &lt;a href=&quot;http://www.mycity.rs/C/1-Pravljenje-igre-Sokoban-u-C-izbor-IDE-a-i-planiranje-2.html&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prethodnom uputstvu&lt;/a&gt;. Za sada nema potrebe da pravite &lt;span style=&quot;font-weight: bold&quot;&gt;main.cpp&lt;/span&gt; datoteku.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2] Igra i stanja igre&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Da bismo lakše napravili igru, podelićemo je na deo koji je zadužen za kreiranje prozora, čitanje poruka i slično, i na delove koji će obrađivati konkretna stanja igre. U našem primeru ćemo imati samo dva stanja: jedno za glavni meni, jedno za igranje igre.
&lt;br /&gt;

&lt;br /&gt;
Prvo ćemo definisati klasu &lt;span style=&quot;font-weight: bold&quot;&gt;Game&lt;/span&gt;, koja će se brinuti o svemu što nema veze sa konkretnim stanjem igre, od kreiranja prozora, preko čitanja poruka, do zatvaranja prozora. Osim rada sa prozorom, ona će morati da zna i koja su sve stanja registrovana i koje je trenutno stanje igre.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;game.h&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#ifndef GAME_H_
&lt;br /&gt;
#define GAME_H_
&lt;br /&gt;

&lt;br /&gt;
#include &amp;lt;SFML&amp;gt;
&lt;br /&gt;
#include &amp;lt;map&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
class GameState;
&lt;br /&gt;

&lt;br /&gt;
class Game
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Game&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;~Game&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void addState&amp;#40;int id, GameState *state&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int run&amp;#40;int id&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void changeState&amp;#40;int id&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void close&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;RenderWindow *getWindow&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;enum States
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;MainMenuState,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;PlayState
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
private&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;RenderWindow *window;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;map&amp;lt;int&amp;gt; states;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int next;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
#endif /* GAME_H_ */&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Konstruktor i destruktor ćemo iskoristiti za pripremanje/oslobađanje potrebnih objekata za rad igre.
&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;addState&lt;/span&gt; će služiti za registrovanje stanja igre. Samo stanja registrovana ovom funkcijom će biti na raspolaganju prilikom pokretanja igre.
&lt;br /&gt;
Pozivom funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;run&lt;/span&gt; ćemo pokrenuti glavnu petlju i proslediti početno stanje igre.
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;changeState&lt;/span&gt; se koristi u toku izvršavanja igre, kada igra treba da pređe iz jednog u drugo stanje.
&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;close&lt;/span&gt; služi za zatvaranje prozora i gašenje igre, dok preko funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;getWindow&lt;/span&gt; stanja igre mogu da dostupaju do prozora za crtanje.
&lt;br /&gt;

&lt;br /&gt;
Privatne promenljive ćemo koristiti za čuvanje prozora, registrovanih stanja i stanja u koje igra treba da pređe u sledećem izvršavanju glavne petlje.
&lt;br /&gt;

&lt;br /&gt;
Sve ovo ćemo detaljnije proći kada stignemo do implementacije klase &lt;span style=&quot;font-weight: bold&quot;&gt;Game&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Stanja igre moraju imati par unapred definisanih funkcija koje će služiti kao interfejs za komunikaciju između njih i klase &lt;span style=&quot;font-weight: bold&quot;&gt;Game&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;gamestate.h&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#ifndef GAMESTATE_H_
&lt;br /&gt;
#define GAMESTATE_H_
&lt;br /&gt;

&lt;br /&gt;
#include &amp;lt;SFML&amp;gt;
&lt;br /&gt;
#include &amp;quot;game.h&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
class GameState
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;GameState&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;virtual ~GameState&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;virtual void enter&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;virtual void leave&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;virtual void event&amp;#40;sf&amp;#58;&amp;#58;Event *event&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;virtual void update&amp;#40;float elapsedTime&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;virtual void render&amp;#40;&amp;#41; = 0;
&lt;br /&gt;

&lt;br /&gt;
protected&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Game *game;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;friend class Game;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
#endif /* GAMESTATE_H_ */&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovo je samo osnovna klasa za stanja koja mora biti nasleđena da bi mogli da implementiramo drugačije ponašanje za svako stanje. U svakom slučaju, sva stanja nasleđivanjem ove klase dobijaju sve funkcije koje su ovde definisane.
&lt;br /&gt;

&lt;br /&gt;
Funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;enter&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;leave&lt;/span&gt; će klasa &lt;span style=&quot;font-weight: bold&quot;&gt;Game&lt;/span&gt; pozvati svaki put kada uđe/izađe iz trenutnog stanja. Na taj način se stanja mogu pravilno pripremiti prilikom ulazka, i osloboditi resurse prilikom izlaska.
&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;event&lt;/span&gt; će biti pozvana svaki put kada se nešto desi s prozorom ili kada igrač nešto uradi na mišu ili tastaturi. Preko ove funkcije će stanja moći da reaguju na igračeve akcije.
&lt;br /&gt;
Funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;update&lt;/span&gt; će stanja koristiti za osvežavanje pozicija, boja, veličina i svih drugih osobina koje će imati objekti u njima. Kao parametar će dobiti koliko vremena je prošlo od zadnjeg osvežavanja, tako možemo animirati objekte jednako dugo na svim računarima, bez obzira da li su brzi ili spori.
&lt;br /&gt;
Preko funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;render&lt;/span&gt; će stanja crtati objekte koji moraju biti na ekranu.
&lt;br /&gt;

&lt;br /&gt;
Promenljiva &lt;span style=&quot;font-weight: bold&quot;&gt;game&lt;/span&gt; će biti postavljena od strane klase &lt;span style=&quot;font-weight: bold&quot;&gt;Game&lt;/span&gt; prilikom registrovanja stanja, i služiće za dostup do prozora za crtanje, za promenu trenutno aktivnog stanja ili za gašenje igre.
&lt;br /&gt;

&lt;br /&gt;
Klasa &lt;span style=&quot;font-weight: bold&quot;&gt;GameState&lt;/span&gt; implementira sve funkcije osim &lt;span style=&quot;font-weight: bold&quot;&gt;render&lt;/span&gt;, tako da ostala stanja ne moraju da implementiraju funkcije koje ih ne zanimaju.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;gamestate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#include &amp;quot;gamestate.h&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
GameState&amp;#58;&amp;#58;GameState&amp;#40;&amp;#41; &amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game&amp;#40;0&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
GameState&amp;#58;&amp;#58;~GameState&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void GameState&amp;#58;&amp;#58;enter&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void GameState&amp;#58;&amp;#58;leave&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void GameState&amp;#58;&amp;#58;event&amp;#40;sf&amp;#58;&amp;#58;Event* event&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void GameState&amp;#58;&amp;#58;update&amp;#40;float elapsedTime&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3] Glavna petlja&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Glavna petlja je srce cele igre. Zadužena je čitanje poruka kao što su klik miša ili pritisak tastera na tastaturi, i obradu istih. Mi ćemo našu glavnu petlju tako organizovati da ona samo čita poruke i prosleđuje ih objektu koji predstavlja trenutno stanje igre. U tom objektu će se vršiti obrada poruka. Glavnu petlju ćemo implementirati u klasi &lt;span style=&quot;font-style: italic&quot;&gt;Game&lt;/span&gt;. Pre nego što je napišemo, obradićemo funkcije koje pripremaju sve za početak izvršavanja, a kasnije i oslobađaju sve resurse pre gašenja igre.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;game.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;SFML&amp;gt;
&lt;br /&gt;
#include &amp;quot;game.h&amp;quot;
&lt;br /&gt;
#include &amp;quot;gamestate.h&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
Game&amp;#58;&amp;#58;Game&amp;#40;&amp;#41; &amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;next&amp;#40;-1&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;window = new sf&amp;#58;&amp;#58;RenderWindow&amp;#40;sf&amp;#58;&amp;#58;VideoMode&amp;#58;&amp;#58;GetDesktopMode&amp;#40;&amp;#41;, &amp;quot;SFML Sokoban&amp;quot;, sf&amp;#58;&amp;#58;Style&amp;#58;&amp;#58;Fullscreen&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
Game&amp;#58;&amp;#58;~Game&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;map&amp;lt;int&amp;gt;&amp;#58;&amp;#58;iterator it = states.begin&amp;#40;&amp;#41;; it != states.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;delete it-&amp;gt;second;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete window;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void Game&amp;#58;&amp;#58;addState&amp;#40;int id, GameState* state&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;states&amp;#91;id&amp;#93; = state;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;state-&amp;gt;game = this;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void Game&amp;#58;&amp;#58;changeState&amp;#40;int id&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;next = id;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void Game&amp;#58;&amp;#58;close&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;window-&amp;gt;Close&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
sf&amp;#58;&amp;#58;RenderWindow *Game&amp;#58;&amp;#58;getWindow&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return window;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Konstruktor uz pomoć &lt;span style=&quot;font-style: italic&quot;&gt;SFML&lt;/span&gt; kreira prozor koji će zauzeti ceo ekran.
&lt;br /&gt;
Destruktor je zadužen za oslobađanje svih registrovanih stanja i gašenje prozora.
&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;addState&lt;/span&gt; samo dodaje prosleđeno stanje u interni registar i povezuje ga sa prosleđenim &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; brojem, koji se može koristiti kasnije za lakše pronalaženje registrovanih stanja.
&lt;br /&gt;
Funkcijom &lt;span style=&quot;font-weight: bold&quot;&gt;changeState&lt;/span&gt; ćemo obavestiti glavnu petlju da u sledećoj iteraciji želimo da promenimo trenutno stanje. Ovu funkciju ćemo koristiti za prelazak iz glavnog menija u samu igru, i nazad.
&lt;br /&gt;
Funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;close&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;getWindow&lt;/span&gt; su prilično jasne &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; Koriste se za dostup do prozora za crtanje i njegovo gašenje što će izazvati prekid glavne petlje.
&lt;br /&gt;

&lt;br /&gt;
Sada možemo napisati i glavnu petlju:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;game.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;int Game&amp;#58;&amp;#58;run&amp;#40;int id&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Clock clock;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;next = -1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;GameState* state = states&amp;#91;id&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;state-&amp;gt;enter&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while &amp;#40;window-&amp;gt;IsOpened&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Event event;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#40;window-&amp;gt;GetEvent&amp;#40;event&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;event.Type == sf&amp;#58;&amp;#58;Event&amp;#58;&amp;#58;Closed&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;window-&amp;gt;Close&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;state-&amp;gt;event&amp;#40;&amp;amp;event&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;state-&amp;gt;update&amp;#40;clock.GetElapsedTime&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;clock.Reset&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;window-&amp;gt;Clear&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;state-&amp;gt;render&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;window-&amp;gt;Display&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;next != -1&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;state-&amp;gt;leave&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;state = states&amp;#91;next&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;state-&amp;gt;enter&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;next = -1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;state-&amp;gt;leave&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return EXIT_SUCCESS;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Na početku inicijalizujemo interni sat, postavljamo aktivno stanje i pozivamo njegovu funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;enter,&lt;/span&gt; zatim se pokreće glavna petlja, a na kraju funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;leave&lt;/span&gt; trenutno aktivnog stanja.
&lt;br /&gt;
Glavna petlja će se vrteti sve dok je prozor otvoren. Na ulasku u petlju se proveravaju poruke koje su stigle od završetka zadnje iteracije i prosleđuju se trenutno aktivnom stanju preko funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;event&lt;/span&gt;. U slučaju da smo dobili poruku da je korisnik pritisnuo X na prozoru, Alt+F4 ili neku drugu prečicu koja treba da zatvori prozor, dobićemo poruku &lt;span style=&quot;font-weight: bold&quot;&gt;sf::Event::Closed&lt;/span&gt;, a u tom slučaju zatvaramo prozor.
&lt;br /&gt;

&lt;br /&gt;
Posle obrade poruka, dajemo stanju šansu da osveži svoje objekte tako što ćemo pozvati funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;update&lt;/span&gt;, a zatim pozivamo i funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;render&lt;/span&gt; koja će iscrtati objekte na ekran.
&lt;br /&gt;

&lt;br /&gt;
Pre završetka iteracije, proveravamo da li je potrebno promeniti stanje. U slučaju da jeste, pozivamo funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;leave&lt;/span&gt; za trenutno stanje, menjamo stanje i obaveštavamo ga da se pripremi tako što pozivamo funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;enter&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Ovim se iteracija glavne petlje završava i odmah zatim počinje nova sve dok se prozor ne zatvori. Pisanjem glavne petlje na ovaj način smo kompletnu logiku za obradu poruka, osvežavanje i crtanje objekata izvukli iz klase &lt;span style=&quot;font-weight: bold&quot;&gt;Game&lt;/span&gt; i omogućili svakom stanju da na svoj jedinstven način implementira sve što mu je potrebno.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4] Glavni meni&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ovo je prvo stanje koje ćemo napraviti. Zadatak glavnog menija je da prikaže dve opcije (početak igre i izlaz)... da bi prozor izgledao lepše, uz te dve opcije ćemo prikazati i pozadinsku sliku.
&lt;br /&gt;

&lt;br /&gt;
Klasa glavnog menija će naslediti klasu &lt;span style=&quot;font-style: italic&quot;&gt;GameState&lt;/span&gt; i dodati funkcije i promenljive koje su joj potrebne za rad:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenustate.h&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#ifndef MAINMENUSTATE_H_
&lt;br /&gt;
#define MAINMENUSTATE_H_
&lt;br /&gt;

&lt;br /&gt;
#include &amp;lt;vector&amp;gt;
&lt;br /&gt;
#include &amp;quot;gamestate.h&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
class MainMenuState&amp;#58; public GameState
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;MainMenuState&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void enter&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void leave&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void event&amp;#40;sf&amp;#58;&amp;#58;Event *event&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void update&amp;#40;float elapsedTime&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void render&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
private&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;enum Menu
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Play,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Exit,
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;First = Play,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Last = Exit
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Image *bgImage;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Sprite *bgSprite;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt; menu;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float time;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int currentMenu;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
#endif /* MAINMENUSTATE_H_ */&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Dodane interne promenljive služe za učitavanje i prikazivanje pozadinske slike, i pripremanje, animiranje i prikaz opcija menija.
&lt;br /&gt;

&lt;br /&gt;
Krenimo redom kroz funkcije koje ova klasa implementira. Prilikom ulaska u stanje se poziva funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;enter&lt;/span&gt; čiji je cilj da pripremi sve resurse za dalji rad:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenustate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void MainMenuState&amp;#58;&amp;#58;enter&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgImage = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!bgImage-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/mainmenu.jpg&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;bgImage-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/mainmenu.jpg&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgSprite = new sf&amp;#58;&amp;#58;Sprite&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgSprite-&amp;gt;SetImage&amp;#40;*bgImage&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float scaleX, scaleY, scale;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scaleX = &amp;#40;float&amp;#41;&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetWidth&amp;#40;&amp;#41;&amp;#41; / bgImage-&amp;gt;GetWidth&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scaleY = &amp;#40;float&amp;#41;&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetHeight&amp;#40;&amp;#41;&amp;#41; / bgImage-&amp;gt;GetHeight&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scale = scaleX &amp;gt; scaleY ? scaleX &amp;#58; scaleY;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgSprite-&amp;gt;SetScale&amp;#40;scale, scale&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu.resize&amp;#40;Last + 1, 0&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Play&amp;#93; = new sf&amp;#58;&amp;#58;String&amp;#40;&amp;quot;Play&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Exit&amp;#93; = new sf&amp;#58;&amp;#58;String&amp;#40;&amp;quot;Exit&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float centerX, centerY;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;FloatRect rect;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;rect = menu&amp;#91;Play&amp;#93;-&amp;gt;GetRect&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;centerX = &amp;#40;rect.Right - rect.Left&amp;#41; / 2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;centerY = &amp;#40;rect.Bottom - rect.Top&amp;#41; / 2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Play&amp;#93;-&amp;gt;SetCenter&amp;#40;centerX, centerY&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Play&amp;#93;-&amp;gt;SetSize&amp;#40;40&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Play&amp;#93;-&amp;gt;SetPosition&amp;#40;100, 100&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;rect = menu&amp;#91;Exit&amp;#93;-&amp;gt;GetRect&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;centerX = &amp;#40;rect.Right - rect.Left&amp;#41; / 2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;centerY = &amp;#40;rect.Bottom - rect.Top&amp;#41; / 2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Exit&amp;#93;-&amp;gt;SetCenter&amp;#40;centerX, centerY&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Exit&amp;#93;-&amp;gt;SetSize&amp;#40;40&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;Exit&amp;#93;-&amp;gt;SetPosition&amp;#40;100, 155&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;time = 0;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sve resurse (slike i nivoe) ćemo snimiti u direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;resources&lt;/span&gt; u projektu. Za pozadinu glavnog menija ćemo iskoristiti sliku &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenu.jpg&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Korišćenjem klasa &lt;span style=&quot;font-weight: bold&quot;&gt;sf::Image&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;sf::Sprite&lt;/span&gt; možemo učitati i prikazati slike. Pošto želimo da se slika ne deformiše na različitim rezolucijama, moramo da izračunamo odnos širine i visine prozora, i na osnovu toga prilagodimo veličinu slike.
&lt;br /&gt;

&lt;br /&gt;
Nakon učitavanja pozadine, kreiramo dva objekta tipa &lt;span style=&quot;font-weight: bold&quot;&gt;sf::String&lt;/span&gt; koji znaju da prikažu tekst na ekranu. Uz pomoć te klase možemo lako da podesimo lokaciju, veličinu i druge osobine teksta.
&lt;br /&gt;

&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;leave&lt;/span&gt; mora da oslobodi sve resurse koji su kreirani u stanju:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenustate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void MainMenuState&amp;#58;&amp;#58;leave&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete bgSprite;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete bgImage;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;iterator it = menu.begin&amp;#40;&amp;#41;; it != menu.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;delete *it;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu.clear&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sledeća funkcija koju ćemo implementirati je &lt;span style=&quot;font-weight: bold&quot;&gt;event&lt;/span&gt; i ona će obrađivati korisničke akcije:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenustate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void MainMenuState&amp;#58;&amp;#58;event&amp;#40;sf&amp;#58;&amp;#58;Event* event&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;event-&amp;gt;Type == sf&amp;#58;&amp;#58;Event&amp;#58;&amp;#58;KeyPressed&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;switch &amp;#40;event-&amp;gt;Key.Code&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Up&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;--currentMenu;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Down&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;++currentMenu;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Return&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;currentMenu == Play&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;changeState&amp;#40;Game&amp;#58;&amp;#58;PlayState&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else if &amp;#40;currentMenu == Exit&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;close&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;currentMenu &amp;lt;First&amp;gt; Last&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;currentMenu = First;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;iterator it = menu.begin&amp;#40;&amp;#41;; it != menu.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#40;*it&amp;#41;-&amp;gt;SetScale&amp;#40;1, 1&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U ovom delu nas interesuju samo poruke koje dolaze sa tastature. U slučaju da igrač pritisne gore ili dole, menjamo trenutno aktivnu akciju. U slučaju da igrač pritisne enter, menjamo trenutno stanje na &lt;span style=&quot;font-weight: bold&quot;&gt;Game::PlayState&lt;/span&gt; ili izlazimo iz igre, u zavisnosti od izabrane akcije.
&lt;br /&gt;

&lt;br /&gt;
Na kraju resetujemo veličine akcija na normalu da bi igraču na vizualan način prikazali koja je aktivna akcija.
&lt;br /&gt;

&lt;br /&gt;
U &lt;span style=&quot;font-weight: bold&quot;&gt;update&lt;/span&gt; funkciji ćemo animirati trenutno aktivnu akciju tako što ćemo joj menjati veličinu:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenustate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void MainMenuState&amp;#58;&amp;#58;update&amp;#40;float elapsedTime&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;time += elapsedTime;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;menu&amp;#91;currentMenu&amp;#93;-&amp;gt;SetScale&amp;#40;1.2f + sin&amp;#40;time * 15&amp;#41; * 0.05f, 1.2f + sin&amp;#40;time * 15&amp;#41; * 0.05f&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Aktivna akcija će polako pulsirati, dok će neaktivna biti standardne veličine.
&lt;br /&gt;

&lt;br /&gt;
Za kraj nam ostaje funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;render&lt;/span&gt; koja će prikazati pozadinsku sliku i akcije:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;mainmenustate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void MainMenuState&amp;#58;&amp;#58;render&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;*bgSprite&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;iterator it = menu.begin&amp;#40;&amp;#41;; it != menu.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;**it&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
To je sve što je potrebno da bi glavni meni radio. Kao što vidite, kompletna logika se nalazi u &lt;span style=&quot;font-weight: bold&quot;&gt;event&lt;/span&gt; funkciji... ostale funkcije su tu samo da bi se brinule o resursima i crtanju.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[5] Logika za učitavanje i pomeranje&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Da bismo sebi olakšali pisanje programa, napravićemo jednu pomoćnu klasicu čiji zadatak će biti da učitava nivoe i vrši provere i pomeranja objekata po mapi. Vrlo bitna stvar je da ova klasa neće raditi ništa s grafikom. Ona će imati samo memorijski model nivoa, a druge klase će taj model moći da iskoriste za crtanje.
&lt;br /&gt;

&lt;br /&gt;
U ovoj klasi ćemo definisati vrste polja koja se mogu nalaziti u mapi, pokrete koje igrač može da napravi i, naravno, mapu nivoa:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;level.h&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#ifndef LEVEL_H_
&lt;br /&gt;
#define LEVEL_H_
&lt;br /&gt;

&lt;br /&gt;
#include &amp;lt;vector&amp;gt;
&lt;br /&gt;
#include &amp;lt;SFML&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
class Level
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Level&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;enum PlayField
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Floor,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Wall,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Destination,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Empty
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;enum Direction
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Left = sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Left,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Right = sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Right,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Up = sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Up,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Down = sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Down
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bool loadNext&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void reload&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bool isFinished&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void move&amp;#40;Direction dir&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bool load&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;PlayField getField&amp;#40;int x, int y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int getCrate&amp;#40;int x, int y&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int level;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int width, height;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;vector&amp;lt;PlayField&amp;gt; playField;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Vector2i player;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt; crates;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Direction lastDir;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
#endif /* LEVEL_H_ */&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;PlayField&lt;/span&gt; predstavlja sve moguće tipove polja na mapi. &lt;span style=&quot;font-weight: bold&quot;&gt;Empty&lt;/span&gt; će predstavljati prazno polje za koje ne treba ništa crtati na ekranu, &lt;span style=&quot;font-weight: bold&quot;&gt;Wall&lt;/span&gt; je zid kroz kojeg igrač ne može da prođe, &lt;span style=&quot;font-weight: bold&quot;&gt;Floor&lt;/span&gt; je pod preko kojeg igrač može da se kreće, a &lt;span style=&quot;font-weight: bold&quot;&gt;Destination&lt;/span&gt; je polje na kojem na kraju moramo postaviti kutiju.
&lt;br /&gt;

&lt;br /&gt;
Enumeracija &lt;span style=&quot;font-weight: bold&quot;&gt;Direction&lt;/span&gt; je lista pokreta koje igrač može napraviti.
&lt;br /&gt;

&lt;br /&gt;
Od stalih polja su zanimljivi još &lt;span style=&quot;font-weight: bold&quot;&gt;playField&lt;/span&gt; koje služi za čuvanje mape, &lt;span style=&quot;font-weight: bold&quot;&gt;player&lt;/span&gt; koje čuva poziciju igrača, i &lt;span style=&quot;font-weight: bold&quot;&gt;crates&lt;/span&gt; u kojem su sačuvane pozicije svih kutija.
&lt;br /&gt;

&lt;br /&gt;
Pređimo sad na funkcije... počećemo od funkcija za učitavanje nivoa:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;level.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;bool Level&amp;#58;&amp;#58;loadNext&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;++level;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return load&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void Level&amp;#58;&amp;#58;reload&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;load&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
bool Level&amp;#58;&amp;#58;load&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField.clear&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;crates.clear&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;lastDir = Down;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;ifstream lvlFile;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;stringstream fileName;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fileName &amp;lt;&amp;lt; &amp;quot;resources/level&amp;quot; &amp;lt;&amp;lt; level &amp;lt;&amp;lt; &amp;quot;.txt&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;lvlFile.open&amp;#40;fileName.str&amp;#40;&amp;#41;.c_str&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!lvlFile.is_open&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fileName.str&amp;#40;&amp;quot;&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fileName &amp;lt;&amp;lt; &amp;quot;../resources/level&amp;quot; &amp;lt;&amp;lt; level &amp;lt;&amp;lt; &amp;quot;.txt&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;lvlFile.open&amp;#40;fileName.str&amp;#40;&amp;#41;.c_str&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!lvlFile.is_open&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return false;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;string line;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int x, y;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;PlayField field;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;lvlFile &amp;gt;&amp;gt; width &amp;gt;&amp;gt; height;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField.resize&amp;#40;width * height, Empty&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;y = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;getline&amp;#40;lvlFile, line&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while &amp;#40;y &amp;lt; height&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;getline&amp;#40;lvlFile, line&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for &amp;#40;x = 0; x &amp;lt; width; ++x&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;switch &amp;#40;line&amp;#91;x&amp;#93;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case '#'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = Wall;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 'C'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;crates.push_back&amp;#40;sf&amp;#58;&amp;#58;Vector2i&amp;#40;x, y&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = Floor;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 'P'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;player = sf&amp;#58;&amp;#58;Vector2i&amp;#40;x, y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = Floor;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case '-'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = Floor;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 'D'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = Destination;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = Empty;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;playField&amp;#91;x + y * width&amp;#93; = field;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;++y;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;lvlFile.close&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return true;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;loadNext&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;reload&lt;/span&gt; su samo pomoćne funkcije koje zovu &lt;span style=&quot;font-weight: bold&quot;&gt;load&lt;/span&gt; da bi učitale sledeći ili ponovo učitale trenutni nivo. Kompletna logika za učitavanje se nalazi u funkciji &lt;span style=&quot;font-weight: bold&quot;&gt;load&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Na početku otvaramo datoteku čije ime konstruišemo uz pomoć promenljive &lt;span style=&quot;font-weight: bold&quot;&gt;level&lt;/span&gt;, koja drži broj trenutno aktivnog nivoa. U slučaju da datoteka ne postoji ili je došlo do greške, vraćamo &lt;span style=&quot;font-style: italic&quot;&gt;false&lt;/span&gt; što će obavestiti ostatak igre da nema više nivoa za igranje.
&lt;br /&gt;

&lt;br /&gt;
U slučaju da datoteka postoji i možemo da je otvorimo, prvo pročitamo širinu i visinu nivoa, i na osnovu ta dva podatka kreiramo dovoljno velik niz da u njemu sačuvamo celu mapu.
&lt;br /&gt;

&lt;br /&gt;
Zatim čitamo datoteku red po red, i na osnovu predefinisanih znakova popunjavamo mapu, postavljamo poziciju igrača, i dodajemo kutije. Posle čitanja datoteke, imamo sve podatke potrebne za igranje igre.
&lt;br /&gt;

&lt;br /&gt;
Da bismo lakše dostupali do podataka o mapi, napravićemo i par pomoćnih funkcija:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;level.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;bool Level&amp;#58;&amp;#58;isFinished&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;iterator it = crates.begin&amp;#40;&amp;#41;; it != crates.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;getField&amp;#40;&amp;#40;*it&amp;#41;.x, &amp;#40;*it&amp;#41;.y&amp;#41; != Destination&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return false;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return true;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
Level&amp;#58;&amp;#58;PlayField Level&amp;#58;&amp;#58;getField&amp;#40;int x, int y&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return playField&amp;#91;x + y * width&amp;#93;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
int Level&amp;#58;&amp;#58;getCrate&amp;#40;int x, int y&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;size_type i = 0; i &amp;lt; crates.size&amp;#40;&amp;#41;; ++i&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;crates&amp;#91;i&amp;#93;.x == x &amp;amp;&amp;amp; crates&amp;#91;i&amp;#93;.y == y&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return i;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return -1;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;isFinished&lt;/span&gt; proverava da li je ispod svake kocke polje &lt;span style=&quot;font-weight: bold&quot;&gt;Destination&lt;/span&gt;. Ako jeste to znači da smo sve kocke postavili na pravo mesto i da je nivo završen.
&lt;br /&gt;

&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;getField&lt;/span&gt; je nam omogućava da dođemo do vrste polja preko x, y koordinata u mapi, dok funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;getCrate&lt;/span&gt; proverava da li se na nekoj x,y poziciji nalazi kocka.
&lt;br /&gt;

&lt;br /&gt;
Sad kada imamo ove pomoćne funkcije, pisanje logike za pomeranje će biti prilično lako:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;level.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void Level&amp;#58;&amp;#58;move&amp;#40;Direction dir&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;lastDir = dir;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int dX = 0, dY = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;switch &amp;#40;lastDir&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case Left&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dX = -1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case Up&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dY = -1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case Right&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dX = 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;dY = 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Vector2i newPos = sf&amp;#58;&amp;#58;Vector2i&amp;#40;player.x + dX, player.y + dY&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int crate = getCrate&amp;#40;newPos.x, newPos.y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Vector2i newCratePos = sf&amp;#58;&amp;#58;Vector2i&amp;#40;newPos.x + dX, newPos.y + dY&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;crate != -1&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;getField&amp;#40;newCratePos.x, newCratePos.y&amp;#41; != Wall &amp;amp;&amp;amp; getCrate&amp;#40;newCratePos.x, newCratePos.y&amp;#41; == -1&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;crates&amp;#91;crate&amp;#93; = newCratePos;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;player = newPos;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else if &amp;#40;getField&amp;#40;newPos.x, newPos.y&amp;#41; != Wall&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;player = newPos;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Na počeku određujemo u kom smeru igrač želi da se pomeri i proveravamo da li se ispred njega nalazi kocka. U slučaju da kocka nije ispred njega, proveravamo još da li je možda ispred zid. Ako nije, upišemo novu poziciju igrača.
&lt;br /&gt;

&lt;br /&gt;
U slučaju da je ispred igrača bila kocka, moramo proveriti još jedno polje ispred. Ako na sledećem polju nije zid ili neka druga kocka, znači da možemo slobodno da &amp;quot;poguramo&amp;quot; kocku napred i upišemo novu poziciju igrača.
&lt;br /&gt;

&lt;br /&gt;
I, to je to... to je kompletna logika za učitavanje nivoa i pomeranje igrača po njoj.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[6] Prikaz i igranje nivoa&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Zahvaljujući prethodnoj klasi, pisanje stanja za igranje će biti prilično jednostavno. U direktorijum za resurse, moramo dodati slike za polja na mapi, za igrača i kutije. Naravno, da bi sve izgledalo lepše, dodaćemo i sliku za pozadinu.
&lt;br /&gt;

&lt;br /&gt;
Kreiranje stanja za igranje će biti skoro isto kao i stanja za glavni meni. Prvo moramo napraviti klasu i dodati joj promenljive koje su joj potrebne za rad:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;playstate.h&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#ifndef PLAYSTATE_H_
&lt;br /&gt;
#define PLAYSTATE_H_
&lt;br /&gt;

&lt;br /&gt;
#include &amp;lt;vector&amp;gt;
&lt;br /&gt;
#include &amp;quot;gamestate.h&amp;quot;
&lt;br /&gt;
#include &amp;quot;level.h&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
class PlayState&amp;#58; public GameState
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;PlayState&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void enter&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void leave&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void event&amp;#40;sf&amp;#58;&amp;#58;Event *event&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void update&amp;#40;float elapsedTime&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void render&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
private&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void calculateZoom&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Image *bgImage;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Sprite *bgSprite;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;String *status;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Level *level;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;View *view;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt; playField;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Image *crate;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Image *player;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sf&amp;#58;&amp;#58;Sprite *sprite;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
#endif /* PLAYSTATE_H_ */&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Osim standardnih funkcija, ova klasa ima funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;calculateZoom&lt;/span&gt; čiji cilj je da odredi koliko slika treba da bude povećana ili smanjena da bi se videla cela mapa.
&lt;br /&gt;

&lt;br /&gt;
Dodane promenljive su uglavnom za učitavanje i prikaz slika i teksta, ali imamo i promenljivu &lt;span style=&quot;font-weight: bold&quot;&gt;level&lt;/span&gt; koja će držati instancu klase za rad sa nivoima.
&lt;br /&gt;

&lt;br /&gt;
Pređimo na implementaciju:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;playstate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void PlayState&amp;#58;&amp;#58;enter&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgImage = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!bgImage-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/play.jpg&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;bgImage-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/play.jpg&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgSprite = new sf&amp;#58;&amp;#58;Sprite&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgSprite-&amp;gt;SetImage&amp;#40;*bgImage&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float scaleX, scaleY, scale;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scaleX = &amp;#40;float&amp;#41;&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetWidth&amp;#40;&amp;#41;&amp;#41; / bgImage-&amp;gt;GetWidth&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scaleY = &amp;#40;float&amp;#41;&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetHeight&amp;#40;&amp;#41;&amp;#41; / bgImage-&amp;gt;GetHeight&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scale = scaleX &amp;gt; scaleY ? scaleX &amp;#58; scaleY;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bgSprite-&amp;gt;SetScale&amp;#40;scale, scale&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status = new sf&amp;#58;&amp;#58;String&amp;#40;&amp;quot;Press F5 to restart level or Esc to quit.&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status-&amp;gt;SetSize&amp;#40;16&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;status-&amp;gt;SetPosition&amp;#40;10, game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetHeight&amp;#40;&amp;#41; - 30&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;level = new Level&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;level-&amp;gt;loadNext&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;calculateZoom&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField.resize&amp;#40;Level&amp;#58;&amp;#58;Empty&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField&amp;#91;Level&amp;#58;&amp;#58;Floor&amp;#93; = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!playField&amp;#91;Level&amp;#58;&amp;#58;Floor&amp;#93;-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/floor.png&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;playField&amp;#91;Level&amp;#58;&amp;#58;Floor&amp;#93;-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/floor.png&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField&amp;#91;Level&amp;#58;&amp;#58;Wall&amp;#93; = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!playField&amp;#91;Level&amp;#58;&amp;#58;Wall&amp;#93;-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/wall.png&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;playField&amp;#91;Level&amp;#58;&amp;#58;Wall&amp;#93;-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/wall.png&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField&amp;#91;Level&amp;#58;&amp;#58;Destination&amp;#93; = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!playField&amp;#91;Level&amp;#58;&amp;#58;Destination&amp;#93;-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/destination.png&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;playField&amp;#91;Level&amp;#58;&amp;#58;Destination&amp;#93;-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/destination.png&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;crate = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!crate-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/crate.png&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;crate-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/crate.png&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;player = new sf&amp;#58;&amp;#58;Image&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!player-&amp;gt;LoadFromFile&amp;#40;&amp;quot;resources/player.png&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;player-&amp;gt;LoadFromFile&amp;#40;&amp;quot;../resources/player.png&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sprite = new sf&amp;#58;&amp;#58;Sprite&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void PlayState&amp;#58;&amp;#58;leave&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete bgSprite;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete bgImage;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete status;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete level;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;iterator it = playField.begin&amp;#40;&amp;#41;; it != playField.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;delete *it;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;playField.clear&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete crate;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete player;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete sprite;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete view;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;view = 0;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void PlayState&amp;#58;&amp;#58;calculateZoom&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;view != 0&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;delete view;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float ratio = &amp;#40;float&amp;#41;&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetWidth&amp;#40;&amp;#41;&amp;#41; / &amp;#40;float&amp;#41;&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetHeight&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float count = &amp;#40;float&amp;#41;&amp;#40;level-&amp;gt;width + 1&amp;#41; / ratio &amp;gt; level-&amp;gt;height + 1 ? &amp;#40;float&amp;#41;&amp;#40;level-&amp;gt;width + 1&amp;#41; / ratio &amp;#58; level-&amp;gt;height + 1;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float width = 64.0f * ratio * count;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float height = 64.0f * count;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;view = new sf&amp;#58;&amp;#58;View&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;view-&amp;gt;SetFromRect&amp;#40;sf&amp;#58;&amp;#58;FloatRect&amp;#40;0, 0, width, height&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;view-&amp;gt;Move&amp;#40;&amp;#40;32.0f * ratio&amp;#41; * &amp;#40;&amp;#40;float&amp;#41;&amp;#40;level-&amp;gt;width&amp;#41; / ratio - count&amp;#41;, 32.0f * &amp;#40;&amp;#40;float&amp;#41;&amp;#40;level-&amp;gt;height&amp;#41; - count&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Isto kao i u klasi za glavni meni, i ovde u funkciji &lt;span style=&quot;font-weight: bold&quot;&gt;enter&lt;/span&gt; učitavamo potrebne objekte među kojima je i prvi nivo. Po završetku ove funkcije, klasa je spremna za obradu ulaznih poruka i crtanje. Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;leave&lt;/span&gt; će se pobrinuti da na kraju oslobodimo sve resurse koje smo zauzeli.
&lt;br /&gt;

&lt;br /&gt;
Funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;calculateZoom&lt;/span&gt; na osnovu širine i visine prozora i mape, postavlja veličinu objekata za crtanje tako da se vidi cela mapa. To radimo da bi što bolje iskoristili prostor na velikim rezolucijama, ali i da ne bi izgubili parče mape na manjim.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;playstate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void PlayState&amp;#58;&amp;#58;event&amp;#40;sf&amp;#58;&amp;#58;Event* event&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;event-&amp;gt;Type == sf&amp;#58;&amp;#58;Event&amp;#58;&amp;#58;KeyPressed&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;switch &amp;#40;event-&amp;gt;Key.Code&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Escape&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;changeState&amp;#40;Game&amp;#58;&amp;#58;MainMenuState&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;F5&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;level-&amp;gt;reload&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;calculateZoom&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Left&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Right&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Up&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case sf&amp;#58;&amp;#58;Key&amp;#58;&amp;#58;Down&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;level-&amp;gt;move&amp;#40;&amp;#40;Level&amp;#58;&amp;#58;Direction&amp;#41;&amp;#40;event-&amp;gt;Key.Code&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovde vidimo kako obrada ulaznih poruka ne predstavlja nikakvu teškoću. Pritiskom na &lt;span style=&quot;font-style: italic&quot;&gt;escape&lt;/span&gt; se vraćamo na glavni meni, &lt;span style=&quot;font-style: italic&quot;&gt;F5&lt;/span&gt; nam ponovo učitava nivo, a strelice zovu pomoćni objekat &lt;span style=&quot;font-weight: bold&quot;&gt;level&lt;/span&gt; i prepuštaju mu da odradi sve što treba da bi se igrač pomerio.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;playstate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void PlayState&amp;#58;&amp;#58;update&amp;#40;float elapsedTime&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;level-&amp;gt;isFinished&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;!level-&amp;gt;loadNext&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;changeState&amp;#40;Game&amp;#58;&amp;#58;MainMenuState&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;calculateZoom&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pre svakog crtanja, proveravamo da li pomoćna klasa kaže da je nivo završen. U slučaju da jeste, učitavamo sledeći ako ga ima ili se vraćamo na glavni meni.
&lt;br /&gt;

&lt;br /&gt;
Za kraj smo ostavili funkciju za crtanje:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;playstate.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;void PlayState&amp;#58;&amp;#58;render&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Level&amp;#58;&amp;#58;PlayField field;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;*bgSprite&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;*status&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;SetView&amp;#40;*view&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;int x = 0; x &amp;lt;level&amp;gt;width; ++x&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for &amp;#40;int y = 0; y &amp;lt;level&amp;gt;height; ++y&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field = level-&amp;gt;getField&amp;#40;x, y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;field != Level&amp;#58;&amp;#58;Empty&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetImage&amp;#40;*playField&amp;#91;field&amp;#93;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetPosition&amp;#40;64 * x, 64 * y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;*sprite&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetImage&amp;#40;*crate&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;std&amp;#58;&amp;#58;vector&amp;lt;sf&amp;gt;&amp;#58;&amp;#58;iterator it = level-&amp;gt;crates.begin&amp;#40;&amp;#41;; it != level-&amp;gt;crates.end&amp;#40;&amp;#41;; ++it&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetPosition&amp;#40;64 * &amp;#40;*it&amp;#41;.x, 64 * &amp;#40;*it&amp;#41;.y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;*sprite&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetImage&amp;#40;*player&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int offset;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;switch &amp;#40;level-&amp;gt;lastDir&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case Level&amp;#58;&amp;#58;Left&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;offset = 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case Level&amp;#58;&amp;#58;Up&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;offset = 2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case Level&amp;#58;&amp;#58;Right&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;offset = 3;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;offset = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetSubRect&amp;#40;sf&amp;#58;&amp;#58;IntRect&amp;#40;64 * offset, 0, 64 * &amp;#40;offset + 1&amp;#41;, 64&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetPosition&amp;#40;64 * level-&amp;gt;player.x, 64 * level-&amp;gt;player.y&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;Draw&amp;#40;*sprite&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;sprite-&amp;gt;SetSubRect&amp;#40;sf&amp;#58;&amp;#58;IntRect&amp;#40;0, 0, 64, 64&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;SetView&amp;#40;game-&amp;gt;getWindow&amp;#40;&amp;#41;-&amp;gt;GetDefaultView&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Na početku iscrtavamo pozadinsku sliku, a odmah za njom i tekst na kojem piše da &lt;span style=&quot;font-style: italic&quot;&gt;F5&lt;/span&gt; resetuje nivo.
&lt;br /&gt;

&lt;br /&gt;
Nakon toga, crtamo redom polje po polje mape. Zahvaljujući funkciji &lt;span style=&quot;font-weight: bold&quot;&gt;calculateZoom&lt;/span&gt; ovde ne moramo da se brinemo o veličini polja i da li će stati na ekran. Svaki put crtamo sliku u normalnoj veličini i prepuštamo &lt;span style=&quot;font-style: italic&quot;&gt;SFML-u&lt;/span&gt; da se brine o skaliranju.
&lt;br /&gt;

&lt;br /&gt;
Preko polja, crtamo kutije i igrača. Obratite pažnju da za igrača uzimamo deo slike koji je okrenut u pravu stranu da bi igra izgledala lepše. U ovom trenutku je crtanju kraj i na ekranu imamo nacrtanu celu mapu i sve objekte na njoj.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[7] Završavanje i testiranje igre&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Do sad smo pisali klase koje rade sve od učitavanja, preko igranja do gašenja igre. Nedostaje nam još samo &lt;span style=&quot;font-weight: bold&quot;&gt;main&lt;/span&gt; funkcija koja će sve to da pokrene:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Datoteka &lt;span style=&quot;font-weight: bold&quot;&gt;main.cpp&lt;/span&gt;&lt;/span&gt;&lt;code class=&quot;highlight&quot;&gt;#include &amp;quot;game.h&amp;quot;
&lt;br /&gt;
#include &amp;quot;mainmenustate.h&amp;quot;
&lt;br /&gt;
#include &amp;quot;playstate.h&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Game game;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game.addState&amp;#40;Game&amp;#58;&amp;#58;MainMenuState, new MainMenuState&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;game.addState&amp;#40;Game&amp;#58;&amp;#58;PlayState, new PlayState&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return game.run&amp;#40;Game&amp;#58;&amp;#58;MainMenuState&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
To je, dragi moji, to. Cela igra je napisana. Ostaje vam još samo da je iskompajlirate i pokrenete &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Za one koji žele malo vežbe, slika igrača ima još par dodatnih frejmova uz pomoć kojih možete napraviti da igrač korača kad se kreće. Moraćete da popravite funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;update&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;render&lt;/span&gt; u klasi &lt;span style=&quot;font-weight: bold&quot;&gt;PlayState&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Preuzimanje ::&lt;/span&gt;Kompletan kod i resurse možete preuzeti ovde: [url=https://www.mycity.rs/must-login.png
&lt;br /&gt;

&lt;br /&gt;
Za one koji su samo došli da bace pogled, evo i par sličica:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49980154_1.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49980154_2.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49980154_3.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49980154_4.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;SFML ::&lt;/span&gt;Kompletnu dokumentaciju za &lt;span style=&quot;font-weight: bold&quot;&gt;SFML&lt;/span&gt; možete pogledati na zvaničnom sajtu: &lt;span style=&quot;font-weight: bold&quot;&gt;link&lt;/span&gt;.&lt;/cite&gt; 
&lt;br /&gt;

&lt;br /&gt;
----------- &lt;span style=&quot;font-weight: bold&quot;&gt;Dopuna: 15 Jan 2013 15:21&lt;/span&gt; ---------
&lt;br /&gt;

&lt;br /&gt;
 Prošlo je već neko vreme i nakupilo se dosta pregleda... da li je nekom uspelo da iskompajlira igru i da je pokrene? &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Sun, 02 Dec 2012 16:45:22 +0100</pubDate>
</item>
<item>
	<title>Instalacija SDL-a u Code::Blocks-u</title>
	<link>https://www.mycity.rs/C/Instalacija-SDL-a-u-CodeBlocks-u-2.html</link>
	<guid>https://www.mycity.rs/?p=1436409</guid>
	<author>nobody@mycity.rs (NIx Car)</author>
	<description>&lt;span style=&quot;font-weight: bold&quot;&gt;Šta je to SDL?&lt;/span&gt;
&lt;br /&gt;
SDL (Simple DirectMedia Layer) je multimedijalna biblioteka namenjena za rad na više platformi. Najpoznatija je po tome što je, zahvaljujući njoj, napravljen Linux port poznate igre za Windows: &amp;quot;Civilization: Call To Power&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
Više o SDL-u možete pronaći na sledećoj adresi (stranica je na engleskom)
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U ovom uputstvu ću vam pokazati kako da SDL povežete sa Code::Blocksom 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
---------------------------------------
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pod pretpostavkom da imate instaliran Code::Blocks koji koristi kompajler koji se nalazi u instalacionom direktorijumu Code::Blocks-a (miniGW), ispratite sledeće korake kako biste uspešno integrisali SDL u Code::Blocks.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Posetite ovu adresu, u sekciji Development Libraries izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;SDL-devel-1.2.15-mingw32.tar.gz (Mingw32)&lt;/span&gt;, kao na slici:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_45079153_Untitled.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Folder, koji se nalazi u toj arhivi, raspakujte gde želite. Ja ću ga prebaciti u svoj C:\ direktorijum.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pokrenite Code::Blocks, izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;settings&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;compiler and debugger&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_56348949_settings.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Search Directories&lt;/span&gt; jezičak, i u okviru njega izaberite jezičak &lt;span style=&quot;font-weight: bold&quot;&gt;Compiler&lt;/span&gt; i kliknite dugme &lt;span style=&quot;font-weight: bold&quot;&gt;Add&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_54094995_directories.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_67618751_add.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Nakon toga, pronađite vaš SDL folder, &lt;span style=&quot;font-weight: bold&quot;&gt;dvokliknite&lt;/span&gt; na njega, i izaberite folder &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt;. Nakon toga kliknite OK. Trebalo biste da dobijete nešto kao na slici:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_676187564_added.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Nakon toga,izaberite jezičak &lt;span style=&quot;font-weight: bold&quot;&gt;Linker&lt;/span&gt;, i odradite isti onaj postupak, samo što umesto foldera &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt;, birate folder &lt;span style=&quot;font-weight: bold&quot;&gt;lib&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Kada uradite ove korake,odradite i sledeće: 
&lt;br /&gt;
Prekopirajte &lt;span style=&quot;font-weight: bold&quot;&gt;SDL.dll&lt;/span&gt; fajl koji se nalazi u potfolderu &lt;span style=&quot;font-weight: bold&quot;&gt;bin&lt;/span&gt; (kod mene je to: C:\SDL-1.2.15\bin ) 
&lt;br /&gt;
u vaš &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Windows\System32&lt;/span&gt; folder ukoliko koristite 32bitni Windows.
&lt;br /&gt;
Ukoliko koristite 64bitni Windows prekopirajte ga u &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Windows\SysWOW64&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Code::Blocks je sada uspešno podešen. Sada ću vam pokazati kako treba da pokrenete novi projekat (postoji i otvaranje SDL projekta unutar samog Code::Blocks, međutim tu nailazim na neku grešku, tako da ću pokazati alternativni način).
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
IKliknite na meni &lt;span style=&quot;font-weight: bold&quot;&gt;File-&amp;gt;New-&amp;gt; Empty Project&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_45079187_template.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Zatim idite na &lt;span style=&quot;font-weight: bold&quot;&gt;Project-&amp;gt;Properties&lt;/span&gt; 
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_64398841_project_properties.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Izaberite jezičak &lt;span style=&quot;font-weight: bold&quot;&gt;Build Targets,&lt;/span&gt; u delu &lt;span style=&quot;font-weight: bold&quot;&gt;Type&lt;/span&gt;, izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;GUI application&lt;/span&gt; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_46633647_gui.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Zatim ponovo idite  u &lt;span style=&quot;font-weight: bold&quot;&gt;Compiler and Debugger&lt;/span&gt;, izaberite jezičak &lt;span style=&quot;font-weight: bold&quot;&gt;Linker settings&lt;/span&gt;. U delu &lt;span style=&quot;font-weight: bold&quot;&gt;other linker options&lt;/span&gt; nalepite sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;-lmingw32 -lSDLmain -lSDL&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_58798950_linking.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Nakon toga, napravite source fajl u okviru projekta. 
&lt;br /&gt;
Kada ste to uradili, iskopirajte i nalepite sledeći kod, da proverite da li ste uspešno podesili SDL:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;quot;SDL/SDL.h&amp;quot; 
&lt;br /&gt;
int main&amp;#40; int argc, char* args&amp;#91;&amp;#93; &amp;#41; 
&lt;br /&gt;
&amp;#123; 
&lt;br /&gt;
//Pokrece se SDL 
&lt;br /&gt;
SDL_Init&amp;#40; SDL_INIT_EVERYTHING &amp;#41;; 
&lt;br /&gt;
//Izalazak iz SDL-a
&lt;br /&gt;
&amp;nbsp;SDL_Quit&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp;return 0; &amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ukoliko vam kompajler ne prijavi ni jednu grešku, onda ste uspešno instalirali SDL! Čestitam!
&lt;br /&gt;

&lt;br /&gt;
Hvala TwinHeadedEagle-u i ThePhilosopher-u na sugestijama, i Srkiju na blagoslovu   &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_mrgreen.gif&quot; alt=&quot;Mr. Green&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Sat, 10 Nov 2012 21:27:27 +0100</pubDate>
</item>
<item>
	<title>[2] Klase, pokazivači, reference</title>
	<link>https://www.mycity.rs/C/2-Klase-pokazivaci-reference.html</link>
	<guid>https://www.mycity.rs/?p=1425543</guid>
	<author>nobody@mycity.rs (Fil)</author>
	<description>&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[1] Klase&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-style: italic&quot;&gt;C++ provides the power; you supply the judgment&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Programiranjem često rešavamo kompleksne probleme te je poželjno da se koriste i odgovarajuće reprezentacije objekata konkretnog problema. 
&lt;br /&gt;

&lt;br /&gt;
Recimo, ukoliko treba da rešimo neki problem vezan za automobilsku industriju, barataćemo sa instancama (objektima) klase automobil, koje će imati odgovarajuće promenljive (recimo: brojBrzina, brojCilindara) i metode (recimo: Ubrzaj(), PromeniBrzinu() i druge).
&lt;br /&gt;

&lt;br /&gt;
Dakle, objekat predstavlja &lt;span style=&quot;text-decoration: underline&quot;&gt;instancu&lt;/span&gt; neke &lt;span style=&quot;font-weight: bold&quot;&gt;klase&lt;/span&gt;. Klase predstavljaju korisnički definisane &lt;span style=&quot;font-weight: bold&quot;&gt;tipove&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Iz primera se vidi da promenljive čuvaju &lt;span style=&quot;font-weight: bold&quot;&gt;stanje&lt;/span&gt; nekog objekta, dok se metode odnose na &lt;span style=&quot;font-weight: bold&quot;&gt;ponašanje&lt;/span&gt; tog objekta. U ovom smislu, objekat predstavlja kolekciju određenih stanja i ponašanja.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;* &lt;span style=&quot;text-decoration: underline&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Napomena&lt;/span&gt;&lt;/span&gt;: više o klasama je pisano u člancima za C#, tako da preporučujem čitanje tih članaka. Koncept je isti, a sintaksa skoro pa jednaka.&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Deklaracija klase:&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;class Automobil
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned int brojBrzina;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned int brojCilindara;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;void Ubrzaj&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;text-decoration: underline&quot;&gt;Napomena&lt;/span&gt;&lt;/span&gt;: uočimo karakter &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;color: red&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&amp;quot; na kraju deklaracije klase! U programskim jezicima &lt;span style=&quot;font-style: italic&quot;&gt;Java&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;C#&lt;/span&gt; nema karaktera &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;;&lt;/span&gt;&amp;quot; kod deklaracije klasa! 
&lt;br /&gt;

&lt;br /&gt;
Deklaracije klase ne alocira (rezerviše) memoriju za klasu Automobil. 
&lt;br /&gt;
--&amp;gt; deklaracija služi da kompajler &amp;quot;obavestimo&amp;quot; šta predstavlja klasa Automobil, dakle,  kakve podatke sadrži i šta može da radi. 
&lt;br /&gt;
--&amp;gt; Na osnovu ovoga kompajler zna koliko memorijskog prostora treba da &amp;quot;ostavi sa strane&amp;quot; objekte klase Automobil. 
&lt;br /&gt;

&lt;br /&gt;
Pošto &lt;span style=&quot;font-style: italic&quot;&gt;int&lt;/span&gt; zauzima 4 bajta, a imamo dve promenljive u klasi, --&amp;gt; objekat ove klase će biti &amp;quot;težak&amp;quot; 8 bajtova. Metode se ne uzimaju u obzir kod utvrđivanja veličine u memoriji.
&lt;br /&gt;

&lt;br /&gt;
Prilikom kreiranja koda programa treba, dakle, obratiti pažnju sa kakvim promenljivim, tj. sa kakvim tipovima promenljivih baratamo. Tip promenljive ukazuje na:
&lt;br /&gt;

&lt;br /&gt;
a) veličinu promenljive u &lt;span style=&quot;font-weight: bold&quot;&gt;memoriji&lt;/span&gt;,
&lt;br /&gt;
b) kakvu &lt;span style=&quot;font-weight: bold&quot;&gt;vrstu podatka&lt;/span&gt; promenljiva može da čuva,
&lt;br /&gt;
c) kakve &lt;span style=&quot;font-weight: bold&quot;&gt;akcije&lt;/span&gt; se mogu izvršiti nad promenljivima.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Dalje, treba obratiti pažnju i na stil programiranja. Ukoliko se držite jednog stila programiranja (&lt;span style=&quot;font-style: italic&quot;&gt;davanja imena promenljivima, metodama i sl.&lt;/span&gt; ) lakše ćete protumačiti kod. Firme obično propisuju ova stilska pravila (standardni kodeks).  
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Definisanje objekta:&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Automobil lada;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovim se definiše objekat klase (tj. tipa) Automobil. Ovo je korak u kome se rezerviše memorija za objekat.
&lt;br /&gt;

&lt;br /&gt;
Kako su sve članice klase privatne (ako se ne naznači drugačije), na sledeći način je moguće javno pristupiti članicama klase:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;class Automobil
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned int brojBrzina;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned int brojCilindara;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;void Ubrzaj&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
* Opet vidimo razliku u sintaksi sa, recimo, srodnim jezicima Javom i C# ; kod njih se ispred svake promenljive definiše modifikator pristupa (dakle, public int brojBrzina;
&lt;br /&gt;
public int brojCilindara; )
&lt;br /&gt;

&lt;br /&gt;
Bitno je reći da će &lt;span style=&quot;font-weight: bold&quot;&gt;public&lt;/span&gt; biti sve članice:
&lt;br /&gt;
a) do navoda ključne reči &lt;span style=&quot;font-weight: bold&quot;&gt;private&lt;/span&gt;
&lt;br /&gt;
b) do kraja deklaracije klase
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Primer:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_121510603_Automobil.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U primeru se vidi generalno pravilo dobrog dizajna - članice klase treba da su privatne. Pošto su promenljive privatne, moramo imati neke metode koje će služiti za manipulaciju nad tim podacima (čitanje i izmena vrednosti promenljivih). Te metode se nazivaju &lt;span style=&quot;font-style: italic&quot;&gt;Accessor metode&lt;/span&gt;. Na ovaj način se omogućava odvajanje detalja implementacije i upotrebe (tj. manipulacije). 
&lt;br /&gt;
Accessor metode su tzv. Setteri i Getteri, koje su public metode i služe za promenu vrednosti, odnosno čitanje vrednosti promenljivih. 
&lt;br /&gt;

&lt;br /&gt;
Citat Stroustrup-a: &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;The C++ access control mechanisms provide protection against accident—not against fraud&lt;/span&gt;.&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Objekat pristupa public članicama klase vrši sa operatorom &amp;quot;&lt;span style=&quot;color: red&quot;&gt;.&lt;/span&gt;&amp;quot; 
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Obratiti pažnju i na označavanje da metoda (implementirana izvan klase) pripada nekoj klasi, tj. &amp;quot;&lt;span style=&quot;color: red&quot;&gt;: :&lt;/span&gt;&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Konstrukor&lt;/span&gt; služi za instanciranje/inicijalizaciju objekta neke klase. Konstruktor, tehnički gledano, predstavlja posebnu metodu:
&lt;br /&gt;
- koja ima naziv isto kao i naziv konkretne klase
&lt;br /&gt;
- koja ne vraća povratnu vrednost
&lt;br /&gt;

&lt;br /&gt;
C++, za razliku od C# i Jave, nema &lt;span style=&quot;font-style: italic&quot;&gt;garbage collection&lt;/span&gt; (koji se brine o &amp;quot;čišćenju&amp;quot; objekata), te prilikom deklarisanja konstruktora, treba deklarisati i odgovarajući &lt;span style=&quot;font-weight: bold&quot;&gt;destruktor&lt;/span&gt;. Destruktor se formira na sledeći način: &amp;quot;~&amp;quot;+naziv konstruktora. Dakle, ako je konstruktor: Automobil(), destruktor će biti ~Automobil(). 
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; dok konstruktori mogu imati ulazne argumente, destruktori ne primaju argumente.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Jedna klasa može imati više konstruktora (sa različitim parametrima).
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Ukoliko ne deklarišemo konstruktor/desktruktor, generiše se podrazumevani konstruktor/destruktor. 
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Default constructor/destructor nema argumenata i ne radi ništa!
&lt;br /&gt;
(&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;primetimo da u prošlom primeru nije eksplicitno naveden konstruktor, te u tom slučaju, kako smo rekli, kompajler obezbeđuje default konstruktor. Zbog toga prethodni kod nije generisao grešku &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;&lt;/span&gt; )
&lt;br /&gt;

&lt;br /&gt;
U sledećem primeru, biće upotrebljen non default konsruktor (prethodni primer će biti za nijansu proširen):
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_190965896_konstruktor.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2] Pokazivači&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pokazivač ili &lt;span style=&quot;font-style: italic&quot;&gt;pointer&lt;/span&gt; je &lt;span style=&quot;font-weight: bold&quot;&gt;promenljiva&lt;/span&gt; koja čuva memorijsku adresu.
&lt;br /&gt;

&lt;br /&gt;
Pogledajmo sledeću sliku:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_67190442_Pointer.PNG&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Na slici je prikazano: 
&lt;br /&gt;

&lt;br /&gt;
- vrlo prosta šema memorije na računaru. Dakle, memorija računara je podeljena na sekvencijalno &lt;span style=&quot;text-decoration: underline&quot;&gt;označene&lt;/span&gt; memorijske lokacije, zvane &lt;span style=&quot;font-weight: bold&quot;&gt;adrese&lt;/span&gt;. 
&lt;br /&gt;
Svaka promenljiva se nalazi na unikatnoj lokaciji u memoriji, tj. na određenoj adresi. 
&lt;br /&gt;

&lt;br /&gt;
-  &lt;span style=&quot;text-decoration: underline&quot;&gt;pointer&lt;/span&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;a&lt;/span&gt; koji pokazuje na &lt;span style=&quot;text-decoration: underline&quot;&gt;promenljivu&lt;/span&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;b&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
* promenljiva &lt;span style=&quot;font-weight: bold&quot;&gt;b&lt;/span&gt; se nalazi na memorijskoj lokaciji 1462 i čuva &lt;span style=&quot;font-weight: bold&quot;&gt;vrednost&lt;/span&gt; 17
&lt;br /&gt;
* pokazivač &lt;span style=&quot;font-weight: bold&quot;&gt;a&lt;/span&gt; se nalazi na memorijskoj lokaciji 874 i čuva &lt;span style=&quot;font-weight: bold&quot;&gt;memorijsku adresu&lt;/span&gt; promenljive &lt;span style=&quot;font-weight: bold&quot;&gt;b&lt;/span&gt;, dakle: 1462
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt;  pomoću &lt;span style=&quot;font-weight: bold&quot;&gt;adresnog operatora&lt;/span&gt; &lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;  može se videti memorijska adresa neke promenljive, Vidimo sledeći primer:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_58426562_shorty.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
 
&lt;br /&gt;
Oznake memorijske lokacije zavise od operativnog sistema i konkretnog kompajlera.
&lt;br /&gt;
// U primerima šeme memorije, obično adresu apstrahujemo sa brojčanom vrednošću.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Podsetimo se, od tipa promenljive zavisi koliko će biti rezervisano i dodeljeno memorijskog prostora. Pogledajmo još jednu šemu:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_111984312_memorijskalokacija.gif&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pointer &amp;quot;nekiPointer&amp;quot;, koji treba da čuva adresu neke promenljive tipa &lt;span style=&quot;font-weight: bold&quot;&gt;int&lt;/span&gt;, ćemo deklarisati na sledeći način:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: blue&quot;&gt;int *nekiPointer = NULL;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Dakle, na ovaj način je &lt;span style=&quot;font-style: italic&quot;&gt;nekiPointer&lt;/span&gt; deklarisan da čuva adresu promenljive koja može biti tipa  &lt;span style=&quot;font-weight: bold&quot;&gt;int.&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Što se tiče dalje manipulacije sa pointerima, ponašaju se isto kao i svaka druga promenljiva. 
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Razlika između promenljive tipa int i pointera koji pokazuje na neki int je ta što promenljiva tipa int čuva integer, a pointer čuva adresu.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Neka vam bude obavezna praksa da inicijalizujete pointere !
&lt;br /&gt;

&lt;br /&gt;
- ukoliko se pointer inicijalizuje sa konstantom NULL - zove se Null Pointer
&lt;br /&gt;
- pointer koji nij inicijalizovan se zove divlji pointer (wild pointer) i ovo treba strogo izbegavati.
&lt;br /&gt;

&lt;br /&gt;
Pridruživanje adrese pointeru:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: blue&quot;&gt;unsigned short int nekiInt = 45;
&lt;br /&gt;
unsigned short int * nekiPointer = NULL;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;nekiPointer = &amp;amp;nekiInt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Pristup nekoj promenljivoj preko njenog pokazivača naziva se &lt;span style=&quot;font-weight: bold&quot;&gt;indirekcija&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Mnoge firme koriste konvenciju davanja imena pointera, tako što ime pointera počinje sa malim &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;p&lt;/span&gt;&amp;quot;. Na primer: &lt;span style=&quot;font-style: italic&quot;&gt;pGodina&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Operator &amp;quot;*&amp;quot; se naziva &lt;span style=&quot;font-style: italic&quot;&gt;indirection operator&lt;/span&gt;, ili &lt;span style=&quot;font-style: italic&quot;&gt;dereference operator&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Ukoliko treba nekoj promenljivoj da dodelimo vrednost na čiju adresu gađa pointer, to ćemo učiniti ovako:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: blue&quot;&gt;unsigned short int primer;
&lt;br /&gt;
primer = *nekiPointer;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Dakle, opet se koristi &lt;span style=&quot;font-style: italic&quot;&gt;indirection operator&lt;/span&gt; (*) i označava &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;vrednost na ovoj adresi&lt;/span&gt;.&amp;quot; 
&lt;br /&gt;

&lt;br /&gt;
// dakle uzimamo vrednost sa adrese koju čuva nekiPointer i dodeljujemo promenljivoj &amp;quot;primer&amp;quot;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Kao što se može videti, operator  &amp;quot; * &amp;quot;  ima dvojaku ulogu:
&lt;br /&gt;
- deklaracija pointera
&lt;br /&gt;
- ukazivanje na samu vrednost, ne na memorijsku adresu
&lt;br /&gt;

&lt;br /&gt;
// Mala digresija: &amp;quot; * &amp;quot; predstavlja i operator množenja, ali kompajler zna &amp;quot;da odabere&amp;quot; pravu funkciju operatora, na osnovu konteksta.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pokazivači se najčešće koriste za tri zadatka:
&lt;br /&gt;

&lt;br /&gt;
- upravljanje podataka na heap-u (free store)
&lt;br /&gt;
- pristup članicama klase
&lt;br /&gt;
- prenos promenljivih po referenci 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Naime, postoje sledeća polja memorije:
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;The stack
&lt;br /&gt;
Code space
&lt;br /&gt;
Global name space
&lt;br /&gt;
Registers
&lt;br /&gt;
The free store (heap)&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
- na &lt;span style=&quot;font-weight: bold&quot;&gt;stack&lt;/span&gt;-u se skladište lokalne promenljive i parametri funkcija
&lt;br /&gt;
* kada funkcija vrati neku vrednost, lokalne promenljive se odbacuju
&lt;br /&gt;
* stack se automatski čisti, kada funkcija vrati vrednost (samim tim i promenljive gube svoj opseg (scope))
&lt;br /&gt;

&lt;br /&gt;
- u &lt;span style=&quot;font-weight: bold&quot;&gt;Code space&lt;/span&gt;-u se skladišti kod.
&lt;br /&gt;

&lt;br /&gt;
- globalne promenljive se skladište na &lt;span style=&quot;font-weight: bold&quot;&gt;global name space&lt;/span&gt;-u. 
&lt;br /&gt;

&lt;br /&gt;
- &lt;span style=&quot;font-weight: bold&quot;&gt;registers&lt;/span&gt; se koriste za interne funkcije održavanja (npr. stanje na vrhu stack-a i pokazivač za instrukcije)
&lt;br /&gt;

&lt;br /&gt;
- skoro sav preostali deo memorije predstavlja &lt;span style=&quot;font-weight: bold&quot;&gt;free store&lt;/span&gt;, odnosno &lt;span style=&quot;font-weight: bold&quot;&gt;heap&lt;/span&gt;.
&lt;br /&gt;
Objekti na &lt;span style=&quot;font-style: italic&quot;&gt;heap&lt;/span&gt;-u su trajni (perzistentni) i &amp;quot;ostaju&amp;quot; i posle &lt;span style=&quot;font-style: italic&quot;&gt;return&lt;/span&gt;-a funkcije (za razliku od &lt;span style=&quot;font-style: italic&quot;&gt;stack&lt;/span&gt;-a, gde ovo nije slučaj ! )
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* alokacija memorije na heap se vrši sa ključnom reči &amp;quot;new&amp;quot;:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;unsigned short int * pPointer;
&lt;br /&gt;
pPointer = new unsigned short int;
&lt;br /&gt;
*pPointer = 72;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
// new vraća memorijsku adresu
&lt;br /&gt;
// *pPointer = 72; --&amp;gt; stavi vrednost 72 na lokaciju gde pointer pokazuje
&lt;br /&gt;

&lt;br /&gt;
* ne zaboravi da obrišeš pointer: ključna reč &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt;. 
&lt;br /&gt;
Dakle, kada se završi rad sa nekom memoijskom lokacijom, potrebno je da se pobriše pointer. Upotrebom ključne reči &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt;, oslobađa se memorija na heap-u i deklariše kao raspoloživa.
&lt;br /&gt;

&lt;br /&gt;
* delete se mora koristiti inače će se javiti &lt;span style=&quot;font-weight: bold&quot;&gt;memory leak&lt;/span&gt;
&lt;br /&gt;
--&amp;gt; fora je u tome da pointer predstavlja lokalnu promenljivu, i kao takav nestaje kada funkcija vrati vrednost (tj. kada izgubi scope). Međutim, memorija na koju pointer pokazuje nije lokalnog karaktera i ne oslobađa se automatski.
&lt;br /&gt;
Dakle, ukoliko se izgubi pokazivač na tu lokaciju, ona će ostati rezervisana (ukoliko se ne oslobodi sa delete), jer ne postoji neki drugi način da se otkrije koja memorijska lokacija se treba osloboditi (i opet staviti na raspolaganje).
&lt;br /&gt;
Ova situacija se zove memory leak jer se ovako zauzeta memorije ne može povratiti sve dok se program ne završi (u toku rada programa, memorija kao da je &amp;quot;iscurela&amp;quot;.)
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; uvek treba koristiti ključnu reč &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;delete pPointer;&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
// oslobodi memorijsku lokaciju na adresi na koju pointer pokazuje.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; treba napomenuti da se ovim ne briše pointer! Znači, pointeru je i dalje &amp;quot;u opticaju&amp;quot; i može mu se dodeliti neka druga adresa.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Animal *pDog = new Animal; //alocates the memory
&lt;br /&gt;

&lt;br /&gt;
delete pDog;&amp;nbsp; //frees the memory
&lt;br /&gt;

&lt;br /&gt;
pDog = NULL; //sets pointer to null
&lt;br /&gt;
//...
&lt;br /&gt;
delete pDog; //legit&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Primer: 
&lt;br /&gt;
Demonstracija pointera i ključne reči &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_122605863_ZinjaiPokazivac.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;skriven_spoiler_znak&quot;&gt;+ &lt;/span&gt;&lt;span class=&quot;skriven_spoiler_link&quot; onclick=&quot;sakrij_prikazi_spoiler(this);&quot; style=&quot;text-decoration:underline; color:#004A8B; cursor: pointer;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Vidi kod&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: none;&quot; class=&quot;skriven_spoiler&quot;&gt;&lt;cite2&gt;#include&amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
int main (int argc, char *argv[]) {
&lt;br /&gt;
	int localVariable = 5; // declaracija i inicijalizacija lokalne promenljive
&lt;br /&gt;
	int * pLocal= &amp;amp;localVariable; //deklaracija i inicijalizacija pointera adresom lokalne promenljive
&lt;br /&gt;
	int * pHeap = new int; // deklariše drugi pointer i inicijalizuje ga sa adresom novog int-a (new int) 
&lt;br /&gt;
	*pHeap = 7;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;localVariable: &amp;quot; &amp;lt;&amp;lt; localVariable &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;*pLocal: &amp;quot; &amp;lt;&amp;lt; *pLocal &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;*pHeap: &amp;quot; &amp;lt;&amp;lt; *pHeap &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;
&lt;br /&gt;
	delete pHeap;
&lt;br /&gt;
	pHeap = new int;
&lt;br /&gt;
	*pHeap = 9;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;*pHeap: &amp;quot; &amp;lt;&amp;lt; *pHeap &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;
&lt;br /&gt;
	delete pHeap;
&lt;br /&gt;
	return 0;
&lt;br /&gt;
}&lt;/cite2&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ovo je primer bez mehanizama provere na grešku. Jedan od mehanizama &amp;quot;defanzivnog programiranja&amp;quot; je da testiramo da li je pointer &lt;span style=&quot;font-weight: bold&quot;&gt;null&lt;/span&gt; pre inicijalizacije. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Primer memory leak-a:
&lt;br /&gt;

&lt;br /&gt;
(dodela druge adrese pointeru bez prethodnog brisanja memorije na koju pokazuje) 
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;unsigned short int *pPointer =new unsigned short int; &lt;span style=&quot;color: blue&quot;&gt;//rezervise se memorija&lt;/span&gt;
&lt;br /&gt;
*pPointer =72; &lt;span style=&quot;color: blue&quot;&gt;//upisuje se vrednost u memoriju&lt;/span&gt;
&lt;br /&gt;
pPointer =new unsigned short int; &lt;span style=&quot;color: blue&quot;&gt;//rezervise se drugi memorijski prostor (prethodni nije oslobodjen)&lt;/span&gt;
&lt;br /&gt;
*pPointer =84; &lt;span style=&quot;color: blue&quot;&gt;//upisuje se vrednost u &amp;quot;drugi&amp;quot; memorijski prostor&lt;/span&gt;&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
* Ne postoji način da se oslobodi prva memorija, budući da nema pokazivača, te se više ne zna lokacija tog prostora. Oslobodiće se tek po završetku programa.
&lt;br /&gt;

&lt;br /&gt;
* Pre linije: &amp;quot;pPointer =new unsigned short int;&amp;quot;, treba staviti: &amp;quot;delete pPointer;&amp;quot; da ne bi bilo curenja memorije.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Svaki put kada se koristi ključna reč &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;new&lt;/span&gt;&amp;quot; u programu, &lt;span style=&quot;text-decoration: underline&quot;&gt;takođe treba biti&lt;/span&gt; i odgovarajući &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt;, kako bi memorija opet bila dostupna za upis na &lt;span style=&quot;font-style: italic&quot;&gt;heap&lt;/span&gt;-u.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Primer: eksplicitno brisanje sa heap-a i implicitno brisanje sa stack-a
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_49953612_Malware.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;skriven_spoiler_znak&quot;&gt;+ &lt;/span&gt;&lt;span class=&quot;skriven_spoiler_link&quot; onclick=&quot;sakrij_prikazi_spoiler(this);&quot; style=&quot;text-decoration:underline; color:#004A8B; cursor: pointer;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Vidi kompletan kod&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: none;&quot; class=&quot;skriven_spoiler&quot;&gt;&lt;cite2&gt;#include&amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
//klasa
&lt;br /&gt;
class Malware
&lt;br /&gt;
	{
&lt;br /&gt;
	public:
&lt;br /&gt;
		Malware();
&lt;br /&gt;
		~Malware();
&lt;br /&gt;
		
&lt;br /&gt;
	private:
&lt;br /&gt;
		int itsNumber;
&lt;br /&gt;
	};
&lt;br /&gt;

&lt;br /&gt;
//konstruktor &amp;amp; destruktor
&lt;br /&gt;
Malware::Malware()
&lt;br /&gt;
{
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Nadjen malware.\n &amp;quot;;
&lt;br /&gt;
	itsNumber =1;
&lt;br /&gt;
}
&lt;br /&gt;

&lt;br /&gt;
Malware::~Malware()
&lt;br /&gt;
{
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Malware obrisan.\n &amp;quot;;
&lt;br /&gt;
}
&lt;br /&gt;

&lt;br /&gt;
//main metoda
&lt;br /&gt;
int main (int argc, char *argv[]) {
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Malware Virut...\n &amp;quot;;
&lt;br /&gt;
	Malware Virut; //Malware Virut je kreiran na Stack-u
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Linija: Malware *pKido = new Malware...\n&amp;quot;;
&lt;br /&gt;
	Malware *pKido = new Malware; //kido pokazuje na Malware na Heap-u
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Linija: delete pKido...\n&amp;quot;; 
&lt;br /&gt;
	delete pKido; //eksplicitno brisanje Kido-a.
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Izlazim, Virut treba da bude pobrisan...\n&amp;quot;;
&lt;br /&gt;
	return 0; //ovim se brise Malware sa Stack-a jer je van opsega!
&lt;br /&gt;
}
&lt;br /&gt;
&lt;/cite2&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
* pristup clanicama preko pointera, primer: &lt;span style=&quot;color: blue&quot;&gt;(*pKido).GetNumber()&lt;/span&gt;;
&lt;br /&gt;
* ili preko &amp;quot;point to operator&amp;quot; tj. &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;-&amp;gt;&lt;/span&gt;&amp;quot;, primer:  &lt;span style=&quot;color: blue&quot;&gt;pKido-&amp;gt;GetNumber()&lt;/span&gt;;
&lt;br /&gt;
// i ovo je &amp;quot;indirection operator&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
Primer upotrebe operatora:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_67437598_Strelica.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;skriven_spoiler_znak&quot;&gt;+ &lt;/span&gt;&lt;span class=&quot;skriven_spoiler_link&quot; onclick=&quot;sakrij_prikazi_spoiler(this);&quot; style=&quot;text-decoration:underline; color:#004A8B; cursor: pointer;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Vidi kompletan kod&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: none;&quot; class=&quot;skriven_spoiler&quot;&gt;&lt;cite2&gt;#include&amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
class Malware
&lt;br /&gt;
	{
&lt;br /&gt;
	public:
&lt;br /&gt;
		Malware();
&lt;br /&gt;
		~Malware();
&lt;br /&gt;
	
&lt;br /&gt;
		int GetDetected() const {return *itsDetected;}
&lt;br /&gt;
		void SetDetected(int number) { *itsDetected = number; }
&lt;br /&gt;
	
&lt;br /&gt;
		int GetRemoved() const {return *itsRemoved;}
&lt;br /&gt;
		void setRemoved (int number){*itsRemoved = number;}
&lt;br /&gt;
	
&lt;br /&gt;
	private:
&lt;br /&gt;
		int *itsDetected;
&lt;br /&gt;
		int *itsRemoved;
&lt;br /&gt;
	};
&lt;br /&gt;

&lt;br /&gt;
	Malware::Malware()
&lt;br /&gt;
	{
&lt;br /&gt;
		itsDetected = new int(10);
&lt;br /&gt;
		itsRemoved = new int(6);
&lt;br /&gt;
	}
&lt;br /&gt;

&lt;br /&gt;
	Malware::~Malware()
&lt;br /&gt;
	{
&lt;br /&gt;
		delete itsDetected;
&lt;br /&gt;
		delete itsRemoved;
&lt;br /&gt;
	}
&lt;br /&gt;

&lt;br /&gt;
	int main (int argc, char *argv[]) {
&lt;br /&gt;

&lt;br /&gt;
		Malware *Virut =new Malware;
&lt;br /&gt;
		cout &amp;lt;&amp;lt; &amp;quot;Pre skeniranja, na racunaru ima &amp;quot; &amp;lt;&amp;lt; Virut-&amp;gt;GetDetected() &amp;lt;&amp;lt; &amp;quot; Virut detekcija\n&amp;quot;;
&lt;br /&gt;
		Virut-&amp;gt;SetDetected((Virut-&amp;gt;GetDetected())-(Virut-&amp;gt;GetRemoved()));
&lt;br /&gt;
		cout &amp;lt;&amp;lt; &amp;quot;Posle skeniranja, racunaru ima &amp;quot; &amp;lt;&amp;lt; Virut-&amp;gt;GetDetected() &amp;lt;&amp;lt; &amp;quot; Virut detekcija\n &amp;quot;;
&lt;br /&gt;
		delete Virut;
&lt;br /&gt;
		return 0;
&lt;br /&gt;
	}&lt;/cite2&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* dve varijable članice su pointeri ka integerima
&lt;br /&gt;
* konstruktor inicijalizuje pointere da pokazuju na vrednost u memoriji (heap)
&lt;br /&gt;
* destruktor briše alociranu memoriju
&lt;br /&gt;
* main funkcija nema pojma da su itsDetected i itsRemoved pointeri koji pokazuju na neku lokaciju na heap-u. Oslobođena je znanja o memorijskoj lokaciji, jer zna samo za GetDetected() i SetDetected(). Dakle, svi detalji o implenetaciju su sakriveni unutar klase (baš kako i treba da bude). 
&lt;br /&gt;
* Posmatrajmo liniju &amp;quot;delete Virut;&amp;quot; 
&lt;br /&gt;
Kada se Virut obriše na liniji 40, poziva se njegov destruktor (~Malware) i on briše promenljive članice klase (&lt;span style=&quot;font-weight: bold&quot;&gt;koji su pointeri&lt;/span&gt; !) . E sad, kako oni pokazuju na Integere, njihovi implicitni destruktori će biti pozvani. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; ključna reč &lt;span style=&quot;font-weight: bold&quot;&gt;this&lt;/span&gt; predstavlja pointer ka tekućem objektu. Svaka metoda klase ima ovaj &amp;quot;skriveni parametar&amp;quot;. Primer upotrebe:
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt; public:
&lt;br /&gt;
 Rectangle();
&lt;br /&gt;
 ~Rectangle();
&lt;br /&gt;
 void SetLength(int length) { &lt;span style=&quot;font-weight: bold&quot;&gt;this&lt;/span&gt;-&amp;gt;itsLength =length;}
&lt;br /&gt;
 int GetLength() const { return &lt;span style=&quot;font-weight: bold&quot;&gt;this&lt;/span&gt;-&amp;gt;itsLength; }&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;skriven_spoiler_znak&quot;&gt;+ &lt;/span&gt;&lt;span class=&quot;skriven_spoiler_link&quot; onclick=&quot;sakrij_prikazi_spoiler(this);&quot; style=&quot;text-decoration:underline; color:#004A8B; cursor: pointer;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Vidi kompletan kod&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: none;&quot; class=&quot;skriven_spoiler&quot;&gt;&lt;cite2&gt;#include&amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
class Rectangle
&lt;br /&gt;
	{
&lt;br /&gt;
	public:
&lt;br /&gt;
		Rectangle();
&lt;br /&gt;
		~Rectangle();
&lt;br /&gt;
		
&lt;br /&gt;
		//sa this
&lt;br /&gt;
		void SetLength(int length) { this-&amp;gt;itsLength=length;}
&lt;br /&gt;
		int GetLength()const { return this-&amp;gt;itsLength; }
&lt;br /&gt;
		
&lt;br /&gt;
		//bez this
&lt;br /&gt;
		void SetWidth(int width) { itsWidth=width; }
&lt;br /&gt;
		int GetWidth()const { return itsWidth; }
&lt;br /&gt;
		
&lt;br /&gt;
	private:
&lt;br /&gt;
		int itsLength;
&lt;br /&gt;
		int itsWidth;
&lt;br /&gt;
	};
&lt;br /&gt;

&lt;br /&gt;
//konstruktor &amp;amp; destruktor
&lt;br /&gt;
Rectangle::Rectangle() { itsWidth=2; itsLength=3; }
&lt;br /&gt;
Rectangle::~Rectangle(){  }
&lt;br /&gt;

&lt;br /&gt;
int main (int argc, char *argv[]) {
&lt;br /&gt;
	Rectangle theRect;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;theRect is &amp;quot; &amp;lt;&amp;lt; theRect.GetLength() &amp;lt;&amp;lt; &amp;quot; cm long.\n &amp;quot;;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;theRect is &amp;quot; &amp;lt;&amp;lt; theRect.GetWidth() &amp;lt;&amp;lt; &amp;quot; cm wide.\n &amp;quot;;
&lt;br /&gt;
	
&lt;br /&gt;
	theRect.SetLength(20); 
&lt;br /&gt;
	theRect.SetWidth(10);
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;theRect is &amp;quot; &amp;lt;&amp;lt; theRect.GetLength() &amp;lt;&amp;lt; &amp;quot; cm long.\n &amp;quot;;
&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;theRect is &amp;quot; &amp;lt;&amp;lt; theRect.GetWidth() &amp;lt;&amp;lt; &amp;quot; cm wide.\n &amp;quot;;
&lt;br /&gt;
	return 0;
&lt;br /&gt;
}
&lt;br /&gt;
&lt;/cite2&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* Napomena: &lt;span style=&quot;font-weight: bold&quot;&gt;this&lt;/span&gt; pointeri se ne brišu eksplicitno! O ovome ne moramo da brinemo jer se o tome brine kompajler.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Pored memory leak-a, još jedna bitna stvar kod pointera, a na koju treba da obratimo pažnju, su takozvani: &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;a href=&quot;http://www.mycity.rs/Engleski-jezik/I-will-probably-never-use-this-Anyway-good-to-know_16.html#1417263&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;dangling&lt;/a&gt;&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;stray&lt;/span&gt; ili &lt;span style=&quot;font-weight: bold&quot;&gt;wild&lt;/span&gt; pointeri (&lt;span style=&quot;font-style: italic&quot;&gt;divlji&lt;/span&gt; ili &lt;span style=&quot;font-style: italic&quot;&gt;zalutali&lt;/span&gt; pokazivači). O čemu se ovde radi?
&lt;br /&gt;

&lt;br /&gt;
--&amp;gt; divlji pokazivač se kreira kada pozovemo &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt; nekog pokazivača pokazivača (i samim tim oslobodimo memoriju na koju pokazuje), ali ga ne postavimo na NULL nakon oslobađanja memorije! 
&lt;br /&gt;

&lt;br /&gt;
Budući da je oslobođena memorija dostupna za neki drugi upis, ukoliko ne NULL-ujemo pokazivač, on će pokazivati na istu memorijsku lokaciju, u kojoj se sada nalazi neki drugi sadržaj  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt;  
&lt;br /&gt;

&lt;br /&gt;
Ukoliko se u programu i dalje koristi daj pointer, rezultat tog programa je tada vrlo nepredvidiv!
&lt;br /&gt;

&lt;br /&gt;
(ilustrativan primer je, da imamo memorisan broj neke kompanije na telefonu. Kompanija se može ugasiti ili preseliti i taj broj postaje dostupan za neku drugu firmu. Dakle, ako pozovemo taj memorisani broj (koji je u međuvremenu dodeljen nekoj drugoj firmi), dobićemo uslovno rečeno - nepredviđen rezultat (umesto da se završi posao sa prvobitnom firmom, komunicira se sa drugom firomom i prekida se poziv, pri čemu posao nije obavljen)).
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Naravoučenije - uvek kada pozovemo &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt; pointera, &lt;span style=&quot;text-decoration: underline&quot;&gt;postavimo taj pointer da pokazuje na &lt;span style=&quot;font-weight: bold&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt; ili &lt;span style=&quot;font-weight: bold&quot;&gt;nullptr&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
// Više o tome - u ovoj temi: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Još jedan primer rada sa pokazivačima, koji će biti jasniji kroz iteracije u debugger-u:
&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;skriven_spoiler_znak&quot;&gt;+ &lt;/span&gt;&lt;span class=&quot;skriven_spoiler_link&quot; onclick=&quot;sakrij_prikazi_spoiler(this);&quot; style=&quot;text-decoration:underline; color:#004A8B; cursor: pointer;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;KOD&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: none;&quot; class=&quot;skriven_spoiler&quot;&gt;&lt;cite2&gt;#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;
&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;
&lt;br /&gt;
	
&lt;br /&gt;
	//deklaracija/definicija
&lt;br /&gt;
	bool GetWord(char* theString, char* word, int&amp;amp; wordOffset);
&lt;br /&gt;

&lt;br /&gt;
int main()
&lt;br /&gt;
{
&lt;br /&gt;
	const int bufferSize = 255;
&lt;br /&gt;
	char buffer[bufferSize+1];   // hold the entire string
&lt;br /&gt;
	char word[bufferSize+1];     // hold the word
&lt;br /&gt;
	int wordOffset = 0;          // start at the beginning
&lt;br /&gt;
	
&lt;br /&gt;
	std::cout &amp;lt;&amp;lt; &amp;quot;Unesite recenicu: &amp;quot;;
&lt;br /&gt;
	std::cin.getline(buffer,bufferSize); //getline method
&lt;br /&gt;
	
&lt;br /&gt;
	while (GetWord(buffer,word,wordOffset))
&lt;br /&gt;
	{
&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Nasao sam ovu rec: &amp;quot; &amp;lt;&amp;lt; word &amp;lt;&amp;lt; std::endl;
&lt;br /&gt;
	}
&lt;br /&gt;
	return 0;
&lt;br /&gt;
}
&lt;br /&gt;

&lt;br /&gt;
// implementacija
&lt;br /&gt;
bool GetWord(char* theString, char* word, int&amp;amp; wordOffset)
&lt;br /&gt;
{
&lt;br /&gt;
	if (!theString[wordOffset])  // end of string?
&lt;br /&gt;
		return false;
&lt;br /&gt;
	
&lt;br /&gt;
	char *p1, *p2;
&lt;br /&gt;
	p1 = p2 = theString+wordOffset;  // point to the next word
&lt;br /&gt;
	
&lt;br /&gt;
	// eat leading spaces
&lt;br /&gt;
	for (int i = 0; i&amp;lt;(int)strlen(p1) &amp;amp;&amp;amp; !isalnum(p1[0]); i++)
&lt;br /&gt;
		p1++;
&lt;br /&gt;
	
&lt;br /&gt;
	// see if you have a word
&lt;br /&gt;
	if (!isalnum(p1[0]))
&lt;br /&gt;
		return false;
&lt;br /&gt;
	
&lt;br /&gt;
	// p1 now points to start of next word
&lt;br /&gt;
	// point p2 there as well
&lt;br /&gt;
	p2 = p1;
&lt;br /&gt;
	
&lt;br /&gt;
	// march p2 to end of word
&lt;br /&gt;
	while (isalnum(p2[0]))
&lt;br /&gt;
		p2++;
&lt;br /&gt;
	
&lt;br /&gt;
	// p2 is now at end of word
&lt;br /&gt;
	// p1 is at beginning of word
&lt;br /&gt;
	// length of word is the difference
&lt;br /&gt;
	int len = int (p2 - p1);
&lt;br /&gt;
	
&lt;br /&gt;
	// copy the word into the buffer
&lt;br /&gt;
	strncpy (word,p1,len);
&lt;br /&gt;
	
&lt;br /&gt;
	// null terminate it
&lt;br /&gt;
	word[len]='\0';
&lt;br /&gt;
	
&lt;br /&gt;
	// now find the beginning of the next word
&lt;br /&gt;
	for (int j = int(p2-theString); j&amp;lt;(int)strlen(theString)
&lt;br /&gt;
		&amp;amp;&amp;amp; !isalnum(p2[0]); j++)
&lt;br /&gt;
	{
&lt;br /&gt;
		p2++;
&lt;br /&gt;
	}
&lt;br /&gt;
	
&lt;br /&gt;
	wordOffset = int(p2-theString);
&lt;br /&gt;
	
&lt;br /&gt;
	return true;
&lt;br /&gt;
}
&lt;br /&gt;
&lt;/cite2&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3] Reference&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Referencu možemo shvatiti kao sinonim, alternativno ime za objekat, gde se svaka manipulacija sa objektom - direktno odnosi na &amp;quot;imenovani&amp;quot; objekat. 
&lt;br /&gt;

&lt;br /&gt;
Za kreiranje reference se koristi &lt;span style=&quot;font-style: italic&quot;&gt;reference operator&lt;/span&gt; - &lt;span style=&quot;font-weight: bold&quot;&gt;&amp;amp;&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;color: blue&quot;&gt;int &lt;span style=&quot;font-weight: bold&quot;&gt;&amp;amp;&lt;/span&gt;rNekaReferenca = 55;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Napomena: &lt;span style=&quot;font-weight: bold&quot;&gt;&amp;amp;&lt;/span&gt; predstavlja i:
&lt;br /&gt;
- reference operator 
&lt;br /&gt;
- i address operator.
&lt;br /&gt;

&lt;br /&gt;
// Nisu isti operatori u pitanju (iako je oznaka ista) i kompajler zna na sta se tačno odnosi koji operator.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Primer:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_135090503_reference.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;skriven_spoiler_znak&quot;&gt;+ &lt;/span&gt;&lt;span class=&quot;skriven_spoiler_link&quot; onclick=&quot;sakrij_prikazi_spoiler(this);&quot; style=&quot;text-decoration:underline; color:#004A8B; cursor: pointer;&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;KOD&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: none;&quot; class=&quot;skriven_spoiler&quot;&gt;&lt;cite2&gt;#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
	
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
int main()
&lt;br /&gt;
{
&lt;br /&gt;
int  intOne;
&lt;br /&gt;
int &amp;amp;rSomeRef = intOne;
&lt;br /&gt;
intOne = 5;
&lt;br /&gt;
cout &amp;lt;&amp;lt; &amp;quot;intOne: &amp;quot; &amp;lt;&amp;lt; intOne &amp;lt;&amp;lt; endl;  //5
&lt;br /&gt;
cout &amp;lt;&amp;lt; &amp;quot;rSomeRef: &amp;quot; &amp;lt;&amp;lt; rSomeRef &amp;lt;&amp;lt; endl; //5
&lt;br /&gt;
rSomeRef = 7; &lt;span style=&quot;color: blue&quot;&gt;//ovom prilikom se menja zapravo intOne, buduci da je refernca samo &amp;quot;alias&amp;quot;  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; &lt;/span&gt;
&lt;br /&gt;
cout &amp;lt;&amp;lt; &amp;quot;intOne: &amp;quot; &amp;lt;&amp;lt; intOne &amp;lt;&amp;lt; endl; // 7 
&lt;br /&gt;
cout &amp;lt;&amp;lt; &amp;quot;rSomeRef: &amp;quot; &amp;lt;&amp;lt; rSomeRef &amp;lt;&amp;lt; endl; //7
&lt;br /&gt;
return 0;
&lt;br /&gt;
}&lt;/cite2&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Reference moraju biti &lt;span style=&quot;font-weight: bold&quot;&gt;inicijalizovane&lt;/span&gt; (za vreme kreacije) 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Reference treba koristiti jer se sa njma postiže veća efikasnost programa.
&lt;br /&gt;
- Svaki put kada se funkciji prosledi objekat &lt;span style=&quot;font-style: italic&quot;&gt;po vrednosti&lt;/span&gt; --&amp;gt; pravi se kopija tog objekta.
&lt;br /&gt;
- Svaki put kada se vrati objekat iz funkcije (return) po vrednosti --&amp;gt; opet se pravi kopija nekog objekta. 
&lt;br /&gt;

&lt;br /&gt;
Ovi objekti se ne kopiraju na &lt;span style=&quot;font-style: italic&quot;&gt;heap&lt;/span&gt;, već na &lt;span style=&quot;font-style: italic&quot;&gt;stack&lt;/span&gt; (dakle, ako prenosimo &lt;span style=&quot;font-style: italic&quot;&gt;po vrednosti&lt;/span&gt;) i na taj način imamo utrošak i vremena i memorije.
&lt;br /&gt;

&lt;br /&gt;
Prenos objekta po vrednosti je pogodan za manje objekte (tipa int), ali za veće objekte, korisnički definisane ovaj oblik nije pogodan, stoga se prenos treba vršiti &lt;span style=&quot;font-style: italic&quot;&gt;po referenci&lt;/span&gt;. U jednom od narednih članaka će biti opisan prenos po referenci i napredne manipulacije sa funkcijama. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Refernce VS pokazivači&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
- pokazivači, ukoliko nisu inicijalizovani ili kada se brišu, treba da budu NULL (nullptr).
&lt;br /&gt;
- referenca ne može biti NULL (ako se desi da referenca bude null, doći će do greške ili nepredviđenih situacija).
&lt;br /&gt;

&lt;br /&gt;
- reference se lakše koriste i većina C++ programera preferiraju refernce, umesto pokazivača. Savet je da se pokazivači ne koriste ukoliko reference mogu da &amp;quot;završe posao&amp;quot;. 
&lt;br /&gt;
- Pointeri nude veću fleksibilnost, ali su komplikovaniji za upotrebu. Sa njima treba postupati vrlo oprezno.
&lt;br /&gt;

&lt;br /&gt;
- Reference bolje sakrivaju detalje u kodu, što će se videti u kasnijim primerima serijala (em nema potrebe za neprestanim dereferenciranjem promenljive, em je indirekcija skrivena).
&lt;br /&gt;

&lt;br /&gt;
- Dok se pokazivači mogu pokazivati na jedan objekat, a potom na drugi 
&lt;br /&gt;
- reference se vezuju samo za jedan objekat (svaka manipulacija nad referencom se odnosi baš za taj konkretni objekat, + adresa reference predstavlja memorijsku adresu posmatranog objekta kome je refernca alias) . 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Trivia/Napomene&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* Sve članice klase su podrazumevano &lt;span style=&quot;font-weight: bold&quot;&gt;privatne&lt;/span&gt;. Dakle, može im se pristupiti jedino na nivou metoda same klase.
&lt;br /&gt;

&lt;br /&gt;
* &lt;span style=&quot;font-weight: bold&quot;&gt;Inicijalizacija&lt;/span&gt; predstavlja deklaraciju promenljive uz dodelu vrednosti (npr. int i = 5&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
* Ako napišemo sopstveni konstruktor, kompajler neće da obezbedi default konstruktor! Dakle, ako naš konstruktor prima neki parametar, kompajler neće obezbediti default konstruktor. Ukoliko želimo konstruktor bez parametara, moraćemo ga sami programirati.
&lt;br /&gt;

&lt;br /&gt;
* Reference moraju biti inicijalizovane! Ukoliko deklarišemo referencu, a ne inicijalizujemo je, dobićemo &lt;span style=&quot;font-style: italic&quot;&gt;compile-time error&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
* Ukoliko potražimo adresu reference, vratiće adresu svoje &amp;quot;mete&amp;quot; (budući da predstavljaju alias nekog objekta [mete]). 
&lt;br /&gt;

&lt;br /&gt;
* Reference se ne mogu menjati, u smislu da se dodele drugom objektu !!!
&lt;br /&gt;
--&amp;gt; kada se definiše, referenca predstavlja alias samo za jedan objekat.
&lt;br /&gt;
Pseudokod:
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;int intOne;
&lt;br /&gt;
int &amp;amp;rSomeRef = intOne; &lt;span style=&quot;color: blue&quot;&gt;//alias za intOne&lt;/span&gt;
&lt;br /&gt;
....
&lt;br /&gt;
int intTwo = 8;
&lt;br /&gt;
rSomeRef = intTwo; &lt;span style=&quot;color: blue&quot;&gt;// nije alias za intTwo !&lt;/span&gt;
&lt;br /&gt;
// ova linija ce zapravo intOne dodeliti 8, referenca nece promeniti alias!
&lt;br /&gt;
&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
* Objekat može da bude NULL ukoliko iz nekog razloga ne može da se alocira memorija na heapu  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;
--&amp;gt; budući da reference ne mogu biti NULL, dobra praksa defanzivnog programiranja je da se objekat provo proveri da li je NULL, i kada se utvrdi da nije NULL --&amp;gt; da se onda može incijalizovati referenca, da bude alias tom objektu.
&lt;br /&gt;

&lt;br /&gt;
Primer:
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;int *pObjekat = new Objekat();
&lt;br /&gt;
if (pObjekat != NULL) { int &amp;amp;rObjekat = *pObjekat; }&lt;/cite&gt;</description>
	<pubDate>Tue, 23 Oct 2012 14:52:09 +0100</pubDate>
</item>
<item>
	<title>Analiza situacije: Stomping on a C++ pointer</title>
	<link>https://www.mycity.rs/C/Analiza-situacije-Stomping-on-a-C-pointer.html</link>
	<guid>https://www.mycity.rs/?p=1421136</guid>
	<author>nobody@mycity.rs (Fil)</author>
	<description>&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;Za&lt;/span&gt; &lt;span style=&quot;color: red&quot;&gt;7000.&lt;/span&gt; &lt;span style=&quot;color: blue&quot;&gt;poruku --&amp;gt; novi članak&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ovaj članak treba da pruži detaljan uvid o tome koliko rad sa pokazivačima može biti &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;muka Tantalova&lt;/span&gt;&amp;quot;, ukoliko se pravilno ne rukuje sa njima. 
&lt;br /&gt;

&lt;br /&gt;
Predstavljen je jednostavan i vrlo kratak kod, a pažnja će se usmeriti na stvari koje se dešavaju &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;ispod haube&lt;/span&gt;&amp;quot;, dakle kuda &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;divljaju&lt;/span&gt;&amp;quot; pointeri. Ući u trag ovom bug-u, u glomaznom projektu, prava je muka.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Za potrebe članka je korišteno:
&lt;br /&gt;

&lt;br /&gt;
- Razvojno okruženje &lt;span style=&quot;font-weight: bold&quot;&gt;ZinjaI&lt;/span&gt; --&amp;gt; &lt;a href=&quot;http://www.mycity.rs/Linux-Download/Pregled-razvojnih-okruzenja-za-C-u-Linuksu.html&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;više informacija&lt;/a&gt;
&lt;br /&gt;
- Linux Mint 13 KDE, x86 --&amp;gt; više informacija
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Pogled na kod i izlaz iz programa:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_44998149_Pointer.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Kompletan kod:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include&amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
typedef unsigned short int USHORT;
&lt;br /&gt;

&lt;br /&gt;
int main &amp;#40;int argc, char *argv&amp;#91;&amp;#93;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;USHORT *pInt =new USHORT;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;*pInt =10;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;*pInt&amp;#58;&amp;quot; &amp;lt;&amp;lt; *pInt &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete pInt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;long *pLong =new long;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;*pLong =90000;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt;&amp;quot;*pLong&amp;#58;&amp;quot; &amp;lt;&amp;lt; *pLong &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;*pInt =20;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt;&amp;quot;*pInt&amp;#58;&amp;quot; &amp;lt;&amp;lt;*pInt &amp;lt;&amp;lt;endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt;&amp;quot;*pLong&amp;#58;&amp;quot; &amp;lt;&amp;lt;*pLong &amp;lt;&amp;lt;endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;delete pLong;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt;  &lt;span style=&quot;text-decoration: underline&quot;&gt;Napomena&lt;/span&gt;: u zavisnosti od mašine, izlaz iz koda može izgledati drugačije.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_question.gif&quot; alt=&quot;Question&quot; border=&quot;0&quot; /&gt; Dakle, pitanje glasi kako to da &lt;span style=&quot;font-weight: bold&quot;&gt;pLong&lt;/span&gt; ima vrednost &lt;span style=&quot;font-weight: bold&quot;&gt;65556&lt;/span&gt;, kada njega nismo menjali !?
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Krenimo sa analizom:
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U &lt;span style=&quot;font-style: italic&quot;&gt;liniji 9&lt;/span&gt; se deklariše pointer &lt;span style=&quot;font-weight: bold&quot;&gt;pInt&lt;/span&gt;, rezerviše se slobodna memorijska lokacija na heap-u i pointer pokazuje na taj prostor. Tu lokaciju sam označio sa proizvoljnom oznakom: &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;#&lt;/span&gt;&amp;quot;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_51921266_9.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U &lt;span style=&quot;font-style: italic&quot;&gt;liniji 10&lt;/span&gt; se broj 10 upisuje u rezervisanu memorijsku lokaciju &lt;span style=&quot;font-weight: bold&quot;&gt;#&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_84372159_10i.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Bitno je napomenuti da se u memoriji ne čuvaju decimalne vrednosti, već &lt;span style=&quot;font-weight: bold&quot;&gt;heksadecimalne&lt;/span&gt; vrednosti. Heksadecimalne vrednosti koje odgovaraju vrednostima iz koda su:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;10&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: blue&quot;&gt;A&lt;/span&gt; (tj. &lt;span style=&quot;color: blue&quot;&gt;00 0A&lt;/span&gt; za vrednost od dva bajta)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;90000&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: blue&quot;&gt;00 01 5F 90&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;20&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: blue&quot;&gt;14&lt;/span&gt; (tj. &lt;span style=&quot;color: blue&quot;&gt;00 14&lt;/span&gt; za vrednost od dva bajta)
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pri određivanju ovih vrednosti može vam pomoći sledeći Web servis:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;EasyCalculation&lt;/span&gt; - &lt;span style=&quot;font-style: italic&quot;&gt;Hex To Decimal and Binary Converter&lt;/span&gt; --&amp;gt; LINK
&lt;br /&gt;
// takođe, pogledajte ovu kompilaciju korisnih Web servisa, među kojima je i ovaj gore pomenuti: &lt;a href=&quot;http://www.mycity.rs/Blog/Korisni-Web-servisi.html#1083895&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;LINK&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U &lt;span style=&quot;font-style: italic&quot;&gt;liniji 14&lt;/span&gt; oslobađa se memorijski prostor na koji pokazuje pointer, ali pointer i dalje pokazuje na tu memorijsku lokaciju.
&lt;br /&gt;
Dakle, u primeru je namerno izvršen prevod i pointeru nije dodeljen &lt;span style=&quot;font-weight: bold&quot;&gt;NULL&lt;/span&gt;, tj. stvoren je &lt;span style=&quot;font-weight: bold&quot;&gt;divlji pointer&lt;/span&gt; (wild, dangling ili stray pointer). 
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_122722996_14.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U &lt;span style=&quot;font-style: italic&quot;&gt;liniji 16&lt;/span&gt; se deklariše pointer &lt;span style=&quot;font-weight: bold&quot;&gt;pLong&lt;/span&gt;, rezerviše se slobodna memorijska lokacija na heap-u i pointer pokazuje na taj prostor. 
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Kako je lokacija &lt;span style=&quot;font-weight: bold&quot;&gt;#&lt;/span&gt; postala slobodna za upotrebu, kompajler je prvu slobodnu lokaciju (dakle, &lt;span style=&quot;font-weight: bold&quot;&gt;#&lt;/span&gt;) odredio kao lokaciju na koju pokazuje &lt;span style=&quot;font-weight: bold&quot;&gt;pLong&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
- U &lt;span style=&quot;font-style: italic&quot;&gt;liniji 17&lt;/span&gt; se u tu memorijsku lokaciju upisuje broj &lt;span style=&quot;font-weight: bold&quot;&gt;90000&lt;/span&gt;. Ilustrativan prikaz memorije nakon ove linije:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_58693898_16i17i.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Sada dolazimo do još jednog nivoa usložnjavanja. Uočimo da je:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;90000&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: blue&quot;&gt;00 01 5F 90&lt;/span&gt; u heksadecimalnom zapisu, a na slici iznad je prikazano: &lt;span style=&quot;color: red&quot;&gt;5F 90 00 01&lt;/span&gt;.
&lt;br /&gt;
// dakle, parovi: &lt;span style=&quot;color: blue&quot;&gt;1-2-3-4&lt;/span&gt;, su sada: &lt;span style=&quot;color: red&quot;&gt;3-4-1-2&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Za ovaj način skladištenja je &amp;quot;kriv&amp;quot;, tzv. &lt;span style=&quot;font-weight: bold&quot;&gt;byte swapping order&lt;/span&gt;. Zbog toga stoji uvodna napomena u tekstu. U zavisnosti od toga kako kompajler dodeljuje slobodnu memoriju i &lt;span style=&quot;font-style: italic&quot;&gt;byte swapping order&lt;/span&gt;-a, moguće je da se dobiju različiti rezultati, u odnosu na postavljeni &lt;span style=&quot;font-style: italic&quot;&gt;screenshot&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Više o terminima &lt;span style=&quot;font-style: italic&quot;&gt;byte swapping&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;big endian&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;little endian&lt;/span&gt; i skladištenju možete naći na sledećim linkovima:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-style: italic&quot;&gt;Byte swapping and binary files&lt;/span&gt; - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
&lt;span style=&quot;font-style: italic&quot;&gt;Big endian &amp;amp; Little endian&lt;/span&gt; - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
&lt;span style=&quot;font-style: italic&quot;&gt;Pimer funkcije u Matlab-u&lt;/span&gt; - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
- U &lt;span style=&quot;font-style: italic&quot;&gt;liniji 20&lt;/span&gt; se u memorijsku lokaciju na koju pokazuje pointer &lt;span style=&quot;font-weight: bold&quot;&gt;pInt&lt;/span&gt; upisuje vrednost 20. Kako &lt;span style=&quot;font-weight: bold&quot;&gt;pInt&lt;/span&gt; i dalje pokazuje na memorijsku lokaciju &lt;span style=&quot;font-weight: bold&quot;&gt;#&lt;/span&gt;, vrednost će se upisati na tu memorijsku lokaciju. Sada je izgled memorije ovakav:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_48212847_20i.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Šta se zapravo ovde dešava? 
&lt;br /&gt;
--&amp;gt; Kako je &lt;span style=&quot;font-style: italic&quot;&gt;short int&lt;/span&gt; veličine 2 bajta, a long veličine 4 bajta dolazi do situacije &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;stomp on a pointer&lt;/span&gt;&amp;quot;. Dakle, vrednost 20 (veličine 2 bajta) je &lt;span style=&quot;font-weight: bold&quot;&gt;pregazila&lt;/span&gt; prva dva bajta postojeće vrednosti 90 (koja je veličine 4 bajta).
&lt;br /&gt;

&lt;br /&gt;
Dakle, kada se na &lt;span style=&quot;font-weight: bold&quot;&gt;5F 90&lt;/span&gt; 00 01 nalepi &lt;span style=&quot;font-weight: bold&quot;&gt;00 14&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: red&quot;&gt;00 14 00 01&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_question.gif&quot; alt=&quot;Question&quot; border=&quot;0&quot; /&gt; Pošto je decimalna vrednost, koja odgovara heksadecimalnoj vrednosti za &lt;span style=&quot;color: red&quot;&gt;00140001&lt;/span&gt;, iznosi &lt;span style=&quot;font-style: italic&quot;&gt;1310721&lt;/span&gt;, neko će se zapitati zašto ova vrednost nije izlistana kao konačna vrednost u izlazu iz programa (vidite početni screenshot, izlaz za pLong je: 65556).
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt;  Ko je krenuo gornjim rezonom - &lt;span style=&quot;text-decoration: underline&quot;&gt;pogrešio je&lt;/span&gt;, jer se povučena vrednost iz memorije transponuje po &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;byte swapping order-u&lt;/span&gt;&amp;quot;  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;

&lt;br /&gt;
Kako smo rekli u tekstu, ovo su parovi: &lt;span style=&quot;color: blue&quot;&gt;1-2-3-4&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: red&quot;&gt;3-4-1-2&lt;/span&gt;.
&lt;br /&gt;
Nama, pri povlačenju vrednosti iz memorije treba &lt;span style=&quot;font-weight: bold&quot;&gt;obrnut&lt;/span&gt; proces: &lt;span style=&quot;color: red&quot;&gt;3-4-1-2&lt;/span&gt; --&amp;gt; &lt;span style=&quot;color: blue&quot;&gt;1-2-3-4&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Dakle: &lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;00 14 00 01&lt;/span&gt;&lt;/span&gt; [ili 3-4-1-2] --&amp;gt; &lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;00 01 00 14&lt;/span&gt;&lt;/span&gt; [ili 1-2-3-4]
&lt;br /&gt;

&lt;br /&gt;
Heksadecimalnoj vrednosti od &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;00010014&lt;/span&gt;&lt;/span&gt; odgovara decimalna vrednost: &lt;span style=&quot;font-weight: bold&quot;&gt;65556&lt;/span&gt;, i najzad to je vrednost koju vidimo kao izlaz  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;Naravoučenije&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Prilikom rada sa pokazivačima treba biti vrlo oprezan, dakle:
&lt;br /&gt;
- osloboditi memorijski prostor (rezervisan sa NEW) preko ključne reči &lt;span style=&quot;font-weight: bold&quot;&gt;DELETE&lt;/span&gt; (ako se ovo ne uradi, doći će do &lt;span style=&quot;font-style: italic&quot;&gt;memory leak&lt;/span&gt;-a).
&lt;br /&gt;
- dodeliti pointeru &lt;span style=&quot;font-weight: bold&quot;&gt;NULL&lt;/span&gt; (ili &lt;span style=&quot;font-weight: bold&quot;&gt;nullptr&lt;/span&gt;) , ako smo sa &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt; oslobodili prostor sa odgovarajuće memorijske lokacije.
&lt;br /&gt;

&lt;br /&gt;
Ukoliko ovo ne uvažimo doći će do različitih nepredviđenih situacija, koje se teško mogu uloviti.</description>
	<pubDate>Mon, 15 Oct 2012 22:21:32 +0100</pubDate>
</item>
<item>
	<title>[1] Pravljenje igre Sokoban u C++ [izbor IDE-a i planiranje]</title>
	<link>https://www.mycity.rs/C/1-Pravljenje-igre-Sokoban-u-C-izbor-IDE-a-i-planiranje-2.html</link>
	<guid>https://www.mycity.rs/?p=1408197</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;span style=&quot;font-size: 24px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[1] Uvod&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[2] IDE&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;a) Windows
&lt;br /&gt;
b) Linux
&lt;br /&gt;
c) Mac OS X&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[3] Testiranje IDE-a&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;a) Windows
&lt;br /&gt;
b) Linux
&lt;br /&gt;
c) Mac OS X&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[4] Izbor i instalacija potrebnih biblioteka&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;a) Windows
&lt;br /&gt;
b) Linux
&lt;br /&gt;
c) Mac OS X&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;[5] Planiranje&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[1] Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
C++ je jedan od najrasprostranjenijih programskih jezika i podržava skoro sve arhitekture procesora i operativne sisteme. Nudi dobar odnos lakoće pisanja/održavanja kôda i brzine, što ga čini savršenim za pisanje igara. Još jedna prednost je ta da se većina biblioteka prvo ili čak isključivo pišu za C++.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2] IDE&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Kôd u suštini možemo pisati u bilo kojem editoru za tekst i kompajlirati ga preko alata u konzoli, ali to nije praktično i zahteva puno vremena. Da bi sami sebi olakšali rad, možemo instalirati &lt;span style=&quot;font-weight: bold&quot;&gt;IDE&lt;/span&gt; (&lt;span style=&quot;font-style: italic&quot;&gt;Integrated Development Environment&lt;/span&gt;). Pošto je C++ popularan, postoji veliki broj okruženja za razvoj koja ga podržavaju. Za listu popularnih okruženja i njihovih mogućnosti, pogledajte ovde: link.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;a) Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Za Windows operativni sistem definitivno preporučujem Visual C++ 2010 Express (nažalost Visual Studio 2012 Express ne može biti instaliran u Windows XP-u). &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++ 2010 Express&lt;/span&gt; je besplatan, ali zahteva registraciju, koja je takođe besplatna. Moje subjektivno mišljenje je da je to jedan od najboljih IDE-a koji su ikad napravljeni, ali sigurno će se naći osobe koje se neće slagati sa tim. Bez obzira na to, u ovom tekstu ću za Windows operativni sistem objašnjavati samo IDE &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++ 2010 Express&lt;/span&gt;. Instalaciju možete preuzeti ovde: link.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;b) Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Za Linux operativni sistem preporučujem Eclipse CDT. Od svih IDE-a za Linux koje sam probao, a bilo ih je dosta, čini mi se da ovaj ima najbolju podršku za C++ (sve od uređivanja koda, pa do testiranja). U nastavku teksta ću za Linux opisivati samo &lt;span style=&quot;font-style: italic&quot;&gt;Eclipse CDT&lt;/span&gt; IDE. Instalacija se za većinu distribucija svodi na instaliranje paketa &lt;span style=&quot;font-weight: bold&quot;&gt;eclipse-cdt&lt;/span&gt;. U slučaju da vaša distribucija nema paket za instalaciju &lt;span style=&quot;font-style: italic&quot;&gt;Eclipse CDT&lt;/span&gt;-a, instalaciju možete preuzeti odavde: link.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;c) Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Za Mac OS X je trenutno najbolji IDE Xcode. Podržava programiranje za sve Apple uređaje i prilično lepo se uklapa u ostatak operativnog sistema. Instalacija je besplatna, ali ćete morati da napravite besplatan iTunes nalog da biste mogli da instalirate &lt;span style=&quot;font-style: italic&quot;&gt;Xcode&lt;/span&gt; preko &lt;span style=&quot;font-style: italic&quot;&gt;App store&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3] Testiranje IDE-a&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pre nego što počnemo sa pisanjem igre, dobro bi bilo da proverimo da li IDE radi kako treba. Ako budete imali problema u ovom delu proverite dobro da li ste pravilno odradili svaki korak... Ako i dalje ne bude išlo, probajte da reinstalirate IDE.
&lt;br /&gt;

&lt;br /&gt;
Napisaćemo jednostavan program, čija će jedina svrha biti da ispiše tekst &lt;span style=&quot;font-style: italic&quot;&gt;Hello world!&lt;/span&gt; u konzoli. Kod je za sva okruženja isti:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; &amp;quot;Hello world!&amp;quot; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;a) Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Nov projekat u &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++&lt;/span&gt;-u kreiramo tako što kliknemo na meni &lt;span style=&quot;font-style: italic&quot;&gt;File-&amp;gt;New-&amp;gt;Project&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Izabraćemo &lt;span style=&quot;font-style: italic&quot;&gt;Win32 Console Application&lt;/span&gt; kao tip projekta i upisati &lt;span style=&quot;font-style: italic&quot;&gt;helloworld&lt;/span&gt; u polje &lt;span style=&quot;font-style: italic&quot;&gt;Name&lt;/span&gt;. Ako želite da promenite direktorijum u kojem će se projekat kreirati, promenite polje &lt;span style=&quot;font-style: italic&quot;&gt;Location&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Klikom na dugme &lt;span style=&quot;font-style: italic&quot;&gt;OK&lt;/span&gt; otvaramo nov prozor u kojem ćemo podesiti kakav konzolni projekat želimo. U pozdravnom prozoru pritisnemo &lt;span style=&quot;font-style: italic&quot;&gt;Next&lt;/span&gt; i zatim selektujemo opciju &lt;span style=&quot;font-style: italic&quot;&gt;Empty project&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Dodavanje datoteke u kojoj ćemo pisati kod se vrši desnim klikom na &lt;span style=&quot;font-style: italic&quot;&gt;Source Files&lt;/span&gt; i zatim klikom na meni &lt;span style=&quot;font-style: italic&quot;&gt;Add-&amp;gt;New Item&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_5.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
U prozoru za kreiranje datoteke izaberemo tip &lt;span style=&quot;font-style: italic&quot;&gt;C++ File (.cpp)&lt;/span&gt; i u polju &lt;span style=&quot;font-style: italic&quot;&gt;Name&lt;/span&gt; upišemo &lt;span style=&quot;font-style: italic&quot;&gt;main.cpp&lt;/span&gt;. Datoteka je sada kreirana i otvorena, i možemo u nju prekopirati kôd.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_6.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_7.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Pokretanje programa se vrši pritiskom na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Ctrl+F5&lt;/span&gt;. &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++&lt;/span&gt; će nas pitati da li želimo da napravimo izvršnu datoteku na osnovu unetog kôda. Nakon pritiska na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Yes&lt;/span&gt; program će se pokrenuti.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_269549399_8.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;b) Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Kreiranje projekta se vrši klikom na meni &lt;span style=&quot;font-style: italic&quot;&gt;File-&amp;gt;New-&amp;gt;C++ Project&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_122522465_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
U polju &lt;span style=&quot;font-style: italic&quot;&gt;Project name&lt;/span&gt; treba da upišemo &lt;span style=&quot;font-style: italic&quot;&gt;helloworld&lt;/span&gt;. Kao &lt;span style=&quot;font-style: italic&quot;&gt;Project Type&lt;/span&gt; treba da izaberemo &lt;span style=&quot;font-style: italic&quot;&gt;Executable-&amp;gt;Empty Project&lt;/span&gt;. Na desnoj strani, u listi &lt;span style=&quot;font-style: italic&quot;&gt;Toolchains&lt;/span&gt; treba da izaberemo &lt;span style=&quot;font-style: italic&quot;&gt;Linux GCC&lt;/span&gt; i kliknemo &lt;span style=&quot;font-style: italic&quot;&gt;Finish&lt;/span&gt;. To će napraviti prazan projekat za Linux operativni sistem i daće mu ime &lt;span style=&quot;font-style: italic&quot;&gt;helloworld&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_122522465_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada moramo dodati datoteku u kojoj ćemo pisati kôd. To ćemo uraditi tako što ćemo na levoj strani desnim dugmetom miša kliknuti na projekat &lt;span style=&quot;font-style: italic&quot;&gt;helloworld&lt;/span&gt; i izabrati &lt;span style=&quot;font-style: italic&quot;&gt;New-&amp;gt;Source File&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_122522465_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
U polje &lt;span style=&quot;font-style: italic&quot;&gt;source file&lt;/span&gt; upišemo &lt;span style=&quot;font-style: italic&quot;&gt;main.cpp&lt;/span&gt; i kliknemo &lt;span style=&quot;font-style: italic&quot;&gt;Finish&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_122522465_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Kada je datoteka kreirana, možemo u nju preneti kôd i snimiti je pritiskom na &lt;span style=&quot;font-style: italic&quot;&gt;Ctrl+S&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Pre nego što pokrenemo program, moramo napraviti izvršnu datoteku tako što ćemo kliknuti na meni &lt;span style=&quot;font-style: italic&quot;&gt;Project-&amp;gt;Build Project&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_122522465_5.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada možemo pokrenuti program pritiskom na &lt;span style=&quot;font-style: italic&quot;&gt;Ctrl+F11&lt;/span&gt;. U donjem delu prozora ćete videti karticu &lt;span style=&quot;font-style: italic&quot;&gt;Console&lt;/span&gt; u kojoj će pisati &lt;span style=&quot;font-style: italic&quot;&gt;Hello world!&lt;/span&gt; baš kao što smo hteli.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_122522465_6.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;c) Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Kada pokrenete &lt;span style=&quot;font-style: italic&quot;&gt;Xcode&lt;/span&gt;, dočekaće vas pozdravni prozor u kojem klikom na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Create a new Xcode project&lt;/span&gt; možete kreirati nov projekat.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
U sledećem prozoru na levoj strani u grupi &lt;span style=&quot;font-style: italic&quot;&gt;OS X&lt;/span&gt; izaberite &lt;span style=&quot;font-style: italic&quot;&gt;Application&lt;/span&gt;, a zatim na desnoj &lt;span style=&quot;font-style: italic&quot;&gt;Command Line Tool&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
U polje &lt;span style=&quot;font-style: italic&quot;&gt;Product Name&lt;/span&gt; upišite &lt;span style=&quot;font-style: italic&quot;&gt;helloworld&lt;/span&gt; i izaberite &lt;span style=&quot;font-style: italic&quot;&gt;C++&lt;/span&gt; u polju &lt;span style=&quot;font-style: italic&quot;&gt;Type&lt;/span&gt;. Polja &lt;span style=&quot;font-style: italic&quot;&gt;Organization Name&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;Company Identifier&lt;/span&gt; su obavezna i u njima možete upisati svoje ime, neku vašu oznaku ili nešto slično. Ako nemate ideje šta da upišete, upišite u oba polja &lt;span style=&quot;font-style: italic&quot;&gt;demo&lt;/span&gt;. Za kraj, moramo izabrati direktorijum u kojem će projekat biti snimljen.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Datoteka &lt;span style=&quot;font-style: italic&quot;&gt;main.cpp&lt;/span&gt; će već biti kreirana za nas i u njoj će već biti kôd koji ispisuje tekst na konzolu. Možete ostaviti taj kôd ili prekopirati kôd koji smo koristili za ostale operativne sisteme.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Program možemo pokrenuti pritiskom na &lt;span style=&quot;font-style: italic&quot;&gt;Command+R&lt;/span&gt;. &lt;span style=&quot;font-style: italic&quot;&gt;Xcode&lt;/span&gt; će vas pitati da li želite da omogućite dodatne mogućnosti za lakše otklanjanje grešaka iz programa.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_5.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako budete izabrali da želite, moraćete da upišete šifru za vašeg korisnika.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_6.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Na kraju ćete u donjem delu prozora videti tekst koji je aplikacija ispisala.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_44924908_7.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4] Izbor i instalacija potrebnih biblioteka&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Da bi igra uopšte mogla da se igra, moramo napraviti prozor u kojem će se sve iscrtavati, promeniti rezoluciju ako igrač želi fullscreen aplikaciju, učitati slike i zvukove sa diska, proveravati šta se dešava sa tastaturom, mišem i džojsticima, itd... Postoji veliki broj biblioteka koje nam mogu olakšati taj deo i omogućiti nam da se fokusiramo na pisanje same igre.
&lt;br /&gt;

&lt;br /&gt;
Pitanje je koju biblioteku izabrati. Ako već znate da koristite neke i dovoljne su vam da napravite igru koju želite, onda nemate problema. Ako ne znate, treba da se zapitate šta vam tačno treba za igru... Ako izaberete biblioteku koja ne nudi sve što vam treba, moraćete jedan deo sami da napravite, a ako izaberete neku biblioteku koja ima i više nego što vam treba, velika je verovatnoća da je zbog tog dodatnog koda biblioteka komplikovana za korišćenje. 
&lt;br /&gt;

&lt;br /&gt;
Naravno, tu je još jedan kriterijum... Verovatno ćete želeti besplatnu biblioteku (bar na početku) koja će vam dozvoliti da objavljujete igre bez dodatnih troškova. Listu popularnih biblioteka možete naći ovde: link.
&lt;br /&gt;

&lt;br /&gt;
Nama će za igru biti potrebno da lako kreiramo prozor, da crtamo 2D sličice (sprajtove), da možemo jednostavno da detektujemo koji taster na tastaturi je pritisnut i, možda kasnije, jednostavan način za puštanje zvukova. Jedna od biblioteka koja omogućava sve to i ima lep &lt;span style=&quot;font-style: italic&quot;&gt;C++&lt;/span&gt;-ovski interfejs je SFML. To je brza i besplatna biblioteka koja će nam omogućiti da vrlo brzo i bez muke napravimo kompletnu igru i za Windows, i za Linux, i za Mac OS X.
&lt;br /&gt;

&lt;br /&gt;
Za test ćemo iskorisiti kôd sa zvanične stranice, koji će otvoriti prozor crne boje i čekati da ga korisnik zatvori:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;SFML/Graphics.hpp&amp;gt;
&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Create the main rendering window
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; sf&amp;#58;&amp;#58;RenderWindow App&amp;#40;sf&amp;#58;&amp;#58;VideoMode&amp;#40;800, 600, 32&amp;#41;, &amp;quot;SFML Graphics&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Start game loop
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; while &amp;#40;App.IsOpened&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Process events
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sf&amp;#58;&amp;#58;Event Event;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while &amp;#40;App.GetEvent&amp;#40;Event&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Close window &amp;#58; exit
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;Event.Type == sf&amp;#58;&amp;#58;Event&amp;#58;&amp;#58;Closed&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; App.Close&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Clear the screen &amp;#40;fill it with black color&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; App.Clear&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Display window contents on screen
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; App.Display&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return EXIT_SUCCESS;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;a) Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Windows programeri, pripremite se &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Datoteke za instalaciju možemo preuzeti sa zvaničnog sajta: link. Kada preuzmete datoteku, raspakujte je tamo gde želite da &lt;span style=&quot;font-style: italic&quot;&gt;SFML &lt;/span&gt;bude instaliran. Dalje u tekstu ću pretpostavljati da ste datoteku raspakovali direktno na &lt;span style=&quot;font-style: italic&quot;&gt;C&lt;/span&gt; disk i da se instalacija nalazi u direktorijumu &lt;span style=&quot;font-style: italic&quot;&gt;SFML-1.6&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Pošto ova biblioteka ne nudi pripremljene datoteke za &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++ 2010 Express&lt;/span&gt;, moraćemo sami da ih napravimo. Prvo ćemo otvoriti projekat &lt;span style=&quot;font-style: italic&quot;&gt;SFML&lt;/span&gt; iz direktorijuma &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\build\vc2008&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_01.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Pošto je to projekat za stariju verziju &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++&lt;/span&gt;-a, otvoriće nam se prozor za konverziju. U pozdravnom prozoru treba da pritisnemo &lt;span style=&quot;font-style: italic&quot;&gt;Next&lt;/span&gt;, zatim izaberemo da nećemo &lt;span style=&quot;font-style: italic&quot;&gt;backup&lt;/span&gt; i pritisnemo &lt;span style=&quot;font-style: italic&quot;&gt;Finish&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_02.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_03.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Kada konverzija bude završena, dobićete upozorenje da neki projekti nisu učitani, ali neka vas to ne brine... To tako mora da bude. 
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_04.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Na kraju, deštriklirajmo opciju &lt;span style=&quot;font-style: italic&quot;&gt;Show the conversion log when the wizard is closed&lt;/span&gt; i pritisnemo &lt;span style=&quot;font-style: italic&quot;&gt;Close&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_05.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada ćemo na levoj strani dobiti dosta projekata koji nam nisu potrebni. Izaberite sve osim &lt;span style=&quot;font-style: italic&quot;&gt;sfml-audio&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-graphics&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-main&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-network&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-system&lt;/span&gt;, i &lt;span style=&quot;font-style: italic&quot;&gt;sfml-window&lt;/span&gt; (selektovanje izvedite tako što držite &lt;span style=&quot;font-style: italic&quot;&gt;Ctrl&lt;/span&gt; i klikćete na projekte koje želite da selektujete). Kada su svi nepotrebni projekti selektovani, izbacite ih pritiskom na taster &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;font-style: italic&quot;&gt;Del&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic&quot;&gt;ete&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Sledeći korak je kompajliranje projekata. Potrebno je iskompajlirati sve projekte za &lt;span style=&quot;font-style: italic&quot;&gt;Debug DLL&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;Debug static&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;Release DLL&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;Release static&lt;/span&gt; konfiguracije. Izbor konfiguracije se vrši u &lt;span style=&quot;font-style: italic&quot;&gt;toolbar-u&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_06.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Kompajliranje se vrši tako što izaberete konfiguraciju i zatim pritisnete &lt;span style=&quot;font-style: italic&quot;&gt;F7&lt;/span&gt;. Kada završite kompajliranje za sve 4 konfiguracije, otvorite direktorijum &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\lib&lt;/span&gt; i preimenujte direktorijum &lt;span style=&quot;font-style: italic&quot;&gt;vc2008&lt;/span&gt; u &lt;span style=&quot;font-style: italic&quot;&gt;vc2010&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_07.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Ostaje nam još da prekopiramo par datoteka. Za &lt;span style=&quot;font-style: italic&quot;&gt;DLL&lt;/span&gt; konfiguracije će nam kasnije trebati &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke koje znaju da učitaju potrebne &lt;span style=&quot;font-style: italic&quot;&gt;dll-ove&lt;/span&gt;. Te &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke se nalaze u direktorijumu &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\Temp\vc2008\sfml-*\Debug DLL&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\Temp\vc2008\sfml-*\Release DLL&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Sve &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke treba preimenovati tako da im se na kraju doda &lt;span style=&quot;font-style: italic&quot;&gt;-d&lt;/span&gt;. Sve te &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke morate kopirati u &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\lib\vc2010&lt;/span&gt; direktorijum. Ako ne znate kako da nađete te datoteke, možete iskoristiti &lt;span style=&quot;font-style: italic&quot;&gt;Windows Serach&lt;/span&gt; tako što ćete otvoriti direktorijum &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\Temp\vc2008&lt;/span&gt;, pritisnuti &lt;span style=&quot;font-style: italic&quot;&gt;F3&lt;/span&gt; i kao ime datoteke upisati &lt;span style=&quot;font-style: italic&quot;&gt;*.lib&lt;/span&gt;. To će vam izlistati sve &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke i moćićete lakše da ih preimenujete i kopirate.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_08.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Konačno imamo biblioteku za &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++ 2010&lt;/span&gt; &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Za slučaj da nekog zanima zašto smo morali da iskompajliramo 4 konfiguracije iste biblioteke, to je zato što nam biblioteka omogućava da je koristimo na različite načine. Konfiguracije koje se završavaju sa &lt;span style=&quot;font-style: italic&quot;&gt;static&lt;/span&gt; nam omogućavaju da celu biblioteku ubacimo u našu igru, koja će zbog toga imati dosta veću datoteku, ali nam ne trebaju dodatne &lt;span style=&quot;font-style: italic&quot;&gt;dll&lt;/span&gt; datoteke. 
&lt;br /&gt;

&lt;br /&gt;
Konfiguracije koje se završavaju sa &lt;span style=&quot;font-style: italic&quot;&gt;DLL&lt;/span&gt; zahtevaju da pored programa imamo i &lt;span style=&quot;font-style: italic&quot;&gt;dll&lt;/span&gt; datoteke, što nam omogućava da recimo pri popravljanju igre, korisniku pošaljemo samo malu datoteku u kojoj se nalazi igra, a &lt;span style=&quot;font-style: italic&quot;&gt;dll&lt;/span&gt; datoteke ostaju iste i nema potrebe da ih ponovo šaljemo. 
&lt;br /&gt;

&lt;br /&gt;
Dalje u tekstu ćemo koristiti &lt;span style=&quot;font-style: italic&quot;&gt;DLL&lt;/span&gt; konfiguraciju. Drugi deo imena konfiguracije je &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; ili &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt;. &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; konfiguracija je dosta veća i, u nekim slučajevima, dosta sporija od &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt; konfiguracije zato što u sebi sadrži dodatan kod, koji nam omogućava da lakše pronalazimo greške u igri ili sami biblioteci. &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++ 2010&lt;/span&gt; će i za našu igru napraviti &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt; konfiguraciju, a mi ćemo ih tako podesiti da koriste odgovarajuće konfiguracije biblioteke.
&lt;br /&gt;

&lt;br /&gt;
Za test ćemo napraviti nov projekat isto kao što smo ga napravili kada smo testirali da li je &lt;span style=&quot;font-style: italic&quot;&gt;Visual C++ 2010&lt;/span&gt; dobro instaliran, s jednom malom izmenom. Umesto da napravimo  &lt;span style=&quot;font-style: italic&quot;&gt;Win32 Console Application&lt;/span&gt; napravićemo &lt;span style=&quot;font-style: italic&quot;&gt;Win32 Project&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_09.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_10.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Na isti način kao i prošli put napravićemo datoteku &lt;span style=&quot;font-style: italic&quot;&gt;main.cpp&lt;/span&gt; i uneti kod za testiranje SFML-a.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_11.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada dolazi deo s kojim većina početnika ima problem. Ako pokušamo da pokrenemo aplikaciju dobićemo greške da kompajler i linker ne mogu da pronađu potrebne datoteke i da ne mogu da nastave dalje. Rešenje je da im kažemo gde se biblioteke koje koristimo (u našem slučaju samo &lt;span style=&quot;font-style: italic&quot;&gt;SFML&lt;/span&gt;) nalaze i koje datoteke treba da koriste. 
&lt;br /&gt;

&lt;br /&gt;
Otvorite podešavanja projekta tako što ćete desnim tasterom miša kliknuti na ime projekta i izabrati &lt;span style=&quot;font-style: italic&quot;&gt;Properties&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_12.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Otvoriće se prozor za konfiguraciju i videćete da je u gornjem levom uglu selektovana konfiguracija &lt;span style=&quot;font-style: italic&quot;&gt;Active (Debug)&lt;/span&gt;. Pošto ćemo prvo postaviti parametre koji će važiti za sve konfiguracije, izaberite &lt;span style=&quot;font-style: italic&quot;&gt;All Configurations&lt;/span&gt; iz padajućeg menija.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_13.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Da bismo rekli kompajleru gde se nalaze sve &lt;span style=&quot;font-style: italic&quot;&gt;header&lt;/span&gt; datoteke koje ćemo koristiti, potrebno je da na levi strani izaberemo &lt;span style=&quot;font-style: italic&quot;&gt;Configuration Properties-&amp;gt;C/C++-&amp;gt;General&lt;/span&gt; i da u polju &lt;span style=&quot;font-style: italic&quot;&gt;Additional Include Directories&lt;/span&gt; dodamo direktorijum &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\include&lt;/span&gt; u kojem se nalaze potrebne datoteke.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_14.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_15.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-style: italic&quot;&gt;SFML&lt;/span&gt; zahteva jednu pretprocesorsku direktivu ako se koriste &lt;span style=&quot;font-style: italic&quot;&gt;DLL&lt;/span&gt; konfiguracije, i zato moramo na levoj strani da izaberemo &lt;span style=&quot;font-style: italic&quot;&gt;Configuration Properties-&amp;gt;C/C++-&amp;gt;Preprocessor&lt;/span&gt; i da u polje &lt;span style=&quot;font-style: italic&quot;&gt;Preprocessor Definitions&lt;/span&gt; dodamo &lt;span style=&quot;font-style: italic&quot;&gt;SFML_DYNAMIC&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_16.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_17.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sledeći korak je podešavaje linkera. Na levoj strani otvorite &lt;span style=&quot;font-style: italic&quot;&gt;Configuration Properties-&amp;gt;Linker-&amp;gt;General&lt;/span&gt; i u polje &lt;span style=&quot;font-style: italic&quot;&gt;Additional Library Directories&lt;/span&gt; dodajte &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\lib\vc2010&lt;/span&gt; (direktorijum u kojem smo pripremili datoteke za Visual C++ 2010).
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_18.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_19.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada dolazi deo u kojem se &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt; konfiguracije razlikuju. Svaka konfiguracija igre se mora povezati na odgovarajuću konfiguraciju biblioteke i zato prvo izaberite konfiguraciju &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; u gornjem levom uglu, zatim na levoj strani izaberite &lt;span style=&quot;font-style: italic&quot;&gt;Configuration Properties-&amp;gt;Linker-&amp;gt;Input&lt;/span&gt; i u polje &lt;span style=&quot;font-style: italic&quot;&gt;Additional Dependencies&lt;/span&gt; dodajte &lt;span style=&quot;font-style: italic&quot;&gt;sfml-main-d.lib&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-system-d.lib&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-window-d.lib&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;sfml-graphics-d.lib&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_20.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_21.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada ti osto ponovite, samo što ćete izabrati konfiguraciju &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt; i dodati  &lt;span style=&quot;font-style: italic&quot;&gt;sfml-main.lib&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-system.lib&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;sfml-window.lib&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;sfml-graphics.lib&lt;/span&gt; datoteke (obratite pažnju da na kraju nemaju &lt;span style=&quot;font-style: italic&quot;&gt;-d&lt;/span&gt;).
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_22.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada konačno možemo da napravimo izvršnu verziju programa, &lt;span style=&quot;font-weight: bold&quot;&gt;ali&lt;/span&gt; postoji još jedna &lt;span style=&quot;font-style: italic&quot;&gt;caka&lt;/span&gt; &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; Pošto koristimo konfiguraciju sa &lt;span style=&quot;font-style: italic&quot;&gt;dll&lt;/span&gt; datotekama, moramo kopirati &lt;span style=&quot;font-style: italic&quot;&gt;Debug dll&lt;/span&gt; datoteke u &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; direktorijum programa, i &lt;span style=&quot;font-style: italic&quot;&gt;Release dll&lt;/span&gt; datoteke u &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt; direktorijum. &lt;span style=&quot;font-style: italic&quot;&gt;DLL&lt;/span&gt; datoteke se nalaze u direktorijumu &lt;span style=&quot;font-style: italic&quot;&gt;C:\SFML-1.6\lib\vc2010&lt;/span&gt; i imaju isto ime kao i &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke koje smo upisali u podešavanjima. Jedini izuzetak je &lt;span style=&quot;font-style: italic&quot;&gt;sfml-main&lt;/span&gt; koji nema nikakav &lt;span style=&quot;font-style: italic&quot;&gt;dll&lt;/span&gt;. &lt;span style=&quot;font-style: italic&quot;&gt;Debug&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;Release&lt;/span&gt; direktorijumi programa se kreiraju u direktorijumu u koji ste snimili projekat kada se program iskompajlira.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_168475277_23.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sve ovo možda izgleda komplikovano, ali u suštini nije. Ceo postupak se svodi na pronalaženje biblioteke, po potrebi kompajliranje iz izvornog koda i podešavanje projekta. U sištini, za skoro svaku biblioteku imate objašnjenje za instalaciju i korišćenje, potrebno je samo polako ispratiti uputstva.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;b) Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Što više programiram za Linux, to mi se više čini da je to operativni sistem za kojeg je najlakše podesiti okruženje za razvoj programa. Većina distribucija ima u svojim repozitorijumima &lt;span style=&quot;font-style: italic&quot;&gt;SFML 1.6&lt;/span&gt; pakete i uglavnom imaju ime &lt;span style=&quot;font-weight: bold&quot;&gt;sfml&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-dev&lt;/span&gt; ili &lt;span style=&quot;font-weight: bold&quot;&gt;libsfml-dev&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Instalacijom tog paketa ste završili veći deo podešavanja. Ako kojim slučajem vaša distribucija nema &lt;span style=&quot;font-style: italic&quot;&gt;SFML&lt;/span&gt; u repozitorijumima ili ima neku drugu verziju, onda morate ručno instalirati biblioteku.
&lt;br /&gt;

&lt;br /&gt;
Trenutno koristim &lt;span style=&quot;font-style: italic&quot;&gt;Arch Linux&lt;/span&gt; i on ima &lt;span style=&quot;font-style: italic&quot;&gt;SFML&lt;/span&gt; paket, ali je u repozitorijumima već verzija &lt;span style=&quot;font-style: italic&quot;&gt;2.0 RC&lt;/span&gt; koja još uvek nije potpuno testirana i zbog toga ću ručno instalirati SFML, verzije 1.6. To možete preuzeti u 32-bitnoj verziji (link) ili u 64-bitnoj verziji (link). Kada preuzmete datoteku, raspakujte je svojim omiljenim programom za raspakivanje i instalirajte ga komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo make install&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Osnovni parametri skripte za instalaciju će instalirati &lt;span style=&quot;font-style: italic&quot;&gt;header&lt;/span&gt; datoteke u &lt;span style=&quot;font-weight: bold&quot;&gt;/usr/local/include&lt;/span&gt;, a &lt;span style=&quot;font-style: italic&quot;&gt;lib&lt;/span&gt; datoteke u &lt;span style=&quot;font-weight: bold&quot;&gt;/usr/local/lib&lt;/span&gt; direktorijum. Ako kojim slučajem linker nije podešen da traži biblioteke u direktorijumu &lt;span style=&quot;font-style: italic&quot;&gt;/usr/local/lib&lt;/span&gt;, napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;/etc/ld.so.conf.d/local.conf&lt;/span&gt; i u nju upišite sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;/usr/local/lib&lt;/code&gt;
&lt;br /&gt;
Nakon toga je potrebno osvežiti keš komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo ldconfig&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pokrili smo oba načina instaliranja (preko instalacije paketa i ručno), sada je vreme da napravimo testnu aplikaciju. Napravite nov projekat isto kao i kada smo testirali da li je Eclipse CDT pravilno instaliran, samo ovog puta dajte projektu ime &lt;span style=&quot;font-style: italic&quot;&gt;sfmltest&lt;/span&gt;. Napravite datoteku &lt;span style=&quot;font-style: italic&quot;&gt;main.cpp&lt;/span&gt; i u nju upišite testni kod.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Podešavanje kompajlera i linkera će biti vrlo jednostavno. U većini slučajeva ćete morati samo da dodate imena biblioteka tako što ćete desnim klikom na ime projekat otvorite meni i kliknuti na &lt;span style=&quot;font-style: italic&quot;&gt;Properties&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Na levoj strani kliknite na &lt;span style=&quot;font-style: italic&quot;&gt;C/C++ Build-&amp;gt;Settings&lt;/span&gt; i u polju &lt;span style=&quot;font-style: italic&quot;&gt;Configuration&lt;/span&gt; izaberite &lt;span style=&quot;font-style: italic&quot;&gt;All configurations&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Na kartici &lt;span style=&quot;font-style: italic&quot;&gt;Tool Settings&lt;/span&gt; izabertie &lt;span style=&quot;font-style: italic&quot;&gt;GCC C++ Linker-&amp;gt;Libraries&lt;/span&gt; i kliknite na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Add&lt;/span&gt; u gornjem delu.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
U prozoru koji se otvori treba upisati ime biblioteke. Imena biblioteka su &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-system&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-window&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-graphics&lt;/span&gt;. Svaku biblioteku morate posebno dodati.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_5.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Program sada možete pokrenuti klikom na &lt;span style=&quot;font-style: italic&quot;&gt;Ctrl+F11&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
U slučaju da kompajler i linker ne mogu da nađu datoteke, morate podesiti još dve opcije. Prvo ponovo otvorite podešavanja projekta. Putanju do &lt;span style=&quot;font-style: italic&quot;&gt;header&lt;/span&gt; datoteka postavljamo tako što na kartici &lt;span style=&quot;font-style: italic&quot;&gt;Tool Settings&lt;/span&gt; izaberemo &lt;span style=&quot;font-style: italic&quot;&gt;GCC C++ Compiler-&amp;gt;Includes&lt;/span&gt; i na desnoj strani kliknemo dugme &lt;span style=&quot;font-style: italic&quot;&gt;Add&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_6.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
To će otvoriti prozor gde možete upisati putanju u kojoj se nalaze &lt;span style=&quot;font-style: italic&quot;&gt;header&lt;/span&gt; datoteke, recimo &lt;span style=&quot;font-style: italic&quot;&gt;/usr/local/include&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_7.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Putanju do biblioteka postavljamo tako što izaberemo &lt;span style=&quot;font-style: italic&quot;&gt;GCC C++ Linker-&amp;gt;Libraries&lt;/span&gt; i na donjem delu kliknemo dugme &lt;span style=&quot;font-style: italic&quot;&gt;Add&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_8.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
To će otvoriti prozor gde možete upisati putanju u kojoj se nalaze biblioteke, recimo &lt;span style=&quot;font-style: italic&quot;&gt;/usr/local/lib&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49919085_9.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;c) Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Mac OS X je najjednostavniji operativni sistem za instalaciju i podešavanje SFML-a. Potrebno je da preuzmete odgovarajuću verziju SFML-a, 32-bitnu verziju (link) ili 64-bitnu verziju (link) u zavisnosti od vašeg operativnog sistema. Kada raspakujete datoteku, morate kopirati sve &lt;span style=&quot;font-weight: bold&quot;&gt;*.framework&lt;/span&gt; direktorijume iz direktorijuma &lt;span style=&quot;font-weight: bold&quot;&gt;lib(64)&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;extlibs/bin&lt;/span&gt; u &lt;span style=&quot;font-weight: bold&quot;&gt;/Library/Frameworks&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Instalacija je time završena. Ostaje još samo testiranje... Napravite projekat isto kao i kad smo testirali Xcode, samo ovog puta dajte ime projektu &lt;span style=&quot;font-style: italic&quot;&gt;sfmltest&lt;/span&gt;. U &lt;span style=&quot;font-style: italic&quot;&gt;main.cpp&lt;/span&gt; datoteku prekopirajte kod za testnu aplikaciju i to je skoro to.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_58605099_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Potrebno je još samo uz pomoć &lt;span style=&quot;font-style: italic&quot;&gt;Finder-a&lt;/span&gt; prevući &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-system.framework&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-window.framework&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;sfml-graphics.framework&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;SFML.framework&lt;/span&gt; u aplikaciju.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_58605099_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Otvoriće se prozor u kojem samo treba da pritisnete &lt;span style=&quot;font-style: italic&quot;&gt;Finish&lt;/span&gt; i sva podešavanja su gotova. 
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_58605099_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_58605099_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Možete pokrenuti program pritiskom na &lt;span style=&quot;font-style: italic&quot;&gt;Command+R&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[5] Planiranje&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pre nego što počnemo s programiranjem, dobra ideja je da unapred isplaniramo kako ćemo organizovati igru. Za male i jednostavne igre kao što je ova, planiranje nije obavezno ako možete sve da držite u glavi, ali mi ćemo ipak da odradimo i taj korak.
&lt;br /&gt;

&lt;br /&gt;
Ugrubo, igra će izgledati ovako: posle pokretanja će se pojaviti glavni meni u kojem će igrač moći da započne novu igru ili da izađe iz igre. 
&lt;br /&gt;
- Ako izabere da hoće da izađe iz igre, program se zatvara i to je kraj. 
&lt;br /&gt;
- Ako izabere da želi novu igru, učitavamo prvi nivo i pokrećemo glavni deo. 
&lt;br /&gt;

&lt;br /&gt;
Iz glavnog dela igre imamo 3 moguća izlaza: 
&lt;br /&gt;
- Jedan je da igrač pređe nivo, što će izazvati učitavanje sledećeg i ponovni ulazak u glavni deo. 
&lt;br /&gt;
- Drugi je reset nivoa što će izazvazi ponovno učitavanje istog nivoa i ulazak u glavni deo. 
&lt;br /&gt;
- Treći je povratak u glavni meni.
&lt;br /&gt;

&lt;br /&gt;
Ako detaljnije proučimo glavni meni, videćemo da mora da se sastoji iz sledećih delova: čitanje poruka, gašenje aplikacije ako je pritisnuto dugme za gašenje u prozoru, promena selekcije ako je pritisnuto gore ili dole, aktiviranje izabrane komande ako je pritisnut &lt;span style=&quot;font-style: italic&quot;&gt;Enter&lt;/span&gt;, crtanje sadržaja, i opet sve to iz početka. 
&lt;br /&gt;

&lt;br /&gt;
Komande koje će korisnik moći da izabere su &lt;span style=&quot;font-style: italic&quot;&gt;Izlaz&lt;/span&gt; za gašenje programa i &lt;span style=&quot;font-style: italic&quot;&gt;Nova igra&lt;/span&gt; koja će postaviti trenutni nivo na &lt;span style=&quot;font-weight: bold&quot;&gt;1&lt;/span&gt; i započeti učitavanje.
&lt;br /&gt;
Učitavanje nivoa će resetovati sve interne promenljive vezane za nivo, učitati trenutno aktivni i započeti glavni deo. Ovaj deo igre neće čitati nikakve poruke i neće ništa crtati jer će učitavanje trajati vrlo, vrlo kratko. 
&lt;br /&gt;

&lt;br /&gt;
U slučaju da ne postoji izabrani nivo (recimo da smo prešli zadnji nivo i glavni deo zahteva sledeći) zatvorićemo igru.
&lt;br /&gt;

&lt;br /&gt;
Glavni deo će dosta ličiti na glavni meni, verovali ili ne. U glavnom delu ćemo takođe imati čitanje poruka i gašenje aplikacije ako igrač pritisne dugme za zatvaranje prozora. Zatim sledi proveravanje tastature i povratak u glavni meni ako je pritisnut taster &lt;span style=&quot;font-style: italic&quot;&gt;Escape&lt;/span&gt;, povratak na učitavanje istog nivoa ako je pritisnut taster &lt;span style=&quot;font-style: italic&quot;&gt;R&lt;/span&gt; ili pozivanje logike za pomeranje igrača ako je pritisnuta neka od strelica. 
&lt;br /&gt;

&lt;br /&gt;
Nakon toga ćemo osvežiti ekran i ponovo se vratiti na početak ove petlje. Logika za pomeranje će proveriti da li igrač može da se pomeri u izabranu stranu. Ako može, popraviće koordinate igrača i kocke ako se kocka nalazi ispred njega. U slučaju da je i kocka bila pomerena, proveriće da li su sve kocke na mestu. U slučaju da jesu, promenljiva koja čuva trenutno aktivni nivo će se povećati za jedan i ponovo će se pozvati korak za učitavanje nivoa.
&lt;br /&gt;

&lt;br /&gt;
To je grub plan koji ćemo pratiti u toku pravljenja igre. Biće tu još dodatnih stvari kao što su učitavanje slika, malo animacije da kretanje izgleda lepše, učitavanje fontova, i slično, ali ćemo se truditi da ne odstupamo od zacrtanih ciljeva jer čim počnete da dodajete nešto što niste planirali (recimo zvuk), poželećete da dodate još nešto (recimo podršku za džojstik), pa još nešto (animiranu pozadinu), pa još nešto (kameru koja se kreće oko polja za igru), pa još nešto (različite slike za igrača i kockice za svaki nivo), pa još nešto (merenje vremena i broja koraka), pa još nešto (mogućnost izbora nivoa), i na kraju nikad nećete završiti igru jer ćete uvek hteti da dodate još nešto. Kad budemo završili ono što smo sami sebi na početku postavili, tada možete polako da dodajete deliće koje će poboljšati igru.</description>
	<pubDate>Sat, 22 Sep 2012 13:51:04 +0100</pubDate>
</item>
<item>
	<title>Cirilica u konzoli</title>
	<link>https://www.mycity.rs/C/Cirilica-u-konzoli.html</link>
	<guid>https://www.mycity.rs/?p=1361530</guid>
	<author>nobody@mycity.rs (Aleksandr1996)</author>
	<description>Da li mogu da stampam cirilicu u konzoli npr &lt;span style=&quot;font-weight: bold&quot;&gt;printf(&amp;quot;&amp;#1047;&amp;#1076;&amp;#1088;&amp;#1072;&amp;#1074;&amp;#1086; &amp;#1089;&amp;#1074;&amp;#1077;&amp;#1090;&amp;#1077;!&amp;quot;);&lt;/span&gt;. Da li se to moze izvesti u code blocks ili Visual Studio 2010 Ultimate i kako?</description>
	<pubDate>Wed, 27 Jun 2012 23:43:11 +0100</pubDate>
</item>
<item>
	<title>[3] Sta posle skole - QT</title>
	<link>https://www.mycity.rs/C/3-Sta-posle-skole-QT.html</link>
	<guid>https://www.mycity.rs/?p=1358480</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-style: italic&quot;&gt;Uvod
&lt;br /&gt;
Qt
&lt;br /&gt;
Grafički interfejs
&lt;br /&gt;
Opcije i grananje u CMake
&lt;br /&gt;
Zaključak&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
U C++ ne postoji neka standardna biblioteka za rad sa prozorima. Svaka platforma ima nešto svoje, većina okruženja za razvoj podržavaju to što se razvojnom timu svidelo i slično. Naravno, ne postoji ni najbolja biblioteka za rad sa prozorima... svaka ima svoje dobre i loše strane. Ako razvijate samo za jedan operativni sistem i u jednom okruženju za razvoj, tada uglavnom nema nekih velikih problema oko izbora biblioteke. Jednostavno koristite to što vam je već ponuđeno. Mi u ovom projektu imamo problem jer želimo da svako može da iskompajlira aplikaciju, želimo da podržimo što više operativnih sistema i što više alata za razvoj. Da bi rešili taj problem, moramo koristiti bbiblioteku koja podržava sve to. Jedna od biblioteka koja će nam odgovarati je Qt.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Qt&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Qt nije samo biblioteka za rad sa prozorima. Qt nam omogućava i da svuda na isti način dostupamo do datoteka, da koristimo internet, da puštamo zvuk i video, da čitamo i pišemo podatke u bazu, i još dosta drugih stvari. Qt smo izabrali jer je dovoljno da samo jednom napišemo kod i taj kod će se bez ikakvih promena lepo kompajlirati i na svim popularnim desktop operativnim sistemima. U poslednje vreme, Qt polako prelazi i na mobilne uređaje što znači da ćemo uskoro moći da imamo jedan kod koji radi i na računarima i na mobilnim telefonima, tabletima i sličnim mobilnim uređajima.
&lt;br /&gt;

&lt;br /&gt;
Da bismo mogli da razvijamo aplikacije u Qt, moramo instalirati Qt SDK koji možete preuzeti besplatno: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Korisnici 32bitnog Mac OS X će morati sami da iskompajliraju ceo Qt. Kod možete preuzeti ovde: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Korisnici Linux operativnih sistema mogu instalirati Qt preko svog package management sistema. U većini distribucija je dovoljno da instalirate &lt;span style=&quot;font-style: italic&quot;&gt;qt&lt;/span&gt; paket (qt je već instaliran ako imate KDE okruženje).
&lt;br /&gt;

&lt;br /&gt;
Ako ste Qt instalirali preko Qt SDK installera, onda ste završili, a ako ste ga ručno iskompajlirali ili instalirali preko package management sistema onda je potrebno instalirati i program za uređivanje Qt koda i izgleda prozora. Taj program se zove QtCreator i možete ga preuzeti sa iste lokacije kao i SDK: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Linux korisnici mogu da instaliraju paket &lt;span style=&quot;font-style: italic&quot;&gt;qtcreator&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Napomena za Linux korisnike koji imaju instaliran neko od GTK desktop okruženja (Gnome, Xfce, LXDE,...): Qt na vašem sistemu neće instalirati još gomilu KDE biblioteka. Kada instalirate Qt, dobijete samo Qt. Izgled Qt aplikacija se praktično neće razlikovati od GTK aplikacija jer Qt zna da koristi GTK za crtanje kada se nalazi u GTK okruženju (aplikacija će imati skin koji ste izabrali, koristiće izabrane ikonice, font će biti dobar, itd...)
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Grafički interfejs&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Prvo što ćemo napraviti za našu aplikaciju je izgled prozora. Izgled se snima u datoteke s ektenzijom &lt;span style=&quot;font-style: italic&quot;&gt;ui&lt;/span&gt;, i možemo ga napraviti iz QtCreatora. Potrebno je iz menija &lt;span style=&quot;font-style: italic&quot;&gt;File&lt;/span&gt; izabrati opciju &lt;span style=&quot;font-style: italic&quot;&gt;New File or Project...&lt;/span&gt;. U sledećem prozoru na levoj strani treba izabrati &lt;span style=&quot;font-style: italic&quot;&gt;Qt&lt;/span&gt;, a na desnoj &lt;span style=&quot;font-style: italic&quot;&gt;Qt Designer Form&lt;/span&gt;. U sledećih par koraka se izabere šta želimo da napravimo (Main Window) i gde će datoteka biti snimljena. Na kraju ćemo dobiti nešto što izgleda ovako:
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_95747445_1.png.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Samo uređivanje prozora se vrši sistemom drag&amp;amp;drop. Dodatne osobine svakog elementa je moguće postavljati u editoru koji se nalazi u donjem desnom delu ekrana. Ovog puta ćemo samo na brzinu proleteti kroz kreiranje prozora, a u nekim od narednih tekstova ćemo se detaljno pozabaviti tom temom.
&lt;br /&gt;

&lt;br /&gt;
Prvo što ćemo uraditi je brisanje menija i status bara tako što ćemo ih naći u listi u gornjem desnom uglu, kliknuti desnim klikom, i izabrati &lt;span style=&quot;font-style: italic&quot;&gt;Remove&lt;/span&gt;. Sada imamo prazan prozor i treba nam nešto u šta će korisnik moći da upiše formulu. Za unos teksta imamo više kontrola, a nama odgovara &lt;span style=&quot;font-style: italic&quot;&gt;Plain Text Edit&lt;/span&gt; jer omogućava unos teksta u više redova i ne nudi ništa specijalno osim toga. U listi kontrola nađemo &lt;span style=&quot;font-style: italic&quot;&gt;Plain Text Edit&lt;/span&gt; i prevučemo je negde na gornju polovini prozora (nemojte brinuti ako kontrola izgleda premalo, to ćemo srediti kasnije). Treba nam i jedno dugme da korisnik može da zahteva izračunavanje upisanog izraza. Dugmići se po pravilu postavljaju u donji desni ugao prozora i stalo su tamo. Da bi postigli takav efekat, moraćemo da dodamo još 2 dodatne kontrole osim dugmeta. Prvo ćemo u donju polovinu prozora postaviti kontrolu &lt;span style=&quot;font-style: italic&quot;&gt;Horizontal Layout&lt;/span&gt;. Ta kontrola se neće videti kada budemo pokrenuli aplikaciju, i služi samo da organizuje položaje kontrola koje se nalaze u njoj. Na osnovu imena zaključujemo da će sve kontrole koje stavimo u nju biti poređane horizontalno jedna pored druge. Zatim prenesemo kontrolu &lt;span style=&quot;font-style: italic&quot;&gt;Push Button&lt;/span&gt; u kontrolu koju smo malopre kreirali. Videćete da je dugme dobilo širinu kontrole u kojoj se nalazi i da ne izgleda baš prirodno. Da bi rešili taj problem, prevući ćemo kontrolu &lt;span style=&quot;font-style: italic&quot;&gt;Horizontal Spacer&lt;/span&gt; baš ispred dugmeta. Ta kontrola popunjava prazan prostor, a ostale kontrole uzimaju onoliko prostora koliko im zaista treba. Ostala nam je još samo jedna stvar da bi završili pravljenje izgleda, a to je da za ceo prozor kažemo da se organizuje vertikalno. To ćemo uraditi tako što ćemo selektovati prozor i u toolbaru kliknuti na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Lay Out Vertically&lt;/span&gt;. Ako ste sve odradili kako treba, videćete nešto ovako:
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_95747445_2.png.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Pre nego što krenemo dalje, ostalo nam je još da podesimo imena kontrola i tekstova koje će prikazivati. Davanje imena kontrola nije obavezno jer Qt Creator pri kreiranju svake kontrole već postavi neko standardno ime, ali je vrlo dobra praksa da sami postavite ime jer ćete kasnije u kodu lakše naći komponentu koja vam treba po imenu. Da krenemo od početka. Kod glavnog prozora ćemo samo postaviti tekst koji se nalazi u polju &lt;span style=&quot;font-style: italic&quot;&gt;windowTitle&lt;/span&gt; na &lt;span style=&quot;font-style: italic&quot;&gt;Digitron&lt;/span&gt;. To je tekst koji će se pokazati na prozoru. Sledeća kontrola je polje za upis izraza. Njoj ćemo samo postaviti &lt;span style=&quot;font-style: italic&quot;&gt;objectName&lt;/span&gt; na &lt;span style=&quot;font-style: italic&quot;&gt;txtFunc&lt;/span&gt;. Na kraju, dugmetu ćemo promeniti &lt;span style=&quot;font-style: italic&quot;&gt;objectName&lt;/span&gt; na &lt;span style=&quot;font-style: italic&quot;&gt;btnCalc&lt;/span&gt;, a &lt;span style=&quot;font-style: italic&quot;&gt;text&lt;/span&gt; na &lt;span style=&quot;font-style: italic&quot;&gt;Izračunaj&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Ostalo nam je još samo da podesimo šta će se desiti kada korisnik klikne na dugme. Qt koristi sistem signala i slotova. Svaka akcija aktivira određeni signal u komponenti... primera radi, kada kliknemo na dugme aktivira se signal clicked(). Slotovi su funkcije koje se mogu pozvati u slučaju da se određeni signal desi. Možda je takav koncept na početku komplikovan (posebno ako ste do sada pravili samo konzolne aplikacije), ali će vam posle par projekata sve biti kristalno jasno. Naš trenutni cilj je da napravimo da se klikom na dugme &lt;span style=&quot;font-style: italic&quot;&gt;btnCalc&lt;/span&gt; pokrene funkcija &lt;span style=&quot;font-style: italic&quot;&gt;calculate()&lt;/span&gt; koju ćemo kasnije napisati u kodu za glavni prozor. Da bi smo dobili mogućnost uređivanja signala i slotova, moramo kliknuti na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Edit Signals/Slots&lt;/span&gt; u toolbaru. U ovom modu, kontrole promene boju kada pređemo mišem preko njih da bi znali čiji signal ćemo obraditi. Postavimo miša preko dugmeta, pritisnemo dugme na mišu kao da želimo da pomerimo kontrolu i pomerimo pokazivač na prazan deo prozora tako da dobijemo liniju na čijem kraju je znak za masu tj.uzemljenje. Na taj način smo otvorili editor koji nam omogućava da izaberemo za koji signal kontrole &lt;span style=&quot;font-style: italic&quot;&gt;btnCalc&lt;/span&gt; želimo da pokrenemo koji slot glavnog prozora. Pošto editor ne zna za slotove koje ćemo kasnije dodati u kodu, moramo da mu pomognemo. Klikom na dugme &lt;span style=&quot;font-style: italic&quot;&gt;Edit...&lt;/span&gt; na strani glavnog prozora dobijamo listu njegovih slotova i signala samogućnošću uređivanja. U delu za slotove dodamo &lt;span style=&quot;font-style: italic&quot;&gt;calculate()&lt;/span&gt;. Po zatvaranju tog prozora se vraćamo nazad na prozor u kojem na levoj strani treba da izaberemo signal &lt;span style=&quot;font-style: italic&quot;&gt;clicked()&lt;/span&gt;, a na desnoj slot &lt;span style=&quot;font-style: italic&quot;&gt;calculate()&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Time smo završili uređivanje izgleda prozora, ali priča se još uvek ne završava jer sada moramo napisati i kod koji će znati da pročita tu datoteku koju smo napravili i da od nje napravi prozor. Qt ima jednostavan sistem za automatizaciju celog procesa, i sve što moramo da odradimo je da napišemo klasu za glavni prozor, a ona će se pobrinuti za učitavanje ostalih kontrola:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;class MainWindow &amp;#58; public QMainWindow
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Q_OBJECT
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; explicit MainWindow&amp;#40;QWidget *parent = 0&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ~MainWindow&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
private slots&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; void calculate&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
private&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Ui&amp;#58;&amp;#58;MainWindow *ui;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; calculator calc;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
MainWindow&amp;#58;&amp;#58;MainWindow&amp;#40;QWidget *parent&amp;#41; &amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; QMainWindow&amp;#40;parent&amp;#41;,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ui&amp;#40;new Ui&amp;#58;&amp;#58;MainWindow&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ui-&amp;gt;setupUi&amp;#40;this&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
MainWindow&amp;#58;&amp;#58;~MainWindow&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; delete ui;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void MainWindow&amp;#58;&amp;#58;calculate&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; QMessageBox msgBox;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; calc.calculate&amp;#40;ui-&amp;gt;txtFunc-&amp;gt;toPlainText&amp;#40;&amp;#41;.toStdString&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if &amp;#40;!calc.getError&amp;#40;&amp;#41;.empty&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; msgBox.warning&amp;#40;this, this-&amp;gt;windowTitle&amp;#40;&amp;#41;, QString&amp;#58;&amp;#58;fromStdString&amp;#40;calc.getError&amp;#40;&amp;#41;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; msgBox.warning&amp;#40;this, this-&amp;gt;windowTitle&amp;#40;&amp;#41;, ui-&amp;gt;txtFunc-&amp;gt;toPlainText&amp;#40;&amp;#41; + &amp;quot;=&amp;quot; + QString&amp;#58;&amp;#58;number&amp;#40;calc.getResult&amp;#40;&amp;#41;&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Cela &amp;quot;magija&amp;quot; za učitavanje se nalazi u toj jednoj liniji u konstruktoru. Ta linija će učitati ostale komponente i omogućiti nam dostup do njih preko promenljive &lt;span style=&quot;font-style: italic&quot;&gt;ui&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
U kodu smo definisali i slot &lt;span style=&quot;font-style: italic&quot;&gt;calculate()&lt;/span&gt; koji će se pozvati na klik dugmeta. U toj funkciji vidite kako se dostupa do kontrola koje smo pre definisali (koristimo &lt;span style=&quot;font-style: italic&quot;&gt;txtFunc&lt;/span&gt; da iz nje dobijemo tekst koji je korisnik upisao).
&lt;br /&gt;

&lt;br /&gt;
Ostaje nam još samo da napišemo &lt;span style=&quot;font-style: italic&quot;&gt;app&lt;/span&gt; klasu koja će našem projektu omogućiti da otvori digitron u grafičnom okruženju:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;class app
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int run&amp;#40;int argc, char *argv&amp;#91;&amp;#93;&amp;#41;;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
int app&amp;#58;&amp;#58;run&amp;#40;int argc, char *argv&amp;#91;&amp;#93;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; QApplication a&amp;#40;argc, argv&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; MainWindow w;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; w.show&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return a.exec&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Verovatno ste primetili da smo u &lt;span style=&quot;font-style: italic&quot;&gt;run&lt;/span&gt; metodi dodali i parametre koje ćemo proslediti iz glavnog programa. To je zato što Qt ume da na osnovu parametara promeni neke svoje unutrašnje promenljive i da radi malo drugačije, ali to za sada nije bitno. Kod je prilično jednostavan... kreira se objekat za aplikaciju, a zatim i naš glavni prozor, i zatim puštamo aplikaciju da radi sve dok je korisnik ne zatvori.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Qt, opcije i grananja u CMake&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
CMake ima prilično dobru podršku za Qt. Zna da koristi Qt datoteke, da kreira dodatne datoteke koje su potrebne da bi Qt aplikacija mogla da se kompajlira, zna sam da pronađe direktorijum u kojem je Qt instaliran (pod uslovom da je instaliran na standardnim lokacijama), itd.
&lt;br /&gt;
U prethodnom tekstu smo već napravili jednu implementaciju digitrona koja je interfejs prikazivala u konzoli. Sada smo dodali još i grafički prikaz i bilo bi dobro da prilikom pripremanja projekat možemo da izaberemo koji mod želimo. CMake nam omogućava da dodamo promenljive koje se mogu menjati pre nego što se projekat napravi i mogućnost da u zavisnosti od tih opcija uključi različite datoteke u projekat.
&lt;br /&gt;
Sledi &lt;span style=&quot;font-style: italic&quot;&gt;CMakeLists.txt&lt;/span&gt; datoteka koja će omogućiti izbor između konzolnog ili grafičkog prikaza, i, uslučaju da je izabran grafički prikaz, postaviti sve što treba da Qt aplikacija može da se iskompajlira:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake_minimum_required &amp;#40;VERSION 2.6&amp;#41;
&lt;br /&gt;
project &amp;#40;calc&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
option&amp;#40;calc_GUI &amp;quot;Napravi GUI aplikaciju&amp;quot; FALSE&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
set&amp;#40;calc_SRCS calc.cpp calculator.cpp&amp;#41;
&lt;br /&gt;
if&amp;#40;calc_GUI&amp;#41;
&lt;br /&gt;
&amp;nbsp; find_package&amp;#40;Qt4 REQUIRED&amp;#41;
&lt;br /&gt;
&amp;nbsp; set&amp;#40;QT_USE_QTMAIN TRUE&amp;#41;
&lt;br /&gt;
&amp;nbsp; include&amp;#40;$&amp;#123;QT_USE_FILE&amp;#125;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; set&amp;#40;calc_SRCS $&amp;#123;calc_SRCS&amp;#125; app_gui.cpp mainwindow.cpp&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; set&amp;#40;calc_UISRCS mainwindow.ui&amp;#41;
&lt;br /&gt;
&amp;nbsp; qt4_wrap_ui&amp;#40;calc_UIHDRS $&amp;#123;calc_UISRCS&amp;#125;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; set&amp;#40;calc_MOCHDRS mainwindow.h&amp;#41;
&lt;br /&gt;
&amp;nbsp; qt4_wrap_cpp&amp;#40;calc_MOCSRCS $&amp;#123;calc_MOCHDRS&amp;#125;&amp;#41;
&lt;br /&gt;
else&amp;#40;calc_GUI&amp;#41;
&lt;br /&gt;
&amp;nbsp; set&amp;#40;calc_SRCS $&amp;#123;calc_SRCS&amp;#125; app_console.cpp&amp;#41;
&lt;br /&gt;
endif&amp;#40;calc_GUI&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
if&amp;#40;calc_GUI AND WIN32&amp;#41;
&lt;br /&gt;
&amp;nbsp; set&amp;#40;calc_APP WIN32&amp;#41;
&lt;br /&gt;
endif&amp;#40;calc_GUI AND WIN32&amp;#41;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
add_executable&amp;#40;calc $&amp;#123;calc_APP&amp;#125; $&amp;#123;calc_SRCS&amp;#125; $&amp;#123;calc_MOCSRCS&amp;#125; $&amp;#123;calc_UIHDRS&amp;#125;&amp;#41;
&lt;br /&gt;
if&amp;#40;calc_GUI&amp;#41;
&lt;br /&gt;
&amp;nbsp; target_link_libraries&amp;#40;calc $&amp;#123;QT_LIBRARIES&amp;#125;&amp;#41;
&lt;br /&gt;
endif&amp;#40;calc_GUI&amp;#41;&lt;/code&gt;
&lt;br /&gt;
Komanda &lt;span style=&quot;font-style: italic&quot;&gt;option&lt;/span&gt; nam omogućava da dodamo promenljivu čiju vrednost možemo kasnije menjati. Dodali smo promenljivu &lt;span style=&quot;font-style: italic&quot;&gt;calc_GUI&lt;/span&gt; koja će kontrolisati da li želimo GUI aplikcaiju i njena osnovna vrednost je &lt;span style=&quot;font-style: italic&quot;&gt;FALSE&lt;/span&gt; što znači da nećemo.
&lt;br /&gt;
Sledeća novost je komanda &lt;span style=&quot;font-style: italic&quot;&gt;set&lt;/span&gt;. Ona služi za postavljanje promenljivih koje ne možemo menjati. CMake dolazi sa dosta predefinisanih promenljivih o kojima ćemo govoriti kad na njih naiđemo. U našem slučaju, u promenljivu &lt;span style=&quot;font-style: italic&quot;&gt;calc_SRCS&lt;/span&gt; dodajemo datoteke potrebne za kompajliranje projekat. Za početak smo dodali samo osnovne datoteke, a kasnije ćemo dodati i datoteke za prikaz podataka... koje datoteke će biti dodane, zavisi od vrednosti promenljive &lt;span style=&quot;font-style: italic&quot;&gt;calc_SRCS&lt;/span&gt;.
&lt;br /&gt;
Komande &lt;span style=&quot;font-style: italic&quot;&gt;if&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;else&lt;/span&gt;, &lt;span style=&quot;font-style: italic&quot;&gt;elseif&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;endif&lt;/span&gt; se koriste za grananje. Uslov koji se postavi na početku komandom &lt;span style=&quot;font-style: italic&quot;&gt;if&lt;/span&gt; se mora koristiti kod svih ostalih komandi za grananje u tom bloku da bi CMake znao kom bloku pripadaju.
&lt;br /&gt;
Pogledajmo sada granu koja obrađuje slučaj kada ne želimo GUI aplikaciju. U promenljivu &lt;span style=&quot;font-style: italic&quot;&gt;calc_SRCS&lt;/span&gt; dodajemo još i datoteku za konzolnu aplikaciju i zovemo funkciju &lt;span style=&quot;font-style: italic&quot;&gt;add_executable&lt;/span&gt; kao što smo radili i u prošlom primeru. Sve ostale promenljive koje se koriste prilikom poziva te funkcije nemaju nikakvu vrednost i ne utiču na nju.
&lt;br /&gt;
U slučaju da želimo GUI aplikaciju, poziva se komanda &lt;span style=&quot;font-style: italic&quot;&gt;find_package&lt;/span&gt; kojoj kažemo da želimo da koristimo Qt4 i da bez njega ne možemo dalje. U slučaju da komanda ne može da nađe Qt, kreiranje paketa će se zaustaviti i moći ćete sami da upišete gde se kod vas na računaru nalazi Qt. Kada je Qt uspešno pronađen, postavljemo promenljivu &lt;span style=&quot;font-style: italic&quot;&gt;QT_USE_QTMAIN&lt;/span&gt; na &lt;span style=&quot;font-style: italic&quot;&gt;TRUE&lt;/span&gt; što znači da hoćemo da se u naš program ukompajlira podrška za pokretanje programa preko &lt;span style=&quot;font-style: italic&quot;&gt;main&lt;/span&gt; funkcije na svim sistemima (Windows, recimo zahteva da se za GUI aplikacije glavna funkcija zove &lt;span style=&quot;font-style: italic&quot;&gt;WinMain&lt;/span&gt;). Zatim kažemo CMakeu da učita sve potrebne module za pripremu Qt paketa. U promenljivu &lt;span style=&quot;font-style: italic&quot;&gt;calc_SRCS&lt;/span&gt; dodajemo datoteke za prikaz digitrona u grafičnom modu i onda zahtevamo od CMake da kreira sve dodatne datoteke koje su potrebne za Qt. CMake će od &lt;span style=&quot;font-style: italic&quot;&gt;ui&lt;/span&gt; datoteke koja sadrži izgled prozora napraviti datoteku s kodom, a od koda koji sadrži signale i slotove pravi dodatne datoteke da bi C++ znao da ih iskompajlira. Pošto je za Windows potrebno na poseban način iskompajlirati program ako ne želimo da se automatski otvori konzolni prozor, postavljamo promenljivu &lt;span style=&quot;font-style: italic&quot;&gt;calc_APP&lt;/span&gt; na &lt;span style=&quot;font-style: italic&quot;&gt;WIN32&lt;/span&gt; što funkciji &lt;span style=&quot;font-style: italic&quot;&gt;add_executable&lt;/span&gt; kaže da u slučaju GUI aplikacije za WIN32 koristi taj poseban način.
&lt;br /&gt;
Za sam kraj, pošto koristimo Qt biblioteku, moramo pozvati komandu &lt;span style=&quot;font-style: italic&quot;&gt;target_link_libraries&lt;/span&gt; koja će povezati našu aplikaciju s Qt bibliotekom.
&lt;br /&gt;

&lt;br /&gt;
Da napravimo projekat na iz ove &lt;span style=&quot;font-style: italic&quot;&gt;CmakeLists.txt&lt;/span&gt; datoteke, pozivamo sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake -i -G &amp;quot;Ime vašeg kompajlera&amp;quot;&lt;/code&gt;
&lt;br /&gt;
Ne zaboravite da možete da promenite vrednost promenljive &lt;span style=&quot;font-style: italic&quot;&gt;calc_GUI&lt;/span&gt;... ovo je rezultat koji dobijem prilikom pripremanja paketa na Windowsu:
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_95747445_3.png.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Sve potrebne datoteke oza ovaj projekat možete skinuti ovde: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Zaključak&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Evo... krenuli smo od obične konzolne aplikacije koja je znala da sabira i oduzima 2 broja, i stigli smo do aplikacije koja zna da napravi svoj prozor, da obradi upisan izraz, izračuna njegovu vrednost i prikaže je korisniku u dialogu. Uz to smo sve tako napisali da program može da se iskompajlira na svim popularnim operativnim sistemima bez ikakve promene koda. Ako bismo razvijali ovaj projekat još dalje, mogli bismo da napravimo da se kodovi za prikaz i računanje ne kompajliraju direktno u program, nego da se koriste kao plugini, ali ćemo se ipak zaustaviti ovde &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;
To je za sada kraj, ali ako ima zainteresovanih, možemo uzeti još jedan školski projekat i pokušati da od njega napravimo nešto više. Recimo, u školi se često prave programi za pisanje i čitanje podataka iz niza. Jedan ili više dobrovoljaca bi mogli da napišu program za unos kontakata na način na koji su ih učili u školi. Program bi trebalo da omogući unos recimo imena osobe, adrese, broja telefona i e-mail adrese, trebalo bi da omogući ispis svih unetih osoba, brisanje unetih osoba. Kao bonus bi bilo fino i traženje osoba po unetim informacijama i snimanje/učitavanje podataka. Eto, kad se bude pojavio odgovor u kojem će biti kod za ovaj program, možemo da nastavimo &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Sat, 23 Jun 2012 17:07:51 +0100</pubDate>
</item>
<item>
	<title>[2] Sta posle skole - standard library</title>
	<link>https://www.mycity.rs/C/2-Sta-posle-skole-standard-library.html</link>
	<guid>https://www.mycity.rs/?p=1357476</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
Uvod
&lt;br /&gt;
Standrad C++ Library
&lt;br /&gt;
Usavršavanje digitrona
&lt;br /&gt;
Odvajanje računanja u posebnu klasu
&lt;br /&gt;
Odvajanje prikaza u posebnu klasu
&lt;br /&gt;
CMake i kod u više datoteka
&lt;br /&gt;
Zaključak
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Za razliku od C jezika, C++ pored proceduralnog programiranja možemo koristiti i objektno orientisano programiranje (OOP). Koristeći OOP imamo mogućnost da grupišemo kod sa pripadajućim promenljivama i time program razdelimo na manje, relativno samostojne delove tj. klase.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Standrad C++ Library&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Standardna C++ biblioteka donosi brdo klasa koje nam omogućavaju brže i lakše pisanje koda. Određene stvari rade malo sporije u odnosu na korišćenje standardnog C koda (recimo ispis na ekran), ali je razlika u brzini relativno mala, a lakoća pisanja koda mnogo veća tako da se isplati koristiti C++ klase.
&lt;br /&gt;
U prošlom projektu smo koristili &lt;span style=&quot;font-style: italic&quot;&gt;scanf&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;printf&lt;/span&gt; funkcije za čitanje i pisanje podataka i te funkcije su zahtevale da u formatu upišemo tip podatka s kojim ćemo raditi što može dovesti do problema ako slučajno upišemo pogrešan tip. Kompajler i linker će bez problema kod prevesti u izvršnu datoteku, i grešku ćemo uočiti tek kada programpokrenemo i on se sruši prilikom izvršavanja sporne komande.
&lt;br /&gt;
Korišćenjem C++ klasa možemo izbeći konkretno taj problem. Koristićemo &lt;span style=&quot;font-style: italic&quot;&gt;cin&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;cout&lt;/span&gt; promenljive koje predstavljaju interfejs za čitanje i pisanje na ekran. One su zasnovane tako da podatke jednostavno šaljemo/čitamo iz njih, a one se brinu o tipovima. Primera radi, ako bi promenljiva &lt;span style=&quot;font-style: italic&quot;&gt;t&lt;/span&gt; predstavljala neki tekst, a promenljiva &lt;span style=&quot;font-style: italic&quot;&gt;b&lt;/span&gt; neki broj, ispis na starom načinu bi izgledao ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;printf&amp;#40;&amp;quot;%s %d&amp;quot;, t, b&amp;#41;;&lt;/code&gt;
&lt;br /&gt;
Nov način ne zahteva od nas da eksplicitno navodimo tipove promenljivih:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cout &amp;lt;&amp;lt; t &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; b;&lt;/code&gt;
&lt;br /&gt;
Za one koji se prvi put sreću sa standardnom C++ bibliotekom i nije im potpuno jasno šta znači recimo &lt;span style=&quot;font-style: italic&quot;&gt;using namespace std;&lt;/span&gt; ili &lt;span style=&quot;font-style: italic&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;), predlažem da prvo pročitaju nešto više o Standrad C++ Library, klasama koje nudi i načinu korišćenja: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Usavršavanje digitrona&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Da bi malo dobili osećaj za korišćenje &lt;span style=&quot;font-style: italic&quot;&gt;cin&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;cout&lt;/span&gt; prepravićemo prošli primer tako da koristi nov način za čitanje i pisanje:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int op = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int p1 = 0, p2 = 0;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Digitron&amp;quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Izaberite operaciju&amp;quot; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;&amp;nbsp; 1. Sabiranje&amp;quot; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;&amp;nbsp; 2. Oduzimanje&amp;quot; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;&amp;#58; &amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cin &amp;gt;&amp;gt; op;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;op != 1 &amp;amp;&amp;amp; op != 2&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Ta operacija ne postoji!&amp;quot; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Unesite prvi parametar&amp;#58; &amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cin &amp;gt;&amp;gt; p1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Unesite drugi parametar&amp;#58; &amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cin &amp;gt;&amp;gt; p2;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Rezultat je&amp;#58; &amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;switch&amp;#40;op&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case 1&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; p1 + p2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case 2&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; p1 - p2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; endl;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Kao što vidite, ništa specijalno nije promenjeno osim načina čitanja i pisanja.
&lt;br /&gt;
Ceo ovaj kod je relativno mali da bi odvajali delove koda koji su zaduženi za logiku i delove za prikaz podataka... pa hajde da malo zakomplikujemo program. Recimo da želimo da omogućimo korisniku da upiše ceo izraz koji ćemo izračunati. Da ne bi otišli predaleko s komplikovanjem, reći ćemo da su dozvoljeni samo brojevi i znaci + i - da ne bi morali da se patimo oko redosleda operacija i oko zagrada... recimo: &lt;span style=&quot;font-style: italic&quot;&gt;12+20-45+6&lt;/span&gt;. Jednostavna, ne preterano dobra implementacija bi mogla da izgleda ovako (ko želi, može da proba da napiše bolji parser):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
#include &amp;lt;sstream&amp;gt;
&lt;br /&gt;
#include &amp;lt;string&amp;gt;
&lt;br /&gt;
using namespace std;
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string f, buffer = &amp;quot;&amp;quot;, lastOperation = &amp;quot;+&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string numbers = &amp;quot;0123456789&amp;quot;, operations = &amp;quot;+-&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string&amp;#58;&amp;#58;size_type i;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int b, r = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Digitron&amp;quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Unesite izraz&amp;#58; &amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;getline&amp;#40;cin, f&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for&amp;#40;i = 0; i &amp;lt; f.length&amp;#40;&amp;#41;; ++i&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;numbers.find&amp;#40;f&amp;#91;i&amp;#93;&amp;#41; != string&amp;#58;&amp;#58;npos&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;buffer += f&amp;#91;i&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else if &amp;#40;operations.find&amp;#40;f&amp;#91;i&amp;#93;&amp;#41; != string&amp;#58;&amp;#58;npos&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;istringstream&amp;#40;buffer&amp;#41; &amp;gt;&amp;gt; b;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;lastOperation == &amp;quot;+&amp;quot;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;r += b;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;r -= b;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;buffer = &amp;quot;&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;lastOperation = f&amp;#91;i&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Nedozvoljen znak '&amp;quot; &amp;lt;&amp;lt; f&amp;#91;i&amp;#93; &amp;lt;&amp;lt; &amp;quot;' na &amp;quot; &amp;lt;&amp;lt; i + 1 &amp;lt;&amp;lt; &amp;quot;. poziciji!&amp;quot; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;!buffer.empty&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;istringstream&amp;#40;buffer&amp;#41; &amp;gt;&amp;gt; b;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;lastOperation == &amp;quot;+&amp;quot;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;r += b;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;r -= b;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; f &amp;lt;&amp;lt; &amp;quot;=&amp;quot; &amp;lt;&amp;lt; r &amp;lt;&amp;lt; endl;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Sada već ceo kod izgleda malo komplikovanije i kada bi neko morao da popravi samo deo za prikaz, morao bi malo da pripazi da slučajno ne promeni deo koda koji je zadužen za računanje. Kod većih projekata je taj problem još izraženiji, a jedno od rešenja je izdvajanje koda zaduženog za jedan određeni deo u klasu.
&lt;br /&gt;
Za sve one koji do sad nisu pisali svoje klase, predlažem da pročitaju nešto o tome pre nego što krenu dalje. dobar tekst o klasama možete naći ovde: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; (pogledajte na levoj strani deo Object Oriented Programming)
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Odvajanje računanja u posebnu klasu&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Pre nego što napišemo klasu, moramo da odredimo na koji način ta klasa treba da komunicira sa glavnim delom. Sigurno će nam trebati jedna funkcija za prosleđivanje izraza i vraćanje rezultata. Pošto može da dođe i do greške prilikom obrade izraza, moramo omogućiti i način za vraćanje greške. Imajući to na umu, možemo da spremimo spremimo kod.
&lt;br /&gt;
Pošto će kod za računanje biti odvojen, možemo još malo da ga proširimo... da lepše parsuje izraz, da podržava i realne brojeve i, recimo množenje i delenje (kod koji budem postavio neće uzimati u obzir prednost operacija):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;class calculator
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void calculate&amp;#40;string func&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float getResult&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string getError&amp;#40;&amp;#41;;
&lt;br /&gt;
protected&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;enum tokenType
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;number,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;operation,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;end,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;error
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float strToNum&amp;#40;string num&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;tokenType getNextToken&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;void doLastOperation&amp;#40;float num&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string _func;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string&amp;#58;&amp;#58;size_type _index;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string _validNumbers;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string _validOperations;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float _result;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char _lastOperation;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string _token;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string _error;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
void calculator&amp;#58;&amp;#58;calculate&amp;#40;string func&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_func = func;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_index = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_validNumbers = &amp;quot;0123456789.&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_validOperations = &amp;quot;+-*/&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_result = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_lastOperation = _validOperations&amp;#91;0&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_token = &amp;quot;&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;_error = &amp;quot;&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;bool done = false;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while&amp;#40;!done&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;switch&amp;#40;getNextToken&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case calculator&amp;#58;&amp;#58;number&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;doLastOperation&amp;#40;strToNum&amp;#40;_token&amp;#41;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case calculator&amp;#58;&amp;#58;operation&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_lastOperation = _token&amp;#91;0&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case calculator&amp;#58;&amp;#58;end&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done = true;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;&amp;nbsp; // error
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done = true;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_error = _token;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_token = &amp;quot;&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
float calculator&amp;#58;&amp;#58;getResult&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return _result;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
string calculator&amp;#58;&amp;#58;getError&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return _error;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
float calculator&amp;#58;&amp;#58;strToNum&amp;#40;string num&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;float res;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;istringstream&amp;#40;num&amp;#41; &amp;gt;&amp;gt; res;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return res;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
calculator&amp;#58;&amp;#58;tokenType calculator&amp;#58;&amp;#58;getNextToken&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;_index == _func.length&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return calculator&amp;#58;&amp;#58;end;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for&amp;#40;; _index &amp;lt; _func.length&amp;#40;&amp;#41;; ++_index&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;_validNumbers.find&amp;#40;_func&amp;#91;_index&amp;#93;&amp;#41; != string&amp;#58;&amp;#58;npos&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_token += _func&amp;#91;_index&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else if &amp;#40;_validOperations.find&amp;#40;_func&amp;#91;_index&amp;#93;&amp;#41; != string&amp;#58;&amp;#58;npos&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;_token.empty&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_token = _func&amp;#91;_index&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;++_index;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return calculator&amp;#58;&amp;#58;operation;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return calculator&amp;#58;&amp;#58;number;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;ostringstream error;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;error &amp;lt;&amp;lt; &amp;quot;Nedozvoljen znak '&amp;quot; &amp;lt;&amp;lt; _func&amp;#91;_index&amp;#93; &amp;lt;&amp;lt; &amp;quot;' na &amp;quot; &amp;lt;&amp;lt; _index + 1 &amp;lt;&amp;lt; &amp;quot;. poziciji!&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_token = error.str&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return calculator&amp;#58;&amp;#58;error;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return calculator&amp;#58;&amp;#58;number;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void calculator&amp;#58;&amp;#58;doLastOperation&amp;#40;float num&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;switch&amp;#40;_lastOperation&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case '+'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_result += num;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case '-'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_result -= num;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case '*'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_result *= num;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case '/'&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_result /= num;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Ta klasa sada ne zavisi od eksternog koda, sve što joj treba ima u sebi. Ako neko želi da izračuna izraz, dovoljno je da pozove &lt;span style=&quot;font-style: italic&quot;&gt;calculate&lt;/span&gt; metod i da proveri rezultat... nema potrebe da se zamara samom implementacijom.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Odvajanje prikaza u posebnu klasu&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Naš kod za prikaz je prilično jednostavan i dovoljno je da napravimo jednu funkciju koja će pokrenuti ispis i čitanje:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;class app
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
public&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int run&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;;
&lt;br /&gt;

&lt;br /&gt;
int app&amp;#58;&amp;#58;run&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;string func;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;calculator calc;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Digitron&amp;quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Unesite izraz&amp;#58; &amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;getline&amp;#40;cin, func&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;calc.calculate&amp;#40;func&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if&amp;#40;!calc.getError&amp;#40;&amp;#41;.empty&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; calc.getError&amp;#40;&amp;#41; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;cout &amp;lt;&amp;lt; func &amp;lt;&amp;lt; &amp;quot;=&amp;quot; &amp;lt;&amp;lt; calc.getResult&amp;#40;&amp;#41; &amp;lt;&amp;lt; endl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Ovde vidimo i primer korišćenja klase za računanje i koliko sada ovaj kod izgleda jednostavniji i lakši za čitanje i održavanje.
&lt;br /&gt;

&lt;br /&gt;
Ostaje nam još da u glavnoj datoteci iskoristimo ovu klasu za prikaz:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;app calc;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return calc.run&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;CMake i kod u više datoteka&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Ceo kod za ovaj projekat možete skinuti odavde: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Ovaj projekat, za razliku od prethodnog, ima više datoteka za kompajliranje, ali to nije nikakav problem za CMake. Dovoljno je da samo nabrojimo sve cpp datoteke (h datoteke ne treba navoditi) i CMake će se snaći:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake_minimum_required &amp;#40;VERSION 2.6&amp;#41;
&lt;br /&gt;
project &amp;#40;calc&amp;#41;
&lt;br /&gt;
add_executable&amp;#40;calc calc.cpp app_console.cpp calculator.cpp&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Zaključak&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Ako nemate jasnu sliku programa kojeg želite da pravite, ne morate žuriti s pisanjem klasa i odvajanjem koda. Kada primetite da jedna celina polako izdvaja i da u suštini može da radi i bez ostalog koda, to je već dobar znak da bi mogli da napravite klasu. Kad budete napravili par projekata, stećićete već osećaj.
&lt;br /&gt;
Pošto smo sada odvojili kod za unos i prikaz podataka, sledećeg puta ćemo napraviti malo drugačiji kod za taj deo, napravićemo prozorčić sa digmenzima i poljem za unos. Naravno, klasa za izračunavanje će biti ista kao i u ovom primeru.  
&lt;br /&gt;

&lt;br /&gt;
----------- &lt;span style=&quot;font-weight: bold&quot;&gt;Dopuna: 22 Jun 2012 1:06&lt;/span&gt; ---------
&lt;br /&gt;

&lt;br /&gt;
 Da li je moguće da niko nije imao nikakvih problema s ovim što smo do sad probali da uradimo... ili niko ništa nije ni probao da odradi? &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Evo 2 sličice digitrona kojeg ćemo napraviti sledećeg puta:
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49641600_snapshot1.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_49641600_snapshot2.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovako to izgleda kod mene u KDE okruženju. U drugim okruženjima će aplikacija izgledati malo drugačije (imaće grafičnu temu koju ste izabrali kod vas, fontove koje koristite, itd...), ali što je za nas bitno, radiće svuda lepo i izgledaće kao da je napravljena baš za vaš računar &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Dok pišem sledeći tekst, možete se malo upoznati sa Qt bibliotekom, jer ćemo nju koristiti za pravljenje prozora:
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Sat, 23 Jun 2012 17:05:35 +0100</pubDate>
</item>
<item>
	<title>[1] Sta posle skole - upotreba cmake</title>
	<link>https://www.mycity.rs/C/1-Sta-posle-skole-upotreba-cmake.html</link>
	<guid>https://www.mycity.rs/?p=1355235</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-style: italic&quot;&gt;Uvod
&lt;br /&gt;
Jednostavan program
&lt;br /&gt;
CMake
&lt;br /&gt;
Zaključak&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Većina vas je u školi i po forumima naučila osnove C/C++ jezika, i zna da napravi jednostavne male programčiće. Problem nastaje pri pokušaju da se napravi neki malo komplikovaniji program koji umesto konzole, svoj sadržaj prikazuje u prozoru, koji umesto datoteke, svoje podatke snima u bazu, itd. Pokušaću da vam i taj deo programiranja što više približim u narednom periodu.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Jednostavan program&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Počećemo jednim malim programčićem koji ste verovatno već svi pravili. Napravićmo digitron koji zna da sabere ili oduzme dva broja. U svom omiljenom programu za pisanje C/C++ koda, napravite nov konzolni projekat i prekopirajte sledeći kod:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;stdio.h&amp;gt;
&lt;br /&gt;

&lt;br /&gt;
int main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int op = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int p1 = 0, p2 = 0;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Digitron\n\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Izaberite operaciju\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; 1. Sabiranje\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; 2. Oduzimanje\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;op&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;op != 1 &amp;amp;&amp;amp; op != 2&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Ta operacija ne postoji!\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Unesite prvi parametar&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;p1&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Unesite drugi parametar&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;p2&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;switch&amp;#40;op&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case 1&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Rezultat je&amp;#58; %d\n&amp;quot;, p1 + p2&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;case 2&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Rezultat je&amp;#58; %d\n&amp;quot;, p1 - p2&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;return 0;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Kao što vidite, nismo koristili ništa novo i nepoznato, samo standardne funkcije za čitanje/pisanje teksta i par grananja. Ako neko već sada ima problema sa razumevanjem koda, neka se još malo vrati osnovama.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;CMake&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Nažalost, verovatno neće baš svi znati da naprave nov projekat i podese sve što je potrebno da bi kompajler i linker uspeli da naprave konačnu izvršnu datoteku. Uz to, verovatno će neko želeti da proba kod na različitim operativnim sistemima u kojima sistemske biblioteke nisu na istim mestima. Da bi izbegli probleme prilikom kreiranja novih projekata, koristićemo program CMake.
&lt;br /&gt;
CMake je višeplatformski program koji nam omogućava relativno lako pravljenje izvršnih datoteka. Njegov cilj je da na osnovu par informacija napravi projekat koji će kompajleri instalirani na vašem sistemu moći da obrade. Trenutno CMake podržava sledeće alate:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
Mac OS X
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
Unix Makefiles
&lt;br /&gt;
Xcode
&lt;br /&gt;
CodeBlocks
&lt;br /&gt;
Eclipse CDT4
&lt;br /&gt;
KDevelop3
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Linux
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
Ninja
&lt;br /&gt;
Unix Makefiles
&lt;br /&gt;
CodeBlocks
&lt;br /&gt;
Eclipse CDT4
&lt;br /&gt;
KDevelop3
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Windows
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;
&lt;br /&gt;
Borland C++
&lt;br /&gt;
MSYS Makefiles
&lt;br /&gt;
MinGW Makefiles
&lt;br /&gt;
NMake Makefiles
&lt;br /&gt;
Unix Makefiles
&lt;br /&gt;
Visual Studio 6
&lt;br /&gt;
Visual Studio 2003
&lt;br /&gt;
Visual Studio 2005
&lt;br /&gt;
Visual Studio 2008
&lt;br /&gt;
Visual Studio 2010
&lt;br /&gt;
Visual Studio 2011
&lt;br /&gt;
Watcom WMake
&lt;br /&gt;
CodeBlocks
&lt;br /&gt;
Eclipse CDT4
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Instalacija CMake programa je jednostavna. Na Linux operativnim sistemima možete iskoristiti svoj omiljeni program za instalaciju pakete i instalirajte cmake. Za Windows i Mac OS X možete naći instalacione datoteke na sledećoj adresi: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
CMake koristi datoteku &lt;span style=&quot;font-style: italic&quot;&gt;CMakeLists.txt&lt;/span&gt; za kreiranje projekata. Preko te datoteke možemo kontrolisati šta želimo da bude uključeno u program, koje biblioteke želimo da koristimo, kako želimo da optimizujemo program, i još mnogo toga. Počećemo vrlo jednostavno, napisaćemo &lt;span style=&quot;font-style: italic&quot;&gt;CMakeLists.txt&lt;/span&gt; datoteku koja će napraviti projekat za naš mali digitron. Pošto je program veoma jednostavan, jedino što moramo da definišemo je ime projekta i u kojoj datoteci se nalazi kod:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake_minimum_required &amp;#40;VERSION 2.6&amp;#41;
&lt;br /&gt;
project &amp;#40;calc&amp;#41;
&lt;br /&gt;
add_executable&amp;#40;calc calc.cpp&amp;#41;&lt;/code&gt;
&lt;br /&gt;
Prvi red je tamo samo da bi onemogućili kreiranje projekta uz upotrebu stare verzije CMake programa. Tim redom zahtevamo najmanje verziju 2.6. Taj red nije obavezan.
&lt;br /&gt;
U drugom redu definišemo ime projekta. Ime ne mora biti isto kao i ime datoteke u kojoj se nalazi kod. To imeće se koristiti za kreiranje dodatnih datoteka za projekat ako ih neki alat zahteva (recimo Visual Studio, Xcode ili Eclipse).
&lt;br /&gt;
Treći red definiše ime izvršne datoteke koja će biti kreirana posle kompajliranja programa, i ime datoteke u kojoj se nalazi kod.
&lt;br /&gt;

&lt;br /&gt;
Najjednostavnije kreiranje projekta je da otvorite direktorijum u kojem se nalazi &lt;span style=&quot;font-style: italic&quot;&gt;CMakeLists.txt&lt;/span&gt; datoteka i da pokrenete sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake -G &amp;quot;Ime vašeg kompajlera&amp;quot;&lt;/code&gt;
&lt;br /&gt;
Listu mogućih kompajlera možete dobiti ako ukicate samo:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake&lt;/code&gt;
&lt;br /&gt;
Primera radi, sledeća komanda će kreirati projekat za Visual Studio 2010:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake -G &amp;quot;Visual Studio 10&amp;quot;&lt;/code&gt;
&lt;br /&gt;
Sledeća komanda će kreirati Makefile za Linux ili MacOS X:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake -G &amp;quot;Unix Makefiles&amp;quot;&lt;/code&gt;
&lt;br /&gt;
Sledeća komanda će kreirati projekat za CodeBlocks i MinGW kompajler:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cmake -G &amp;quot;CodeBlocks - MinGW Makefiles&amp;quot;&lt;/code&gt;
&lt;br /&gt;
Kada je projekat kreiran možete ga otvoriti u vašem kompajleru i pokrenuti ga.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Zaključak&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
U ovom delu smo naučili kako da uz pomoć CMake programa pravimo projekte za različite kompajlere pod različitim operativnim sistemima. Za svaki sledeći program ćemo spremiti &lt;span style=&quot;font-style: italic&quot;&gt;CMakeLists.txt&lt;/span&gt; datoteku da bi većina bez problema mogla da proba kod čak i u drugim okruženjima u kojima još uvek nemaju iskustva... ovo se odnosi na sve one koji još uvek koriste Dev-C++ &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; Do sledećeg dela očekujem da bar neko proba CMake i da uspešno iskompajlira digitron.
&lt;br /&gt;
U sledećem delu ćemo se okrenuti novijem načinu za čitanje i pisanje teksta, i odvajanjem logike programa od dela za prikaz.</description>
	<pubDate>Mon, 18 Jun 2012 22:37:23 +0100</pubDate>
</item>
<item>
	<title>[1] Uvod u C++</title>
	<link>https://www.mycity.rs/C/1-Uvod-u-C.html</link>
	<guid>https://www.mycity.rs/?p=1325009</guid>
	<author>nobody@mycity.rs (Fil)</author>
	<description>==========================================
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Za 4000-ti post i 3 godine sa vama --&amp;gt; novi članak&lt;/span&gt; &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;
==========================================
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Philosophy&lt;/span&gt;: 
&lt;br /&gt;
- &lt;span style=&quot;font-style: italic&quot;&gt;&amp;quot;Write once, compile everywhere&amp;quot;&lt;/span&gt;
&lt;br /&gt;
- &lt;span style=&quot;font-style: italic&quot;&gt;&amp;quot;Reuse, don't recreate&amp;quot;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ovaj članak je namenjen za upoznavanje sa osnovama programskog jezika &lt;span style=&quot;font-weight: bold&quot;&gt;C++&lt;/span&gt;. Primeri i kodovi, koji će biti predstavljeni u tekstu su rađeni na operativnom sistemu &lt;span style=&quot;font-style: italic&quot;&gt;Linux&lt;/span&gt;.  
&lt;br /&gt;

&lt;br /&gt;
U ovoj seriji članaka neće biti detaljno objašnjeni neki slični koncepti koji su već objašnjeni u seriji članaka za &lt;span style=&quot;font-weight: bold&quot;&gt;C#&lt;/span&gt;. Članci se nalaze &lt;a href=&quot;http://www.mycity.rs/NET/&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;u ovom potforumu&lt;/a&gt; i &lt;span style=&quot;text-decoration: underline&quot;&gt;izdvojeni su&lt;/span&gt; sa desne strane potforuma.
&lt;br /&gt;

&lt;br /&gt;
Takođe, valjalo bi se podsetiti i osnovnih koncepata u programskom jeziku &lt;span style=&quot;font-weight: bold&quot;&gt;C&lt;/span&gt;, kroz &lt;a href=&quot;http://www.mycity.rs/C/Osnovni-koncepti-programiranja-kroz-C-2.html&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;OVAJ&lt;/a&gt; Nikolin članak.
&lt;br /&gt;
 
&lt;br /&gt;
Konkretno, ovde će se, po mojoj preferenciji, obratiti pažnja na integer tipove, metode, promenljive (varijable), zaključno sa ponavljanjem naredbe &lt;span style=&quot;font-weight: bold&quot;&gt;if&lt;/span&gt; i petlji.
&lt;br /&gt;

&lt;br /&gt;
Za sledeći članak je planirano da se objasne klase, objekti, pokazivači i reference.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;C++&lt;/span&gt; je moderan i &lt;span style=&quot;font-style: italic&quot;&gt;objektno-orijentisan&lt;/span&gt; programski jezik pomoću koga se mogu izraditi aplikacije visokih performansi. &lt;span style=&quot;font-style: italic&quot;&gt;Bjarne Stroustrup&lt;/span&gt; je autor ovog programskog jezika, koji je zasnovan na programskom jeziku &lt;span style=&quot;font-weight: bold&quot;&gt;C&lt;/span&gt;. Pošto u programskom jeziku &lt;span style=&quot;font-weight: bold&quot;&gt;C&lt;/span&gt; operator &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;++&lt;/span&gt;&amp;quot; označava inkrementaciju, sa &lt;span style=&quot;font-weight: bold&quot;&gt;C++&lt;/span&gt; Bjarne je hteo da ukaže da je ovaj programski jezik inkrementalno proširenje programskog jezika &lt;span style=&quot;font-weight: bold&quot;&gt;C&lt;/span&gt; (a ne potpuno nov jezik).  
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Da ne bi mnogo mudrovali, odmah krećemo u akciju  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; Napravićemo jednostavnu aplikaciju sa kojom su počeli i mnogi eksperti iz ove oblasti: &lt;span style=&quot;font-weight: bold&quot;&gt;Hello World!&lt;/span&gt; &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Za početak, otvorite neki &lt;span style=&quot;font-weight: bold&quot;&gt;text editor&lt;/span&gt; ( &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; &lt;span style=&quot;font-size: 10px; line-height: normal&quot;&gt;nikako &lt;span style=&quot;text-decoration: underline&quot;&gt;ne koristiti&lt;/span&gt; Word Processore, jer oni mogu ubaciti specijalne karaktere i javiti greške pri kompajliranju&lt;/span&gt;), na primer: &lt;span style=&quot;font-weight: bold&quot;&gt;Kate&lt;/span&gt; i ukucajte kod kao na sledećoj slici:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_444525695_hellosrc.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 1: izvorni kod (source code) vaše prve aplikacije&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
... i sačuvajte datoteku kao &lt;span style=&quot;font-style: italic&quot;&gt;Hello.cxx&lt;/span&gt;.  
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt;  Za sada ne morate ništa da ukapirate, sve će biti objašnjeno na kraju postupka i &amp;quot;u svoje vreme&amp;quot;.  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;

&lt;br /&gt;
Otvorite &lt;span style=&quot;font-style: italic&quot;&gt;terminal&lt;/span&gt; i locirajte folder u kome se nalazi ova datoteka.
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_444525695_hellosrc.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 2: izvorni kod i generisana izvršna datoteka, i komande u terminalu&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ukucajte dve komande, kao sa &lt;span style=&quot;font-style: italic&quot;&gt;slike 2&lt;/span&gt;. Prva komanda će na osnovu izvornog koda generisati izvršnu datoteku, tj. &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;color: purple&quot;&gt;iskompajliraće&lt;/span&gt;&lt;/span&gt; kod, a druga će pokrenuti tu datoteku. Sa slike se vidi i rezultat: ispisano je &lt;span style=&quot;font-style: italic&quot;&gt;Hello Word&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Na kraju članka se nalazi deo o nepoznatoj terminologiji i napomenama/zanimljivostima.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; U članku su korišteni &lt;span style=&quot;text-decoration: underline&quot;&gt;GNU kompajleri&lt;/span&gt; (gcc), koji postoje za više platformi. Naravno, neki od kompajlera mora biti instaliran, kako bi se kompajlirao kod.
&lt;br /&gt;

&lt;br /&gt;
Neki često korišteni kompajleri:
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;GCC&lt;/span&gt; (multiplatformski)
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Intel C++ Compiler&lt;/span&gt; (Linux, Windows, OS X)
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;MS Visual C++ Compiler&lt;/span&gt; (Windows)
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;MingW&lt;/span&gt; (Windows)
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Borland C++ Compiler&lt;/span&gt; (Windows) 
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt;  &lt;span style=&quot;font-weight: bold&quot;&gt;Objašnjenje:&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Ekstenzije:
&lt;br /&gt;

&lt;br /&gt;
- za &lt;span style=&quot;text-decoration: underline&quot;&gt;izvorne datoteke&lt;/span&gt; su obično: &lt;span style=&quot;color: green&quot;&gt;.cpp&lt;/span&gt;, &lt;span style=&quot;color: green&quot;&gt;.cxx&lt;/span&gt;, &lt;span style=&quot;color: green&quot;&gt;.c++&lt;/span&gt;, &lt;span style=&quot;color: green&quot;&gt;.cp&lt;/span&gt;, ili &lt;span style=&quot;color: green&quot;&gt;.c&lt;/span&gt;. 
&lt;br /&gt;
&lt;span style=&quot;font-size: 10px; line-height: normal&quot;&gt;U zavisnosti od kompajlera, ekstenzija datoteke može da igra veću ili manju ulogu. Za to treba pogledati dokumentaciju kompajlera (na primer, neki kompajleri ce .c datoteke tretirati isključivo kao kod pisan u programskom jeziku C).
&lt;br /&gt;
&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
- za &lt;span style=&quot;text-decoration: underline&quot;&gt;objektne datoteke&lt;/span&gt;: &lt;span style=&quot;color: green&quot;&gt;.o&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 10px; line-height: normal&quot;&gt;Nakon kompajliranja, stvara se objektna datoteka. Na &lt;span style=&quot;font-style: italic&quot;&gt;Windows&lt;/span&gt;u je ova ekstenzija .obj
&lt;br /&gt;
Ova datoteka nije izvršna, a za to je zadužen &lt;span style=&quot;font-style: italic&quot;&gt;linker&lt;/span&gt;. &lt;span style=&quot;text-decoration: underline&quot;&gt;Ovaj međukorak ne vidimo&lt;/span&gt;, jer ga GCC sam odradi (ukoliko koristimo &lt;span style=&quot;font-style: italic&quot;&gt;switch&lt;/span&gt;eve kao na slici 2).&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; Kratko objašnjenje izvornog koda: u &lt;span style=&quot;font-style: italic&quot;&gt;include&lt;/span&gt; sekciji naznačavamo koje biblioteke ćemo koristiti za potrebe programa (konkretno, &lt;span style=&quot;font-style: italic&quot;&gt;cout&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;endl&lt;/span&gt;). &lt;span style=&quot;font-style: italic&quot;&gt;Using&lt;/span&gt; direktiva određuje konkretan &lt;span style=&quot;font-style: italic&quot;&gt;namespace&lt;/span&gt;. Program se može napisati i bez ove direktive, ovako:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_222359820_Anjuta.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 3: prikaz izvornog koda u razvojnom okruženju (IDE) Anjuta&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Metoda &lt;span style=&quot;font-weight: bold&quot;&gt;main&lt;/span&gt; je metoda od koje počinje izvršavanje programa. Vitičastim zagradama je određen blok linija koda koji njoj pripada. &lt;span style=&quot;font-weight: bold&quot;&gt;Cout&lt;/span&gt; služi za štampanje teksta (uočiti specifičnu sintaksu), a sa &lt;span style=&quot;font-weight: bold&quot;&gt;endl&lt;/span&gt; prelazimo u novi red. Svaka &lt;span style=&quot;font-weight: bold&quot;&gt;main&lt;/span&gt; metoda, po pravilu vraća povratnu vrednost &lt;span style=&quot;font-style: italic&quot;&gt;integer&lt;/span&gt; i na kraju &lt;span style=&quot;font-style: italic&quot;&gt;main&lt;/span&gt; metode stoji &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;return 0&lt;/span&gt;&amp;quot;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt; za listu &lt;span style=&quot;font-style: italic&quot;&gt;switch&lt;/span&gt;eva kompajlera, pogledajte &lt;span style=&quot;font-weight: bold&quot;&gt;man&lt;/span&gt; stranice; ukucajte u terminalu: &amp;quot;&lt;span style=&quot;color: blue&quot;&gt;man g++&lt;/span&gt;&amp;quot;. Takođe, saznajte više o GNU Linkeru, sa &amp;quot;&lt;span style=&quot;color: blue&quot;&gt;man ld&lt;/span&gt;&amp;quot;. Na kraju, proverite i &lt;span style=&quot;font-style: italic&quot;&gt;info&lt;/span&gt; stranice: &amp;quot;&lt;span style=&quot;color: blue&quot;&gt;info gcc&lt;/span&gt;&amp;quot;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Na sledećem primeru se može videti upotreba metoda (funkcija):
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_60624234_codeblocks.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 4: prikaz metode koja sabira dva broja u IDE Code Blocks&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U primeru je deklarisana metoda &amp;quot;Zbir&amp;quot;, koja se (kao i svaka druga metoda) sastoji iz zaglavlja (&lt;span style=&quot;font-weight: bold&quot;&gt;header&lt;/span&gt;) i tela (&lt;span style=&quot;font-weight: bold&quot;&gt;body&lt;/span&gt;). 
&lt;br /&gt;

&lt;br /&gt;
- U zaglavlju metode naznačujemo koji je povratni tip metode (ovde: &lt;span style=&quot;font-style: italic&quot;&gt;int&lt;/span&gt;), ime metode i parametre. U ovom primeru, ulazni paramteri su dva broja tipa &lt;span style=&quot;font-style: italic&quot;&gt;int&lt;/span&gt;, koji treba da se saberu.
&lt;br /&gt;

&lt;br /&gt;
- U telu metode se nalaze naredbe, kojima se na odgovarajući način manipuliše sa parametrima. Svaka metoda vraća neku vrednost preko &lt;span style=&quot;font-weight: bold&quot;&gt;return&lt;/span&gt; direktive. Ukoliko izostavimo ovu direktivu podrazumevano se vraća &lt;span style=&quot;font-style: italic&quot;&gt;void&lt;/span&gt; (povratna vrednost metode mora biti onog tipa definisanog u zaglavlju). 
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Main&lt;/span&gt; je specijalna metoda koja, po konvenciji, vraća &lt;span style=&quot;font-weight: bold&quot;&gt;0&lt;/span&gt; kako bi naznačila da je program normalno završio sa radom. U &lt;span style=&quot;font-style: italic&quot;&gt;Linux&lt;/span&gt;u (&lt;span style=&quot;font-style: italic&quot;&gt;bash&lt;/span&gt; ili &lt;span style=&quot;font-style: italic&quot;&gt;pdksh shell&lt;/span&gt;), preko sistemske varijable &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;$?&lt;/span&gt;&lt;/span&gt; možemo pročitati povratnu vrednost &lt;span style=&quot;font-style: italic&quot;&gt;main&lt;/span&gt; metode (kako bi utvrdili da li se program abnormalno završio. IZVOR). 
&lt;br /&gt;

&lt;br /&gt;
Dalje, pored objekta &lt;span style=&quot;font-weight: bold&quot;&gt;cout&lt;/span&gt;, ovde se vidi i upotreba objekta &lt;span style=&quot;font-weight: bold&quot;&gt;cin&lt;/span&gt;. Dok se &lt;span style=&quot;font-style: italic&quot;&gt;cout&lt;/span&gt; koristi za prosleđivanje neke poruke na ekran, &lt;span style=&quot;font-style: italic&quot;&gt;cin&lt;/span&gt; se koristi za pribavljanje podataka prosleđenih sa tastature.
&lt;br /&gt;

&lt;br /&gt;
Obratiti pažnju i na pripadajuće simbole &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &amp;quot; i &amp;quot;&lt;span style=&quot;font-weight: bold&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&amp;quot; (&lt;span style=&quot;font-style: italic&quot;&gt;redirection symbols&lt;/span&gt;) koji se koriste uz &lt;span style=&quot;font-weight: bold&quot;&gt;cout&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;cin&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Preko &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;int a, b, c;&lt;/span&gt; &amp;quot; deklarisane su 3 varijable (promenljive) koje su tipa &lt;span style=&quot;font-style: italic&quot;&gt;int&lt;/span&gt;. 
&lt;br /&gt;
Pošto je programima neophodan neki način da sačuvaju podatke, ovde varijable ulaze u igru. 
&lt;br /&gt;
--&amp;gt; Dakle, one predstavljaju izvesne podatke u memoriji i omogućavaju laku manipulaciju sa tim podacima. U ovom primeru je tip podatka &lt;span style=&quot;font-style: italic&quot;&gt;int&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Što se tiče integera, svi integeri dolaze u dve varijante:
&lt;br /&gt;

&lt;br /&gt;
a) &lt;span style=&quot;font-weight: bold&quot;&gt;signed&lt;/span&gt; integer - ovi integeri mogu imati negativne vrednosti (minuse)
&lt;br /&gt;
b) &lt;span style=&quot;font-weight: bold&quot;&gt;unsigned&lt;/span&gt; integer - ovi integeri nemaju negativne vrednosti (nema minusa) 
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Ukoliko se ne naglasi ovaj parametar, podrazumeva se da je integer &lt;span style=&quot;text-decoration: underline&quot;&gt;signed&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Zašto bi neko koristio pozitivne vrednosti brojeva?
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; border=&quot;0&quot; /&gt;  budući da i &lt;span style=&quot;font-style: italic&quot;&gt;signed&lt;/span&gt; i &lt;span style=&quot;font-style: italic&quot;&gt;unsigned&lt;/span&gt; integer zauzimaju isti memorijski prostor - iz ovoga sledi da &lt;span style=&quot;font-style: italic&quot;&gt;unsigned&lt;/span&gt; integer može da ima duplo više pozitivnih brojeva  &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; 
&lt;br /&gt;
Na primer:
&lt;br /&gt;
- ako &lt;span style=&quot;font-style: italic&quot;&gt;signed short&lt;/span&gt; ima opseg: [-32768 , 32767],
&lt;br /&gt;
- &lt;span style=&quot;font-style: italic&quot;&gt;unsigned short&lt;/span&gt; će imati opseg [0 , 65535]
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Ukoliko dodelimo &lt;span style=&quot;font-style: italic&quot;&gt;unsigned&lt;/span&gt; varijabli negativnu vrednost, javiće se &lt;span style=&quot;font-style: italic&quot;&gt;compile time error&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Pošto tip definiše i alokaciju prostora u memoriji, na sledećem primeru se može proveriti koliko pojedini tipovi zahtevaju memorije na računaru:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_190537601_NetBeansCpp.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 5: prikaz zauzeća memorije kod raznih tipova u IDE NetBeans&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Već smo par puta na slikama pomenuli IDE - &lt;span style=&quot;font-weight: bold&quot;&gt;I&lt;/span&gt;ntegrated &lt;span style=&quot;font-weight: bold&quot;&gt;D&lt;/span&gt;evelopment &lt;span style=&quot;font-weight: bold&quot;&gt;E&lt;/span&gt;nvironment. Za razliku od tekst editora, razvojna okruženja integrišu mogućnosti unosa i izmene koda, kompajliranje i razne druge mogućnosti, dakle, unutar samog okruženja. U &lt;a href=&quot;http://www.mycity.rs/Linux-Download/Pregled-razvojnih-okruzenja-za-C-u-Linuksu.html&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;ovoj temi&lt;/a&gt; je napravljen pregled razvojnih okruženja u Linuksu, sa linkovima za preuzimanje. Pojedina rešenja imaju i &lt;span style=&quot;font-style: italic&quot;&gt;Windows&lt;/span&gt; varijante.
&lt;br /&gt;

&lt;br /&gt;
Kao što se može videti na &lt;span style=&quot;font-style: italic&quot;&gt;slici 5&lt;/span&gt;, tip &lt;span style=&quot;font-weight: bold&quot;&gt;char&lt;/span&gt; zauzima 1 bajt (dakle može da sadrži 2^8 vrednosti, tj. 256 vrednosti), što je dovoljno za &lt;span style=&quot;font-style: italic&quot;&gt;ASCII&lt;/span&gt; set karaktera (slova, brojevi i interpunkcijski znaci).
&lt;br /&gt;

&lt;br /&gt;
Na sledećem primeru se može videti povezanost karaktera i integera, tj. svakom karakteru odgovara neka brojčana vrednost:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_222359820_eclipsecpp.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 6: rezultat &lt;span style=&quot;text-decoration: underline&quot;&gt;kastovanja&lt;/span&gt; &lt;span style=&quot;font-style: italic&quot;&gt;int&lt;/span&gt; vrednosti kao karaktera u Eclipse IDE-u&lt;/span&gt; 
&lt;br /&gt;
 
&lt;br /&gt;

&lt;br /&gt;
Ovaj jednostavan program ispisuje vrednosti karaktera za &lt;span style=&quot;font-style: italic&quot;&gt;integer&lt;/span&gt;e koji se kreću od 32 do 127. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Na sledećem primeru ćemo videti kako se vrši kontrola toka uz pomoć naredbe &lt;span style=&quot;font-weight: bold&quot;&gt;if&lt;/span&gt;:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_222359820_codelite.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 7: primer pokazuje i upotrebu ternarnog operatora koji nekad može zameniti naredbu &lt;span style=&quot;font-weight: bold&quot;&gt;if&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Primer je jednostavan: korisnik unosi dva broja, program ih poredi i vraća veći.
&lt;br /&gt;

&lt;br /&gt;
Takođe, sa slike se može videti i upotreba &lt;span style=&quot;font-style: italic&quot;&gt;ternarnog operatora&lt;/span&gt; &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; Iz izlaza vidimo da vraća isti rezultat kao naredba &lt;span style=&quot;font-weight: bold&quot;&gt;if&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Dalje, u ovom primeru možemo videti kako izgleda jedan od načina komentarisanja u &lt;span style=&quot;font-weight: bold&quot;&gt;C++&lt;/span&gt; . Kompajler će da ignoriše sve što je iza &lt;span style=&quot;font-weight: bold&quot;&gt;&amp;quot;//&amp;quot;&lt;/span&gt; (tzv. &lt;span style=&quot;font-style: italic&quot;&gt;double slash&lt;/span&gt;) karaktera . 
&lt;br /&gt;

&lt;br /&gt;
Gore navedeni komentar se odnosi samo na tekuću liniju koda. 
&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Ukoliko želimo da neki blok koda stavimo po komentar, upotrebićemo drugi tip komentarisanja, tzv. &lt;span style=&quot;color: blue&quot;&gt;slash-star (/*)&lt;/span&gt; komentar. Kompajler će ignorisati sve linije, sve dok ne dođe na &lt;span style=&quot;color: blue&quot;&gt;star-slash (*/)&lt;/span&gt; komentar. 
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Dok se &lt;span style=&quot;font-style: italic&quot;&gt;double slash&lt;/span&gt; ne zatvara, &lt;span style=&quot;font-style: italic&quot;&gt;slash-star&lt;/span&gt; mora imati svog zatvarajućeg para &lt;span style=&quot;font-style: italic&quot;&gt;star-slash&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Bitna stvar kod pravilne upotrebe metoda u &lt;span style=&quot;font-weight: bold&quot;&gt;C++&lt;/span&gt; je da napravimo razliku između &lt;span style=&quot;text-decoration: underline&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;deklarisanja&lt;/span&gt;&lt;/span&gt; neke metode (tj. naznačavanje &lt;span style=&quot;font-style: italic&quot;&gt;&lt;span style=&quot;text-decoration: underline&quot;&gt;prototipa&lt;/span&gt;&lt;/span&gt; metode) i &lt;span style=&quot;text-decoration: underline&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;definisanja&lt;/span&gt;&lt;/span&gt; te metode. 
&lt;br /&gt;

&lt;br /&gt;
--&amp;gt; &lt;span style=&quot;font-style: italic&quot;&gt;Prototip&lt;/span&gt; metode (tj. njena deklaracija) kompajleru obezbeđuje uvid u ime, povratnu vrednost i parametre metode. Prototipi metoda se obično nalaze iznad metode main.
&lt;br /&gt;

&lt;br /&gt;
--&amp;gt; &lt;span style=&quot;font-style: italic&quot;&gt;Definicija&lt;/span&gt; metode kompajleru naznačava šta ta metoda zapravi radi.
&lt;br /&gt;

&lt;br /&gt;
U &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_222359820_AnjutaOpseg.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;OVOM&lt;/a&gt; (Anjuta), &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_222359820_BloodShedDevCppWine.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;OVOM&lt;/a&gt; (DevCpp) i &lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_88945497_SlickEdit.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;OVOM&lt;/a&gt; (SlickEdit) primeru možete videti deklaracije i definicije metoda.
&lt;br /&gt;

&lt;br /&gt;
Obratiti pažnju na komentare.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;text-decoration: underline&quot;&gt;Napomena&lt;/span&gt;&lt;/span&gt;: postoji slučaj kada prototip metode nije potrebno navoditi, i tada zapravo definicija metode obuhvata i njen prototip! 
&lt;br /&gt;
--&amp;gt; U ovom slučaju metoda se mora definisati pre nego što je neka druga metoda pozove! 
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Ovo nije dobra praksa! Loša je konstantno voditi računa o redosledu metoda, dakle, o tome gde se koja metoda nalazi u kodu (takav kod se i teže održava). 
&lt;br /&gt;
&lt;span style=&quot;color: brown&quot;&gt;Takođe, treba programirati &amp;quot;defanzivno&amp;quot; (&lt;span style=&quot;font-style: italic&quot;&gt;defensive programming&lt;/span&gt;), odnosno, programirati na takav način da se potencijalne greške izbegnu što je više moguće&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
Kao što se vidi iz primera, za prototip metode nije bitan konkretan parametar, već samo &lt;span style=&quot;text-decoration: underline&quot;&gt;tip parametra&lt;/span&gt; (tako da nije greška ako se izostave sami parametri).
&lt;br /&gt;

&lt;br /&gt;
U primeru sa &lt;span style=&quot;font-style: italic&quot;&gt;Anjutom&lt;/span&gt;, vidi se i opseg važenja neke varijable (&lt;span style=&quot;font-style: italic&quot;&gt;scope&lt;/span&gt;).
&lt;br /&gt;
--&amp;gt; varijable koje nisu definisane ni u jednoj metodi imaju globalni opseg i dostupne su za sve metode.
&lt;br /&gt;
--&amp;gt; varijable koje se nalaze unutar metoda (bilo kao parametar, bilo u telu metode) imaju lokalni opseg.
&lt;br /&gt;
--&amp;gt; ukoliko lokalna varijabla ima isti naziv kao globalna varijabla, radi se sa lokalnom varijablom (globalna se privrmeno &amp;quot;prikriva&amp;quot;).
&lt;br /&gt;
* iz primera se vidi da se može formirati i nezavisni blok komandi, i opseg varijable je vezan za taj blok.
&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Da bi se izbegle eventualne greške, preporučuje se da se nazivi lokalnih i globalnij varijabli ne podudaraju.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U primeru sa &lt;span style=&quot;font-style: italic&quot;&gt;DevCpp&lt;/span&gt; se vidi princip prenosa po vrednosti, odnosno promene nad argumentima neke funkcije B, ne menja vrednosti promenljivih pozivajuće funkcije A.
&lt;br /&gt;

&lt;br /&gt;
U primeru &lt;span style=&quot;font-style: italic&quot;&gt;SlickEdit&lt;/span&gt; se vidi preopterećenje metoda (polimorfizam). U zavisnosti od tipa prosleđenog argumenta, pozvaće se odgovarajuća metoda &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;SWITCH&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
U slučaju da program ima dosta uslovnih grananja, da ne bi pisali gomilu naredbi &lt;span style=&quot;font-weight: bold&quot;&gt;if&lt;/span&gt;, racionalnije je koristiti naredbu &lt;span style=&quot;font-weight: bold&quot;&gt;switch&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;switch &amp;#40;izraz&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case vrednost1&amp;#58; izraz; break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case vrednost2&amp;#58; izraz; break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case vrednost3&amp;#58; izraz; break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case vrednostN&amp;#58; izraz; break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default&amp;#58; izraz;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Članak ćemo zaključiti sa direktivom &lt;span style=&quot;font-weight: bold&quot;&gt;goto&lt;/span&gt; i pregledom &lt;span style=&quot;font-weight: bold&quot;&gt;petlji&lt;/span&gt;. Kako je ovo već objašnjeno u jednom o C# članaka, biće dati samo primeri upotrebe. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;GOTO&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_133529542_goto.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 8: primer sa direktivom &lt;span style=&quot;font-weight: bold&quot;&gt;goto&lt;/span&gt;. Izbegavati njenu upotrebu!&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;FOR&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_49436131_zinjai.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 9: primer &lt;span style=&quot;font-weight: bold&quot;&gt;for&lt;/span&gt; petlje&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;Rekurzija&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Postavljeni problem se mogao rešiti i pomoću rekurzije. Obratite pažnju na kod:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_133419448_OracleSolarisStudio.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 10: rešavanje problema rekurzijom&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Rekurzija se sastoji u konceptu da funkcija može da poziva samu sebe (unutar tela metode, poziva se ta ista metoda, koja opet može pozvati samu sebe). Nizom sukcesivnih povratnih vrednosti (budući da svaka pozvana metoda vraća neku vrednost) dobija se rešenje početnog problema. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;WHILE&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;DO WHILE&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=152099_63590199_whiledowhile.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Slika 10: primer upotrebe while do i while petlje&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Pregled nekih korištenih termina&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Interpreter&lt;/span&gt; -  prevodi kod programa i programske instrukcije direktno u akcije. 
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Compiler&lt;/span&gt; - prevodi izvorni kod u prelaznu &amp;quot;međuformu&amp;quot;. Ovaj proces prevođenja se naziva kompajliranje, a rezltat kompajiranja je &lt;span style=&quot;font-style: italic&quot;&gt;object file&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Linker&lt;/span&gt; - nakon kompajliranja, kompajler poziva Linker, koji prevodi objektnu datoteku u &lt;span style=&quot;font-style: italic&quot;&gt;izvršni program&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Encapsulation&lt;/span&gt; - &lt;span style=&quot;color: blue&quot;&gt;tri su stuba objektno-orijentisanog programiranja&lt;/span&gt;: &lt;span style=&quot;text-decoration: underline&quot;&gt;enkaspulacija&lt;/span&gt;, &lt;span style=&quot;text-decoration: underline&quot;&gt;nasleđivanje&lt;/span&gt; (inheritance) i &lt;span style=&quot;text-decoration: underline&quot;&gt;polimorfizam&lt;/span&gt;. Enkapsulacijom sakrivamo nebitne detalje i težiste bacamo na funkcionalnost (da bi vozili automobil ili biciklo, ne moramo znati na koji način su oni projektovani i implementirani). 
&lt;br /&gt;
Enkapsulacija je podržana kroz kreiranje korisnički-definisanih tipova - tj. klasa.  
&lt;br /&gt;
Dakle, možemo manipulisati sa objektom neke klase, a da ne znamo njegove promenljive (može se kontrolisati vidljivost članica klase).
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Inheritance&lt;/span&gt; - odnosi se na kreiranje nove klase, koja predstavlja proširenje neke postojeće klase. Na primer, ukoliko imamo klasu &amp;quot;prevozno sredstsvo&amp;quot;, možemo iz nje izvesti podklase (&lt;span style=&quot;font-style: italic&quot;&gt;derived classes&lt;/span&gt;) &amp;quot;Automobil&amp;quot;, &amp;quot;Motorcikl&amp;quot; i druge. Svaka od podklasa je specijalizovana na neki način, sa dodatnim promenljivim i/ili metodama (dok je nadklasa opštija).
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Polymorphism&lt;/span&gt; - se zasniva na ideji na objekti različitih klasa mogu uraditi &amp;quot;pravu stvar&amp;quot;. Na primer, metodom &amp;quot;nagaziDoDaske&amp;quot;, naglo će ubrzati i objekat klase Kamion i objekat klase Automobil.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Library&lt;/span&gt; - programi se, tipično, kreiraju tako što se jedan ili više objektnih datoteka povezuju sa bibliotekama. Biblioteke mogu biti standardne (koje dolaze uz kompajler), korisnički napravljene i predstavljaju skup klasa ili metoda, koje ce biti uključene u neki program. 
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Parametar vs argument&lt;/span&gt;: parametar predstavlja deklaraciju tipa vrednosti koji će primiti neka metoda. Argument predstavlja konkretnu vrednost koja se prosleđuje metodi. Mnogo programeri, ova dva termina posmatraju kao sinonime (mada postoji jasna tehnička razlika).
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Trivia/Napomene&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* Kompajliran i interpretiran kod:
&lt;br /&gt;

&lt;br /&gt;
- kompajliran program je brži od interpretiranog (budući da je program preveden u mašinski jezik)
&lt;br /&gt;
- kompajliran program se može pokretati i bez prisustva kompajlera, dok je kod interpretiranih programa neophodno prisustvo interpretera na računaru.
&lt;br /&gt;
- neki programski jezici imaju tzv. &lt;span style=&quot;font-style: italic&quot;&gt;Runtime Interpreter&lt;/span&gt; (na primer &lt;span style=&quot;font-style: italic&quot;&gt;Java Virtual Machine&lt;/span&gt;)
&lt;br /&gt;

&lt;br /&gt;
* Operativni sistem Symbian je rađen u C++
&lt;br /&gt;

&lt;br /&gt;
* neki kompajleri zahtevaju i prototip za metodu (tj. funkciju) &lt;span style=&quot;font-weight: bold&quot;&gt;main&lt;/span&gt;. Tada se neposredno pre definisanja &lt;span style=&quot;font-weight: bold&quot;&gt;main&lt;/span&gt; metode treba dodati:  &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;int main();&lt;/span&gt;&amp;quot; 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* starije &lt;span style=&quot;font-weight: bold&quot;&gt;include&lt;/span&gt; direktive su imale ovakvu sintaksu: &lt;span style=&quot;color: blue&quot;&gt;#include &amp;lt;iostream.h&amp;gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Moderne verzije kompajlera koriste sledeću sintaksu:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#include &amp;lt;iostream&amp;gt;
&lt;br /&gt;
using namespace std;&lt;/code&gt;
&lt;br /&gt;
// dakle, mora se referencirati i odgovarajući namespace.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* &lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;text-decoration: underline&quot;&gt;defaults&lt;/span&gt;&lt;/span&gt; (&lt;span style=&quot;font-style: italic&quot;&gt;podrazumevane vrednosti&lt;/span&gt;)
&lt;br /&gt;
- ukoliko u metodi ne navedemo direktivu &lt;span style=&quot;font-weight: bold&quot;&gt;return&lt;/span&gt;, automatski će se vratiti &lt;span style=&quot;font-weight: bold&quot;&gt;void&lt;/span&gt; (nema vrednosti).
&lt;br /&gt;
- ukoliko ne navedemo koji &lt;span style=&quot;text-decoration: underline&quot;&gt;tip povratne vrednosti&lt;/span&gt; vraća neka metoda, default je &lt;span style=&quot;font-weight: bold&quot;&gt;int&lt;/span&gt;. 
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* &lt;span style=&quot;font-weight: bold&quot;&gt;escape character&lt;/span&gt;: &lt;span style=&quot;color: red&quot;&gt;\&lt;/span&gt;
&lt;br /&gt;
&amp;quot;\&amp;quot; je specijalni karakter koji menja značenje karaktera koji se nalazi neposredno iza njega. U primerima se često koristi kombinacija &lt;span style=&quot;color: blue&quot;&gt;\n&lt;/span&gt; sa prelazak u novi red i &lt;span style=&quot;color: blue&quot;&gt;\t&lt;/span&gt; za umetanje taba (razmaka). Evo nekih kombinacija:
&lt;br /&gt;

&lt;br /&gt;
&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* &lt;span style=&quot;font-weight: bold&quot;&gt;kastovanje&lt;/span&gt;: &lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;(pretpostavimo da je x tipa int)&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Citat:&lt;/span&gt;//stari stil
&lt;br /&gt;
float a = (float)x;
&lt;br /&gt;

&lt;br /&gt;
// noviji stil kastovanja
&lt;br /&gt;
float b = static_cast&amp;lt;float&amp;gt;(y);&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
* Kada se dostigne maksimalna vrednost integera:
&lt;br /&gt;
--&amp;gt; kreće se sa brojanjem ispočetka! &lt;span style=&quot;font-style: italic&quot;&gt;Unsigned&lt;/span&gt; integer brojanje otpočinje od nule, a &lt;span style=&quot;font-style: italic&quot;&gt;signed&lt;/span&gt; počinje od najmanje negativne vrednosti (npr. :-32768).
&lt;br /&gt;

&lt;br /&gt;
* naredba if:
&lt;br /&gt;
&lt;span style=&quot;color: blue&quot;&gt;if (x)&lt;/span&gt; je isto što i: &lt;span style=&quot;color: blue&quot;&gt;if(x!=0)&lt;/span&gt;</description>
	<pubDate>Thu, 26 Apr 2012 00:16:55 +0100</pubDate>
</item>
</channel>
</rss>

