VIŠEKORISNIČKA IGRA POGAĐANJA ZA OPERACIJSKI SUSTAV ANDROID

Similar documents
Podešavanje za eduroam ios

1. Instalacija programske podrške

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

Upute za korištenje makronaredbi gml2dwg i gml2dgn

SAS On Demand. Video: Upute za registraciju:

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

Windows Easy Transfer

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Tutorijal za Štefice za upload slika na forum.

Port Community System

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

Mindomo online aplikacija za izradu umnih mapa

PROJEKTNI PRORAČUN 1

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

Office 365, upute za korištenje elektroničke pošte

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

DZM Aplikacija za servise

Otpremanje video snimka na YouTube

BENCHMARKING HOSTELA

ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME

Uvod u relacione baze podataka

Upute za VDSL modem Innbox F60 FTTH

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

UPUTE ZA INSTALACIJU PROGRAMA FINBOLT 2007 tvrtke BOLTANO d.o.o.

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Nejednakosti s faktorijelima

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

USB Key Uputa za instaliranje programske potpore i registraciju korisnika

Informacijski sustav primarne zdravstvene zaštite Republike Hrvatske

Lokacijska aplikacija za pametni sat s operacijskim sustavom Android Wear

MOBILNA APLIKACIJA MOJE DIJETE

za STB GO4TV in alliance with GSS media

Regshot. Mateo Šimonović,

Bušilice nove generacije. ImpactDrill

Use-case diagram 12/19/2017

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI

ANDROID KLIJENTSKA APLIKACIJA ZA CENTRALIZIRANO NARUČIVANJE HRANE U OSIJEKU

Udaljeno upravljanje tablet računalima za edukaciju

UPUTE ZA KORIŠTENJE HOME.TV TO GO USLUGE

STRUČNA PRAKSA B-PRO TEMA 13

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

Aplikacija za dojavu događaja na uređajima s operacijskim sustavom Android

SelmetAssetBO. Aplikacija za popis osnovnih sredstava na osobnom računalu. Korisnički priručnik. ver. RGN d.o.o. datum zadnje izmjena:

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO KRISTIAN LEINER

Upravljanje kvalitetom usluga. doc.dr.sc. Ines Dužević

RANI BOOKING TURSKA LJETO 2017

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

Direktan link ka kursu:

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET!

Web usluge. Web usluge

IZRADA WEB APLIKACIJE U PROGRAMSKOM JEZIKU C#

WEB APLIKACIJA S BAZOM RECEPATA

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

UPRAVLJANJE KORISNIČKIM RAČUNIMA U RAILS OKRUŽENJU

3. Obavljanje ulazno-izlaznih operacija, prekidni rad

UTJECAJ BOJE U DIGITALNIM MEDIJIMA NA DOŽIVLJAJ DIZAJNA I KORISNIČKO ISKUSTVO

RAČUNALNA APLIKACIJA ZA RFID EVIDENCIJU STUDENATA NA NASTAVI

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU OGLASA

Visoka škola strukovnih studija za informacione i komunikacione tehnologije. SMS Gateway. Dr Nenad Kojić

Korak X1 X2 X3 F O U R T W START {0,1}

Uvod u MS Word. Nova znanja. Novi pojmovi

SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA. Stručni studij. IoT I PAMETNA KUĆA

Što su over-the-top usluge i kako utječu na komunikaciju?

ODRICANJE OD ODGOVORNOSTI Ovaj je Priručnik povjerljivo, neobjavljeno vlasništvo društva Intesa Sanpaolo Card i ovime se ne prenose prava vlasništva.

Uvod u micro:bit Tomislav Pandurić

PORTAL ZA UDOMLJAVANJE KUĆNIH LJUBIMACA

REALIZACIJA WEB APLIKACIJE ZA POSLOVANJE TURISTIČKE AGENCIJE

Pravljenje Screenshota. 1. Korak

Osmišljavanje računalnog oblaka

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

Iskustva video konferencija u školskim projektima

FAQ - najčešće postavljana pitanja. PBZ Wave2Pay usluga

Advertising on the Web

WWF. Jahorina

Upravljanje programskim okvirom za evolucijsko računanje

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

IZRADA RAČUNALNE IGRE KORISTEĆI GAMEMAKER:STUDIO

MEĐIMURSKO VELEUČILIŠTE ČAKOVEC STRUČNI STUDIJ RAČUNARSTVA MARKO KNOK REDUNDATNOST I BALANSIRANJE OPTEREĆENJA WEB POSLUŽITELJA ZAVRŠNI RAD

Office 365. Priručnik. Zagreb, 2016.godina

Upotreba selektora. June 04

ZAVOD ZA AUTOMATIKU I PROCESNO RAČUNARSTVO FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SVEUČILIŠTE U ZAGREBU HTTP PROTOKOL OTVORENO RAČUNARSTVO

Babylon - instalacija,aktivacija i rad sa njim

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU STRUČNI STUDIJ RAČUNARSTVA SMJER: MREŽNO INŽENJERSTVO MATKO MARTEK MREŽNA KONFIGURACIJA I PROTOKOLI ZA POVEZIVANJE

Sveučilište Jurja Dobrile u Puli. Fakultet ekonomije i turizma. Dr. Mijo Mirković. Igor Anušić MOBILNO OGLAŠAVANJE. Završni rad. Pula, 2017.

Osigurajte si bolji uvid u poslovanje

Sadržaj 1 UVOD KRATKI PREGLED VAŽNIJIH OPERACIJSKIH SUSTAVA SYMBIAN... 3

CRNA GORA

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

Transcription:

SVEUČ ILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 5158 VIŠEKORISNIČKA IGRA POGAĐANJA ZA OPERACIJSKI SUSTAV ANDROID Lovro Pejić Zagreb, lipanj 2017.

Hvala svima koji su bili uz mene i pomogli mi na mom putu k osvajanju akademske titule.

Sadržaj Uvod... 1 1. Operacijski sustav Android... 2 1.1 Početak i razvoj operacijskog sustava Android... 2 1.2 Arhitektura operacijskog sustava Android... 2 1.2.1 Aplikacijski sloj... 4 1.2.2 Sloj aplikacijskog okvira... 4 1.2.3 Programske knjižnice... 4 1.2.4 Radno okruženje Android... 4 1.2.5 Linux jezgra... 5 1.3 Struktura Android aplikacija... 5 1.3.1 Aktivnosti... 9 1.3.2 Usluge... 11 1.3.3 Primatelji namjera... 11 1.3.4 Pružatelji usluga... 12 1.3.5 Namjere... 12 2. Firebase... 13 2.1 Firebase definicija... 13 2.2 O Firebase-u... 14 2.3 Firebase usluge... 14 2.3.1 Firebase Analytics... 17 2.3.1 Firebase Cloud Messaging... 17 2.3.3 Firebase Authentication... 18 2.3.4 Firebase RealTime database... 18 2.3.5 Firebase Storage... 19 2.3.6 Firebase Hosting... 19 3. Višekorisnička igra pogađanja... 20 3.1 Ideja aplikacije... 20 3.2 Izvedba aplikacije... 21 3.3 Upute za instalaciju... 35

Zaključak... 37 Literatura... 38 Sažetak... 39 Summary... 40 Ključne riječi... 41 Keywords... 41

Uvod U današnje vrijeme višekorisničke aplikacije (multiplayer) pronašle su i hrabro drže svoje mjesto na svjetskom tržištu. Osjećaj nadmetanja protiv druge osobe ne može zamijeniti niti jedna igra protiv računala (singleplayer), kao ni osjećaj zadovoljstva u timskim višekorisničkim igrama prilikom ostvarivanja zajedničkog cilja. U ovom radu obradit će se proces izrade jedne višekorisničke igre pogađanja za operacijski sustav Android kao i ostalih alata potrebnih za njezinu izradu. U prvom poglavlju opisuje se operacijski sustav Android, nakon čega u drugom poglavlju slijedi opis tehnologije Firebase, te konačno u trećem poglavlju se daje pogled na višekorisničku aplikaciju i njene najzanimljivije dijelove u kojima se prikazuje oblikovanje i izvedba programskog rješenja kao i demonstracija ostvarenih funkcionalnosti. 1

1. Operacijski sustav Android U ovom poglavlju obradit će se nastanak i razvoj operacijskog sustava Android. Nakon početnog dijela prikazuje se arhitektura samog operacijskog sustava, te u konačnici osnovni prikaz strukture Android aplikacije sa svojim komponentama i grafičkim korisničkim sučeljem. 1.1 Početak i razvoj operacijskog sustava Android Operacijski sustav Android svoj nastanak i razvoj temelji na operacijskom sustavu Linux, no primarno je dizajniran za prijenosne uređaje sa zaslonom osjetljivim na dodir poput smartphonea, tableta i drugih pametnih uređaja. Android je prvobitno razvijen od tvrtke Android, Inc. koja ga je konstruirala s ciljem razvoja programa za pametne mobilne uređaje koji bi uzimali u obzir korisničke postavke i njihovu lokaciju. Njihov rad financirao je Google, koji je nedugo zatim i otkupio cijelu tvrtku, te od tada počinju spekulacije o ulasku Googlea na tržište pametnih telefona. Najvažniji pojmovi koji se vežu uz Android su otvorenost i neovisnost pošto je s Androidom stvoren jedan novi odnos između proizvođača sklopovlja i proizvođača programske potpore koji su do tada najčešće radili unutar jedne tvrtke i zajedničkim snagama razvijali samo svoje uređaje. Prvi uređaj s Android operacijskim sustavom Google je distribuirao pod Apache licencom, a prodan je u listopadu 2008. godine. 1.2 Arhitektura operacijskog sustava Android Arhitektura operacijskog sustava Android sastoji se od nekoliko slojeva. Svaki sloj sastoji se od različitih programskih komponenti koje kada rade skupa pružaju sve potrebne usluge sloju u kojem se nalaze. Svaki sloj niže razine pruža usluge slojevima viših razina. 2

Na sljedećoj fotografiji (slika 1.) prikazana je arhitektura Androida s pripadnim slojevima i odgovarajućim programskim komponentama. Slika 1. Arhitektura operacijskog sustava Android [8] Slojevi Android arhitekture, redom od najvišeg do najnižeg su: Aplikacijski sloj Sloj aplikacijskog okvira (application framework) Programske knjižnice Radno okruženje Android Linux jezgra 3

1.2.1 Aplikacijski sloj Aplikacijski sloj nalazi se na samom vrhu hijerarhije slojeva arhitekture operacijskog sustava Android i u njemu se nalaze same aplikacije koje su ugrađene u operacijski sustav (kalkulator, kamera, ) ali i ostale aplikacije koje je korisnik odlučio instalirati. 1.2.2 Sloj aplikacijskog okvira Sloj aplikacijskog okvira drugi je po redu sloj u hijerarhijskoj strukturi slojeva operacijskog sustava Android. U njemu se nalaze blokovi s kojima aplikacije imaju direktnu komunikaciju i aplikacije koje upravljaju osnovnim funkcijama uređaja, kao memorijskim resursima, glasovnim pozivima i tome slično. 1.2.3 Programske knjižnice Idući sloj u hijerarhiji su Androidove programske knjižnice. U ovom sloju nalaze se biblioteke koje uređajima omogućavaju upravljanje različitim tipovima podataka. Većina ih je pisana u C i C++ i specifične su za određeni hardver, te se lako prevode u druge programske jezike, a osnovna namjena im je pružanje specifičnih usluga ostalim slojevima na višim razinama. 1.2.4 Radno okruženje Android Radno okruženje Android sastoji se od virtualnog stroja Dalvik (DVM Dalvik virtual machine) i jezgrenih programskih knjižnica. Dalvik virtualni stroj je zapravo java virtualni stoj (JVM Java virtual machine) koji se koristi u Android uređajima za pokretanje aplikacija, no poseban je po tome što je prilagođen za pokretne uređaje s ciljem bolje organizacije i rasporeda resursa, poput radne memorije, trajanja baterije i slično. 4

1.2.5 Linux jezgra Linux jezgra nalazi se na dnu hijerarhije slojeva arhitekture operacijskog sustava Android i predstavlja osnovni sloj na kojem su zasnovani svi viši slojevi u hijerarhiji. Cijeli Android operacijski sustav zasnovan je na Linux 2.6 Kernel-u s nekim internim arhitekturnim promjenama. U ovom sloju nalaze se sve poveznice s hardverom uređaja i upute kako njime upravljati (driveri). Driveri su upravljački programi koji komuniciraju i upravljaju hardverom. Sve naredbe viših slojeva u konačnici se pretaču preko ovog sloja i njegovih instrukcija prema fizičkim komponentama uređaja. 1.3 Struktura Android aplikacija Kada Android aplikacije promatramo s jednog vrlo osnovnog gledišta možemo uočiti da se svaka Android aplikacija zapravo sastoji od dva ključna dijela (tu su još i nekakve ključne datoteke, poput manifesta, no one će biti obrađene u kasnijem dijelu rada). Prvi dio odnosi se na tzv. Java datoteke, u kojima se nalazi programski kod i logika same aplikacije. Ti java dokumenti pisani su u programskom jeziku Java i u njima zapravo piše što će aplikacija raditi i kako će se ponašati u nekom trenutku. Drugi dio odnosi se na dizajn i izgled grafičkog korisničkog sučelja, a pisan je u jeziku XML (Extensible markup language). Popularne razvojne okoline kao što su Android Studio nude mogućnost crtanja grafičkog korisničkog sučelja putem posebnih alata, no međutim tu funkcionalnost uglavnom koriste početnici koji još nisu svladali XML, a i važno je napomenuti da se neke stvari koje si je programer zamislio jednostavno ne mogu precizno nacrtati pomoću tih alata baš kako je programer želio, stoga je ipak korisno poznavati XML. Android SDK (Software development kit) alati kompajliraju (prevode) kod, skupa sa svim ostalim datotekama aplikacije u jedinstvenu arhivu s.apk ekstenzijom. Sav kod, zajedno s pripadnim datotekama unutar te arhive čini jednu aplikaciju i to je datoteka koju Android uređaji koriste prilikom instaliranja aplikacije. Za kraj uvoda u ovo poglavlje važno je još samo napomenuti da svaka aplikacija instalirana na neki Android uređaj živi zasebno, bez obzira i utjecaja na ostale aplikacije instalirane na tom uređaju. 5

Na sljedećim fotografijama nalazi se primjer Java koda (slika 2.), te primjer XML koda unutar neke Android aplikacije (slika 3.). Slika 2. Primjer Java koda 6

Slika 3. Primjer XML koda Raspored direktorija i datoteka svake Android aplikacije zapravo je jedna stablasta struktura u kojoj se nalaze komponente koje programer uređuje, briše ili dodaje prilikom izrade aplikacije kreirajući pritom željeno grafičko sučelje, te različite funkcionalnosti i zadaće pojedinih komponenti. Neki od navedenih direktorija su: src/ - koji sadrži pakete s Java datotekama u kojima se nalazi logika aplikacije res/ - koji sadrži dijelove koji su uglavnom vezani uz dizajn, kao na primjer slike, postavke fonta, boja, animacije, glazba, videozapisi, i tome slično. Manifests/ - sadrži AndroidManifest.xml datoteku i uglavnom mu je to glavna zadaća. Tu datoteku posjeduje svaka aplikacija i ona je vrlo važna za njezin rad, pošto su zapisi u njoj veoma važni. U njoj se recimo navode aktivnosti koje se koriste unutar aplikacije 7

kako bi ih sustav znao prepoznati, zatim tu su još i različite dozvole koje su aplikaciji potrebne (primjerice dozvola za spajanje na internet, slanje i primanje poruka itd.). Uz sve to, u njoj se još navode i nekakva ograničenja koje se odnose na pojedinu aktivnost ili na aplikaciju u cjelini (kao primjer toga možemo navesti ograničenje na zakretanje zaslona koje se proizvoljno može uključiti ili isključiti). Build gradle direktorij u ovom direktoriju nalaze se dvije build gradle datoteke (veoma važne!) u kojima programer među ostalim navodi i vanjske biblioteke koje će se koristiti unutar aplikacije (npr. Google Play services api, Firebase api,..). Prilikom izgradnje aplikacije potrebne datoteke iz tih biblioteka skidaju se s interneta i ugrađuju u aplikaciju. Na sljedećoj fotografiji prikazana je struktura direktorija Android aplikacije. Slika 4. Prikaz stablaste strukture direktorija Android aplikacije 8

Svaku Android aplikaciju čini nekoliko komponenti koje po potrebi komuniciraju s ostalim komponentama unutar iste ili drugih aplikacija. Postoje četiri kategorije komponenti koje se međusobno razlikuju po namjeni i po životnom ciklusu. To su: Aktivnosti Usluge Primatelji namjera Pružatelji usluga Ove komponente su osnovni građevni blokovi Android aplikacija. Svaka od njih ima određenu ulogu i svoj životni ciklus. Temeljito poznavanje rada ovih komponenti od velike je važnosti s obzirom na to da putem njih programer može obaviti sve operacije koje su mu potrebne kako bi ostvario željenu funkcionalnost. Dodatno, poznato je da direktna komunikacija (pristup) između dvaju aplikacija na nekom uređaju nije moguća, no gore navedene komponente pružaju usluge koje tu komunikaciju (na malo drugačiji način tj. preko iskazivanja namjera) ipak omogućuju. 1.3.1 Aktivnosti Aktivnost predstavlja jedan ekran s grafičkim korisničkim sučeljem. Svaka aplikacija može se sastojati od jedne ili više aktivnosti koje rade skupa (čine smislenu cjelinu), ali su međusobno neovisne. Unutar aplikacije može biti osmišljeno više aktivnosti, no u jednom trenutku u nekom dijelu aplikacije na ekranu može biti prikazana samo jedna aktivnost. Svaka aplikacija trebala bi imati barem jednu aktivnost, kako bi korisnik išta vidio i mogao izvršiti bilo kakvu interakciju s aplikacijom. Aktivnost koja se pokreće prilikom pokretanja aplikacije najčešće nazivamo početna aktivnost (Main activity). 9

Svaka aktivnost može se naći u šest stanja. U jednom trenutku aktivnost može biti u samo jednom stanju. Važno je napomenuti da postoje stanja u kojima se u nekom trenutku može nalaziti samo jedna aktivnost. Ta stanja su: stanje izgradnje, stanje pokretanja, stanje izvođenja, stanje pauziranja, stanje zaustavljanja i stanje uništavanja aktivnosti. Prilikom Ulaska u svako od navedenih stanja pokreću se neke ugrađene metode vezane uz trenutno stanje određene aktivnosti. Te metode se mogu nadjačati i modificirati po želji programera s ciljem odrađivanja još nekog dodatnog posla ukoliko je to potrebno (npr. odjaviti korisnika iz aplikacije prilikom gašenja aplikacije). Te metode vidljive su na sljedećoj fotografiji (slika 5.) koja ujedno prikazuje i životni vijek aktivnosti (pošto su te metode usko vezane uz njega). Slika 5. Prikaz životnog ciklusa i metoda svake aktivnosti [9] 10

Popis ugrađenih metoda i njihova funkcionalnost: oncreate() pokreće se prilikom stvaranja aktivnosti onstart() pokreće se prilikom pokretanja aktivnosti onpause() pokreće se kada aktivnost pređe u stanje pauze onresume() pokreće se kada aktivnost nastavi s radom onrestart() pokreće se kada se aktivnost ponovno pokrene onstop() pokreće se prilikom zaustavljanja aktivnosti ondestroy() pokreće se prilikom uništavanja aktivnosti 1.3.2 Usluge Usluga je komponenta koja se razlikuje od aktivnosti prvenstveno po tome što ne pruže grafičko korisničko sučelje već radi u pozadini, a može izvoditi uobičajene postupke no i veoma dugotrajne i zahtjevne zadatke. Nikad se ne izvodi na grafičkoj dretvi (jer je to loša praksa), pošto ne radi s grafičkim komponentama, nego na nekoj drugoj zasebnoj dretvi. S uslugama je jednostavnije raditi nego s aktivnostima (manje metoda, jednostavnije), no one zahtijevaju veći oprez. 1.3.3 Primatelji namjera Primatelj namjera je komponenta koja je zadužena za primanje objavljenih namjera. Prilikom zaprimanja određene namjere ona na primjer može inicirati obavijest u statusnoj traci, ažurirati elemente prilikom gašenja zaslona, inicirati prikaz obavijesti, poruku o slaboj bateriji i drugo, no najčešće služi samo kao poveznica između drugih komponenata. Primatelj namjera nema vlastito grafičko korisničko sučelje i nikad ne odrađuje znatnu količinu posla. 11

1.3.4 Pružatelji usluga Pružatelj sadržaja je komponenta koja upravlja pristupom različitih podatkovnih struktura koje se trajno pohranjuju u uređaju. Koristi se za prijenos podataka između aplikacija, odnosno za pohranu podataka u datoteke, na internet (uz dozvolu operacijskog sustava), bazu podataka, i slično. 1.3.5 Namjere Namjera je u suštini događaj, tj. poruka koje je namijenjena za aktiviranje odgovarajućih komponenti unutar aplikacije. Namjera se pokreće tako da se instancira objekt klase Intent u kojem se navodi akcija koja se želi inicirati (na primjer pokrenuti novu aktivnost). Prilikom pokretanja svake namjere navodi se akcija koju je potrebno izvršiti, te opcionalno primatelj namjere. Ukoliko je primatelj namjere zadan namjera se odmah može izvršiti, s druge strane, ukoliko je neodređen, on se određuje interno unutar aplikacije. Najbolji primjer toga je isječak koda kojim programer želi pokrenuti novu aktivnost: Intent intent = new Intent(MainActivity.this, GameActivity.class); startactivity(intent); Pri stvaranju novog objekta namjere u priloženom kodu prvi parametar predstavlja pozivatelja namjere, odnosno od njega se uzima kontekst kako bi se namjera imala nad čime pozvati, a drugi predstavlja akciju koju je potrebno izvršiti, odnosno poruku koju je potrebno prenijeti. U ovom slučaju to je pokretanje nove aktivnosti. Aktivnost se pokreće postupkom startactivity(), a ukoliko se u prethodnoj aktivnosti očekuje rezultat prilikom pokretanja nove aktivnosti, onda se pokreće postupkom startactivityforresult(). 12

2. Firebase Slika 6. Firebase [10] Na Firebase web stranici stoji motivacijska rečenica: Firebase helps you build better mobile apps and grow your business. Prevedeno na hrvatski to bi značilo: Firebase vam pomaže izgraditi bolje mobilne aplikacije i unaprijediti vaše poslovanje. Ova motivirajuća rečenica na jedan vrlo neobičan način privlači pažnju mnogih korisnika, iako zapravo uopće ne govori o tome što je to Firebase i čemu zapravo služi. U sljedećem poglavlju definirat ćemo Firebase i navesti njegove najbitnije usluge, koje ćemo zatim ukratko i opisati. 2.1 Firebase definicija Firebase je mobilna platforma koja omogućuje da brzo razvijete visokokvalitetne aplikacije, izgradite ažuriranu bazu korisnika i ostvarite veću zaradu. Platforma uključuje nekoliko dobro integriranih značajki koje možete kombinirati, uključujući pozadinske programe za mobilne uređaje, analizu te alate za razvoj i unovčavanje aplikacija za maksimalno povećanje uspjeha aplikacije. (link: https://support.google.com/admob/answer/6360054?hl=hr) 13

2.2 O Firebase-u Firebase je tvrtka iz San Francisca (Kalifornija) koja pruža backend usluge aplikacijama različitih namjena. Tvrtka proizvodi veliki broj proizvoda namijenjenih za programere mobilnih i web aplikacija. Tvrtku Firebase su osnovali Andrew Lee i James Tamplin 2011. godine i svoj prvi proizvod, bazu podataka za rad u stvarnom vremenu, plasirali na tržište već u prvoj polovici 2012. godine. S obzirom na kvalitetu svojih usluga tvrtka je relativno brzo napredovala, te uskoro nadodala sve više i više novih funkcionalnosti. U 10. mjesecu 2014. godine Firebase je objavio pripojenje s Google-om, koji ga je kupio, ali nisu objavili za koju cijenu. 2.3 Firebase usluge Kao što je već u prethodnom poglavlju navedeno, Firebase se relativno brzo razvijao. U Firebase platformu do danas je uključen poprilično velik broj usluga, a u gotovo svakoj modernoj aplikaciji može se pronaći mjesto za neke od njih. U ovom poglavlju govorit će se o nekim od najvažnijih i najpoznatijih od tih usluga. To su primjerice: Firebase Analytics Firebase Cloud Messaging Firebase Authentication Firebase RealTime database Firebase Storage Firebase Hosting U sljedećim poglavljima navedene funkcionalnosti bit će ukratko opisane, ali prije toga važno je još nadodati da je uključivanje bilo koje od ovih funkcionalnosti u Android aplikaciju veoma jednostavno. Koristeći moderne razvojne okoline potrebno je svega nekoliko klikova mišem da bi 14

se Firebase usluge dodale u projekt. Dodatno, korištenje tih usluga poprilično je lako s obzirom na bogatu dokumentaciju koju je Google pripremio za svaku od njim. Slijedi nekoliko fotografija o tome. Slika 7. Firebase usluge 15

Slika 8. Uključivanje Firebase usluga u projekt koristeći Android Studio Slika 9. Primjer bogate Firebase dokumentacije 16

2.3.1 Firebase Analytics Google Analytics for Firebase is a free app measurement solution that provides insight on app usage and user engagement. Google Analytics jedna je od Firebase usluga koja je vrlo važna za napraviti uspješnu aplikaciju. Firebase nudi različite analitičke alate koji to pospješuju postići. Tako postoje alati koji govore tko su korisnici aplikacije, što ih zapravo zanima, koliko često koriste aplikaciju, koliko vremena provode u aplikaciji i tako dalje. Također postoje analitičke usluge koje bilježe uspješnost oglašavanja aplikacije, govore o načinu dijeljenja aplikacije i drugo. Ukratko, Google Firebase Analytics sadrži i objedinjuje sve podatke i statistike koje su razvojnom programeru potrebne na jednom mjestu, a omogućavaju mu da svakom pojedinom korisniku ponudi ono što ga najviše zanima te ga na taj način privuče i zadrži da koristi njegovu aplikaciju. 2.3.1 Firebase Cloud Messaging Firebase Cloud Messaging (FCM) is a cross-platform messaging solution that lets you reliably deliver messages at no cost. Firebase Cloud Messaging besplatna je usluga koja omogućava slanje poruka korisnicima aplikacije koristeći različite platforme. Poruke se mogu slati pojedinačnom uređaju, skupini uređaja, ili u temu, pa te poruke dobivaju samo pretplaćeni uređaji. Cloud Messaging zamišljen je kao sustav za primanje notifikacija unutar aplikacije, no postoje načini kako ga iskoristi i u druge svrhe, no to će biti objašnjeno u jednom od kasnijih poglavlja. Glavna značajka koju je potrebno spomenuti je da Cloud Messaging funkcionira koristeći Cloud Messaging Token, kojeg je potrebno spremiti u bazu podataka na poslužitelju prilikom registracije novog korisnika u aplikaciju. Taj Token kasnije se koristi za slanje poruka s poslužitelja prema svakom pojedinom uređaju. Brzina slanje poruka koristeći Cloud Messaging veoma je zadovoljavajuća (gotovo da je RealTime) isto kao i vjerojatnost isporuke svake poruke. 17

2.3.3 Firebase Authentication Most apps need to know the identity of a user. Knowing a user s identity allows an app to securely save user data in the cloud and provide the same personalized experience across all od the user s devices Firebase Authentication je usluga koja olakšava prijavu korisnika u sustav i korisnicima, ali i samim programerima. Danas velika većina aplikacija zahtjeva prijavu korisnika u sustav kako bi im omogućila dodatne funkcionalnosti, te kako bi sačuvala privatnost njihovih podataka. Tu u priču ulazi Firebase koji omogućava brzu, laku i jednostavnu autentifikaciju korisnika u sustav. Za prijavu nije nužno izgraditi novi korisnički račun, iako je to moguće, već Firebase omogućava prijavu koristeći mnoge druge servise. Prijavu u sustav moguće je izvršiti koristeći Facebook, Twitter, Git Hub ili Google račun. Ekran za prijavu korisnika u sustav programer može izgraditi po želji, koristi gotov ekran za prijavu kojeg je pripremio Google, ili bilo kakvu njegovu modifikaciju pošto je to također dopušteno. Nakon uspješne prijave, korisnik dobiva jedinstveni Firebase ključ koji ga razlikuje od svih ostalih korisnika aplikacije, te mu omogućava pristup njegovim podacima. 2.3.4 Firebase RealTime database Store and sync data with our NoSQL cloud database. Data is synced across all clients in realtime, and remains available when your app goes offline Firebase također pruža usluge korištenja baze podataka, odnosno omogućava pohranu i sinkronizaciju podataka između korisnika u stvarnom vremenu. Ovaj Google-ov alat omogućava korisnicima da na prilično jednostavan i brz način dođu do svojih podataka bez obzira na to koriste li mobilnu aplikaciju ili web, te također pripomaže međusobnoj kolaboraciji korisnika aplikacije. U svakom trenutku prilikom ažuriranja podataka u bazi podataka, podaci se pohranjuju u Firebase Database Cloud i simultano o tome obavještava sve uređaje kojih se ta izmjena tiče (vrijeme za 18

obavještavanje uređaja mjeri se u milisekundama). Što se tiče sigurnosti podataka u bazi podataka, u konzoli pomoću koje se upravlja bazom podataka postoje sigurnosna pravila koja određuju tko može pristupiti kojim podacima, a ta pravila po volji određuje razvojni programer kao i strukturu (stablastu) cijele baze podataka. Dakle moguće je namjestiti da svaki korisnik može pristupiti svim podacima baze podataka (tako da se uklone sva sigurnosna pravila), ili samo svojim podacima. Ta sigurnosna pravila zajedno s cijelom bazom podataka spremaju se na Firebase poslužitelj. 2.3.5 Firebase Storage Cloud Storage is built for app developers who need to store and serve user-generated content, such as photos or videos Firebase Storage omogućava korisnicima da pohrane i podjele svoj sadržaj putem Android aplikacije. Firebase Storage funkcionalnost poprilično je slična Firebase RealTime bazi podataka. Kao i tamo, ovdje se također nalazi datoteka sa sigurnosnim pravilima za dijeljenje i pristup sadržaju, ali prijenos podataka ovdje je puno većeg memorijskog zauzeća i nije u stvarnom vremenu. 2.3.6 Firebase Hosting Firebase Hosting provides fast and secure static hosting for your web app Firebase Hosting je servis za skladištenje statičkog sadržaja, a podržava skladištenje različitih datoteka poput CSS, HTML ili JavaScript datoteka potrebnih za izradu frontenda (grafičkog korisničkog sučelja) web aplikacija. Firebase Hosting je brz, siguran i pouzdan. 19

3. Višekorisnička igra pogađanja U ovom poglavlju opisuje se višekorisnička igra pogađanja za operacijski sustav Android. U prvom potpoglavlju iznijet će se ideja i tema same aplikacije, a nakon toga slijedi potpoglavlje u kojem će biti prikazan tok i sve funkcionalnosti aplikacije. Svaki ključni dio ovog potpoglavlja bit će dokumentiran isječcima iz programskog koda ili fotografijom iz odgovarajuće aktivnosti unutar aplikacije. 3.1 Ideja aplikacije Aplikacija pod nazivom Guess game zamišljena je kao igra vješala modernog doba, odnosno višekorisnička igra pogađanja slova i riječi za Android uređaje u obliku mobilne aplikacije. Svaka igra sastoji se od pogađanja slova te u konačnici zadanih pojmova među pet slučajno odabranih riječi koje je odredio poslužitelj, te na taj način igrači inkrementalno zarađuju bodove. Igrač koji na kraju igre ima veći broj bodova je pobijedio. Ukoliko jedan od igrača napusti aplikaciju automatski je izgubio, dok je drugi igrač završio kao pobjednik. Sama igra bazira se na potezima (tzv. turn-based game), a koristi različite tehnologije poput Firebase RealTime database-a, Firebase Cloud Messaging-a, te više različitih internet protokola. Svi dijelovi aplikacije (uključujući i tehnologije) koji do sada nisu objašnjeni, bit će prikazani u sljedećem poglavlju. 20

Slika 10. Prvi pogled na aplikaciju Guess Game 3.2 Izvedba aplikacije Prije početka objašnjavanja izvedbe ove igre, potrebno je za početak navesti koji sve uređaji sudjeluju u njoj, odnosno koje sve komponente ovdje postoje, te kako one uopće komuniciraju. Za odigravanje igre u ovoj aplikaciji potrebna su dva mobilna uređaja s operacijskim sustavom Android. Svaki uređaj nalazi se kod jednog korisnika i oni predstavljaju igrače (međusobni suparnici) potrebne za odigravanje jedne igre. Dio aplikacije kojeg klijenti imaju na svojim uređajima napisan je u programskom jeziku Java i naziva se korisnički (frontend) dio aplikacije. Međutim za rad ove aplikacije potreban je i poslužiteljski (backend) dio aplikacije, a za razliku od korisničkog dijela napisan je u programskom jeziku JavaScript. Poslužitelj u ovoj aplikaciji ima dvije glavne namjene, a to je da služi za registraciju novih korisnika u sustav i spremanje Firebase Cloud Messaging Tokena, te služi kao posrednik u komunikaciji između uređaja. 21

Cijena ta komunikacija između uređaja unutar igre odvija se u tri koraka, a oni su sljedeći: Prvi uređaj šalje svoju poruku poslužitelju koristeći protokol HTTP (HyperText Transfer Protocol). Pri slanju te poruke šalje se i korisničko ime prijatelja kojem je poruka namijenjena. Nakon primanja poruke poslužitelj ju koristeći protokol XMPP (Extensible Messaging and Presence Protocol) prosljeđuje Firebase poslužitelju, zajedno s prijateljevim Firebase Tokenom, kojeg je dohvatio iz baze podataka na temelju pristignutog korisničkog imena. Nakon što je Firebase poslužitelj primio poruku on je koristeći FCM (Firebase Cloud Messaging) pomoću Tokena šalje na uređaj za kojeg je ta poruka namijenjena. Primjer komunikacije između uređaja (slika 11.) vidljiv je na sljedećoj fotografiji: Slika 11. Prikaz izvedbe komunikacije između uređaja 22

Ovo je samo primjer komunikacije između dva Android uređaja, koja se događa iz poteza u potez za vrijeme trajanja igre. Unutar same aplikacije postoji još modela komuniciranja no o tome malo kasnije. Sada kada su komponente aplikacije i osnovni koncepti funkcioniranja igre objašnjeni potrebno je objasniti cijeli tok aplikacije. Prilikom svakog pokretanja aplikacije korisniku se prikaže početni ekran s nevidljivom tipkom preko cijelog ekrana na kojoj trepereći piše Tap To Start (slika 12.) i kreće melodija aplikacije (ako ona nije isključena u postavkama, no o tome u nastavku). Nakon što je korisnik kliknuo tu tipku provjerava se da li je taj korisnik već od prije registriran u sustav ili ne, te o tome ovisi što će mu se sljedeće prikazati na ekranu. Ako je registriran od prije, automatski će biti propušten na ekran kojeg vidi prijavljeni korisnik (Slika 15). S druge strane, ako je ovo njegovo prvo korištenje aplikacije od njega će se zatražiti da odabere svoje korisničko ime pod kojim će ga ostali korisnici moći vidjeti u sustavu (Slika 13). Nakon odabira korisničkog imena slijedi provjera prema poslužitelju da li je korisničko ime dostupno ili zauzeto. Ukoliko je zauzeto korisniku će to biti dojavljeno (Slika 14.) te će ga se zatražiti da proba unijeti drugačije korisničko ime. Nakon uspješno unesenog novog korisničkog imena (ono koje je slobodno), provest će se automatska registracija novog korisnika u sustav te će ga se automatski prijaviti i prikazati mu ekran prijavljenog korisnika (Slika 15). U nastavku slijedi nekoliko fotografija o cijeloj ovoj situaciji. 23

Slika 12. Slika 13. Početni ekran Ekran za odabir korisničkog imena Slika 14. Slika 15. Korisničko ime već zauzeto Ekran prijavljenog korisnika 24

Na sljedećim fotografijama nalaze se najvažniji isječci koda kojima se demonstriraju gore ostvarene funkcionalnosti. Pošto je programska izvedba za sve gore navedeno poprilično slična prikazat ćemo programski kod samo za slučaj registracije novog korisnika. Slika 16. Prikaz koda za registraciju novog korisnika na klijentu Slika 17. Prikaz koda za registraciju novog korisnika na poslužitelju 25

Nakon uspješne prijave u sustav korisnik ima nekoliko gumbova na raspolaganju za pritisnuti. Ti gumbići su sljedeći, redom: Play (sredina ekrana) How to play (sredina ekrana) Quit (sredina ekrana) Settings (gore desno) Information (gore desno) Kako bismo odabrali protivnika i započeli novu igru potrebno je kliknuti na gumb Play, no pošto o tome ima još najviše za govoriti prvo ćemo prokomentirati preostale funkcionalnosti, pa krenimo: Pritiskom na gumb How to play otvara se nova aktivnost u kojoj ukratko piše koja su pravila te kako započeti novu igru. Pritiskom na gumb Quit korisnik je odlučio izaći iz aplikacije. Odabirom gumba Settings otvara se nova aktivnost (Slika 18.) u kojoj korisnik može promijeniti svoju lozinku (slika 19.). Ona je inicijalno postavljena na 7777, a služi tome kako bi se spriječilo nepoznatim korisnicima da šalju zahtjeve za igrom trenutnom korisniku aplikacije. Osim toga, korisnik još može uključiti ili isključiti melodiju aplikacije. Nakon bilo kakvih izmjena potrebno je kliknuti na Apply Changes kako bi se izmjene uistinu i provele. S druge strane, ako je korisnik odustao od napravljenih izmjena dovoljno je kliknuti gumb za povratak na samom uređaju. 26

Slika 18. Slika 19. Prikaz aktivnosti s postavkama Ekran za promjenu lozinke Prije nego li krenemo na odabir protivnika i pokretanje same igre, spomenimo još i gumb Information kojim se otvara nova aktivnost koja prikazuje informacije o razvojnom programeru koji je napravio aplikaciju. (Slika 20.) Slika 20. Autor aplikacije 27

Konačno, kada korisnik klikne na gumb Play otvara se nova aktivnost u kojoj se nalazi popis igrača koji se trenutno nalaze u aplikaciji. Na vrhu ekrana postoji tražilica u koju korisnik može upisati prijateljevo ime kako bi ga lakše pronašao. Popis igrača dostupnih za igru nalazi se u Firebase RealTime bazi podataka, koja je prikladna za to iz razloga što je popis dostupnih igrača sam po sebi vrlo dinamičan, pa ga je nužno uvijek imati osvježenog, a to obavlja ova baza. Igrač koji trenutno nije unutar aplikacije nije vidljiv na ovom popisu, kao ni igrač koji upravo igra igru protiv nekoga, jer ni on nije trenutno dostupan za odigravanje nove igre. U takvoj situaciji postat će dostupan čim završi igru koju trenutno igra. Ukoliko u aplikaciji nema drugih igrača (osim trenutnog korisnika) bit će prikazan natpis No players, pošto ne bi bilo smisleno da igrač vidi i može odabrati sam sebe za odigravanje igre. Ukoliko ima igrača dostupnih za igranje korisnik može kliknuti na igrača s kojim želi igrati te zatim upisati njegovu šifru (to ovdje služi kako trenutni korisnik ne bi ometao igrača kojeg ne pozna, pošto je igra zamišljena kao mjesto za odmjeru snaga prijatelja). Nakon što je korisnik odabrao suparnika i unio njegovu ispravnu šifru, prijatelju se šalje zahtjev za novom igrom koju je korisnik zatražio. Prijatelj ima ograničeno vrijeme za odgovor kako bi se spriječilo predugo čekanje korisnika na odgovor. Ukoliko prijatelj odgovori da ne želi igrati obojica se vraćaju na izbornik gdje biraju suigrača za sljedeću partiju. Inače, ako je prijatelj potvrdio zahtjev za igru, igra započinje no o tome ćemo više pričati u nastavku. Prije toga, spomenimo još da korisnik koji iskazuje namjeru slanja zahtjeva za novu igru (a to radi odabirom suigrača) ulazi u tzv. Send request mode (omogućeno slanje zahtjeva), te u tom stanju ne može primati zahtjeve za nove igre od svojih prijatelja. Korisnik koji na ekranu vidi popis dostupnih igrača nalazi se u tzv. Request receive mode-u (omogućeno primanje zahtjeva), u kojem može primati zahtjeve za igru svojih prijatelja. 28

Slika 21. Nema dostupnih igrača Slika 22. Prikaz dostupnih igrača Slika 23. Slanje zahtjeva za igru Slika 24. Primanje zahtjeva za igru 29

Nakon uspješnog dogovora o igri dvaju igrača, igra započinje te se igračima prikazuje Preparing screen (Ekran za čekanje) koji kratko vrijeme stoji prikazan na ekranu obojici igrača, sve dok se ne odrede ključni parametri za igru. Ti parametri su sljedeći: Odabir pet slučajno odabranih riječi iz baze podataka na poslužitelju Slučajni odabir igrača koji je prvi na potezu Nakon određivanja parametara poslužitelj šalje poruku na oba uređaja u kojoj oni zaprimaju ono što je slučajnim odabirom odlučeno i igra može početi. Ekran za čekanje prikazan je relativno kratko, ali opet dovoljno dugo da se ključni parametri stignu odrediti i da ih uređaji stignu primiti. Na sljedećim fotografijama prikazno je stanje pripreme za početak igre, kao i trenutak u kojem je igra započela na jednom od uređaja. Slika 25. Slika 26. Ekran za čekanje Ekran korisnika prvog na potezu 30

Komunikacija uređaja od trenutka slanja zahtjeva za novu igru do trenutka slanja ključnih parametara igračima i započinjanja igre prikaza je na sljedećoj fotografiji (slika 27). Slika 27. Komunikacija uređaja prilikom započinjanja nove igre Tok komunikacije za slučaj uspješnog dogovaranja igre je sljedeći: 1. Korisnik je odabrao suigrača te ispravno upisao njegovu lozinku. Na taj način poslao je zahtjev drugom igraču i čeka na njegov odgovor (odnosno šalje poruku poslužitelju). 2. Preko dobivenog korisničkog imena poslužitelj pronalazi komunikacijski Token drugog igrača u bazi podataka, te prosljeđuje zahtjev za igrom na Firebase poslužitelj. 3. Firebase poslužitelj dostavlja zahtjev za igrom na uređaj drugog igrača. 4. Drugi igrač odlučuje želi li igrati s igračem od kojeg je dobio zahtjev ili ne. 5. Nakon prihvaćanja zahtjeva za igrom, drugom igraču se prikazuje ekran za čekanje, a informaciju o potvrdi šalje se natrag prvom igraču (opet preko poslužitelja). 6. Poslužitelj pronalazi komunikacijski Token prvog igrača u svojoj bazi podataka, te prosljeđuje 31

informaciju o skorom početku igre Firebase-ovom poslužitelju 7. Firebase poslužitelj prenosi tu informaciju do uređaja prvog korisnika 8. Za cijelo to vrijeme (od trenutka potvrde zahtjeva za igrom od strane drugog igrača) poslužitelj određuje parametre potrebne za odigravanje igre 9. Nakon što je završio s određivanjem parametara, poslužitelj ih mora dostaviti uređajima kako bi igra mogla početi, te ih zbog toga prosljeđuje Firebase poslužitelju koji vrši dostavu obojici igrača (parametri su prilagođeni svakom igraču). 10. U posljednjem koraku Firebase poslužitelj dostavlja odgovarajuće parametre svakom igraču, te im se umjesto ekrana za čekanje od tog trenutka prikazuje ekran u kojem je igra započela. Igrač koji je na potezu ima dvije mogućnosti (slika 28). On može pogađati o kojoj se riječi radi ako sluti da mu je rješenje poznato (ako je odabrao pogađanje još uvijek se može predomisliti), dok u protivnom može ponuditi slovo. Ukoliko se to slovo nalazi u riječi koja je trenutno iscrtana za pogađanje igrač dobiva određeni broj bodova za svako pojavljivanje tog slova u iscrtanoj riječi, te se ta slova prikazuju na ekranu obojice igrača (na kraju poteza). Ako se ponuđeno slovo ne nalazi u riječi sve što igrač može napraviti je završiti potez. Dodatno, svaki puta nakon što je igrač pogodio barem jedno slovo koje se nalazi u riječi dobiva mogućnost pogađanja iscrtane riječi (slika 29). U tom trenutku ako igrač i dalje ne zna o kojem se pojmu radi može završiti svoj potez, dok u suprotnom može birati pogađanje. Nakon što je igrač odabrao pogađanje (slika 30.) njegovom prijatelju se prikazuje koje je slovo trenutni igrač pogodio i ispisuje mu se poruka da je njegov suparnik odlučio pogađati (više ne može odustati). Ukoliko je igrač pogodio o kojem se pojmu radi na određeni broj sekundi igračima se prikazuje rješenje (Slika 31.), igrač koji je pogađao dobiva određeni broj bodova s obzirom na duljinu pogođene riječi, te ako je preostalo još riječi za sljedeći krug igre one se iscrtavaju. Ukoliko je igrač pogađao pojam i fulao ga, rješenje se prikazuje obojici igrača, no igrač ne dobiva bodove za pokušaj te se iscrtava priprema za pogađanje sljedeće riječi (ako ih je još preostalo). U trenutku kada je pogađana zadnja riječ i nema sljedećih riječi za iscrtavanje, određuje se pobjednik odigrane partije, te se obojici igrača prikazuje ekran s tekstom jesu li pobijedili ili izgubili nakon čega im je omogućen gumb za povratak u prethodni izbornik u kojem opet mogu odabrati igrača za sljedeću igru. (Slika 32.) 32

Svaki igrač u bilo kojem trenutku može odlučiti napustiti igru gašenjem aplikacije. Štoviše, to također može učiniti pritiskom na tipku Resign (nalazi se gore desno). Prilikom napuštanja igre igrač je automatski izgubio. (Slika 33.) Slika 28. Slika 29. Mogućnosti igrača na potezu Prikaz opcija nakon pogođenog slova 33

Slika 30. Slika 31. Pogađanje pojma nakon pogođenog slova Prikaz rješenja nakon pogađanja pojma Slika 32. Slika 33. Pobjeda temeljem većeg broja bodova Poraz zbog predaje unatoč većem broju bodova 34

3.3 Upute za instalaciju Instalacija korisničkog dijela aplikacije poprilično je jednostavna i obavlja se u svega nekoliko koraka. Aplikaciju je moguće instalirati na dva načina. Prvi način je automatski preko razvojne okoline. Taj način je praktičniji (obično ga koriste razvojni programeri) te će prvi biti opisan u nastavku. Drugi način uključuje izvoz aplikacije u.apk format koristeći mogućnosti razvojne okoline, te ju takvu prebaciti na memoriju telefona preko računala te ju zatim pronaći na samom uređuju i pokrenuti instalaciju.. Za primjer instalacije na prvi način koristit će se razvojna okolina Android Studio, a koraci same instalacije su sljedeći: Prvi korak je otići u postavke uređaja te u rubrici sigurnost pronaći opciju nepoznati izvori koju treba označiti. (ta opcija služi kao dozvola za instalaciju aplikacija koje ne dolazi direktno s Google Play Store-a) Povezati Android uređaj s računalom koristeći USB kabel i dozvoliti računalu pristup podacima mobilnog uređaja (automatski se ponudi, potrebno prihvatiti) Kliknuti na zeleni gumb play unutar Android Studio te odabrati prispojeni uređaj te potvrditi odabir Dok se instalacija završi potrebno je odspojiti uređaj. Koraci instalacije drugog načina poprilično su slični. Prva dva koraka su identična. Svi koraci navedeni su u nastavku: Prvi korak je otići u postavke uređaja te u rubrici sigurnost pronaći opciju nepoznati izvori koju treba označiti. (ta opcija služi kao dozvola za instalaciju aplikacija koje ne dolazi direktno s Google Play Store-a) Povezati Android uređaj s računalom koristeći USB kabel i dozvoliti računalu pristup 35

podacima mobilnog uređaja (automatski se ponudi, potrebno prihvatiti) Prenijeti izvezenu app-debug.apk datoteku s računala na Android uređaj Odspojiti USB kabel U memoriji uređaja potražiti ikonicu aplikacije, te ju otvoriti kako bi instalacija započela Što se tiče pokretanja poslužiteljskog dijela aplikacije dovoljno je otvoriti neku razvojnu okolinu poput WebStorm-a, te pokrenuti aplikaciju pritiskom na zelenu tipku play. Iako je sada poslužiteljski dio aplikacije spreman i čeka na zahtjeve korisničkog dijela aplikacije na unaprijed predefiniranom portu ( port : 3000), aplikacija još uvijek nije spremna za korištenje. Kao posljednji korak potrebno je pokrenuti MongoDB bazu podataka, koju je prije toga potrebno instalirati na poslužitelju. Upute za instalaciju mogu se pronaći na https://docs.mongodb.com/manual/installation/. Nakon uspješne instalacije bazu potrebno je pozicionirati se u sljedeći direktorij: C:\Program Files\MongoDB\Server\3.4\bin, te unijeti naredbu kojom baza počinje slušati na upućene upite. Ta naredba je: mongod dbpath C:\Users\USER\WebstormProjects\HomeApp\data Upute za instalaciju razvojne okoline Android Studio i razvojne okoline WebStorm nalaze se na sljedećim linkovima: https://developer.android.com/studio/install.html https://www.jetbrains.com/help/webstorm/installing-and-launching.html 36

Zaključak U današnje vrijeme višekorisničke aplikacije pronašle su i hrabro drže svoje mjesto na svjetskom tržištu. Zadatak ovog rada bio je oblikovati, programski izvesti i testirati aplikaciju s igrom pogađanja za operacijski sustav Android. Za izvedbu aplikacije korišten je poslužitelj te pripadni klijentski dio za operacijski sustav Android. Objašnjen je proces komunikacije između uređaja, te je ukratko spomenuto koji protokoli se na kojem mjestu koriste. Ponovimo, to su protokoli HTTP i XMPP. Protokol HTTP u ovom radu služi za komunikaciju između uređaja i poslužitelja, dok je XMPP posrednik između vlastitog i Firebase poslužitelja. Protokol XMPP brži je od protokola HTTP, a namijenjen je za brzu razmjenu kratkih poruka. Cilj projekta bio je proučiti izvedbu jednostavne višekorisničke aplikacije zajedno s tehnologijama koje su potrebne za njenu izvedbu. Izrada ovog rada veoma me se dojmila prvenstveno zbog toga što je obogatila moje znanje za jedno novo veliko iskustvo dizajniranja aplikacije koja se sastoji od dva velika dijela (korisničkog i poslužiteljskog), korištenja najpoznatijih i najraširenijih protokola u internetskoj komunikaciji, te korištenje modernih i općeprihvaćenih tehnologija kojima se predviđa još veći rast i svjetla budućnost. Sve u svemu, usudio bih se zaključiti da mi je ova tema otvorila jedan mali prozor u velik i zanimljiv svijet višekorisničkih aplikacija. 37

Literatura [1] Wikipedia, operacijski sustav android https://hr.wikipedia.org/wiki/android_(operacijski_sustav) [2] Google, Android Architecture http://www.android-app-market.com/android-architecture.html [3] Android developers, Android application fundamentals https://developer.android.com/guide/components/fundamentals.html [4] WordPress, struktura android aplikacija https://androidsvet.wordpress.com/2013/04/18/struktura-android-aplikacija/ [5] AdMob, Firebase definicija https://support.google.com/admob/answer/6360054?hl=hr [6] Firebase, Firebase documentation https://firebase.google.com/docs/ [7] Wikipeda, Firebase documentation https://en.wikipedia.org/wiki/firebase [8] https://www.google.hr/search?q=android+arhitektura&source=lnms&tbm=isch&sa=x&ved=0ah UKEwjbzuGUqabUAhUqAsAKHW75DgsQ_AUIBigB&biw=1366&bih=645#tbm=isch&q=and roid+architecture&imgrc=220cha6fevnafm: [9] https://www.codeproject.com/kb/android/803619/android_activity_lifecycle.jpg [10] https://4.bp.blogspot.com/-_-- E3LCDh3s/V3bV3DtOTcI/AAAAAAAAGO8/EtOIT0T_eIsqzhaQPXz1pQQTGhc5CAeGwCLc B/s1600/firebase-dhanish-dcoding.gif 38

Sažetak Naslov: Višekorisnička igra pogađanja za operacijski sustav android Operacijski sustav Android svoj nastanak i razvoj temelji na operacijskom sustavu Linux, no primarno je dizajniran za prijenosne uređaje sa zaslonom osjetljivim na dodir poput smartphonea, tableta i drugih pametnih uređaja. Najvažniji pojmovi koji se vežu uz Android su otvorenost i neovisnost. Prvi uređaj s operacijskim sustavom Android prodan je u listopadu 2008. godine. Arhitektura operacijskog sustava Android sastoji se od nekoliko slojeva. To su: aplikacijski sloj, sloj aplikacijskog okvira, programske knjižnice, radno okruženje Android, te Linux jezgra. Svaka Android aplikacija zapravo se sastoji od 2 ključna dijela. To su Java datoteke u kojima se nalazi programska logika, te XML datoteke u kojima se nalazi izgled grafičkog korisničkog sučelja. Raspored direktorija i datoteka svake Android aplikacije zapravo je jedna stablasta struktura u kojoj se nalaze komponente koje programer uređuje, briše ili dodaje prilikom izrade aplikacije kreirajući pritom željeno grafičko sučelje, te različite funkcionalnosti i zadaće pojedinih komponenti. Neki od tih direktorija su src/, res/, manifests/, build gradle direktoriji i drugi. Svaku Android aplikaciju čini nekoliko komponenti koje po potrebi komuniciraju s ostalim komponentama unutar iste ili drugih aplikacija. Postoje četiri kategorije komponenti koje se međusobno razlikuju po namjeni i po životnom ciklusu. To su: aktivnosti, usluge, primatelji namjera i pružatelji usluga. Firebase je platforma koja uključuje nekoliko dobro integriranih značajki koje se mogu kombinirati, uključujući pozadinske programe za mobilne uređaje, analizu te alate za razvoj i unovčavanje aplikacija za maksimalno povećanje uspjeha aplikacije. Neke od najvažnijih i najpoznatijih Firebase usluga su: Analytics, Cloud messaging, Authentication, RealTime database, Storage i Hosting. Aplikacija koja je obrađena u ovom radu zamišljena je kao igra vješala modernog doba, odnosno višekorisnička igra pogađanja slova i riječi u obliku Android mobilne aplikacije. Sama igra bazira se na potezima (turn-based game), a koristi različite tehnologije poput Firebase RealTime database-a, Firebase Cloud Messaging-a, te više različitih internet protokola. 39

Summary Title: A Multiplayer Guessing Game for Android The Android operating system is based on the Linux operating system, but is primarily designed for touch screen devices such as smartphones, tablets, and other smart devices. The most important concepts that connect with Android are openness and independence. The first device running the Android operating system was sold in October 2008. The Android operating system architecture consists of several layers. These are: application layer, application framework layer, program libraries, Android runtime environment, and Linux kernel. Each Android application actually consists of two key parts. These are Java files with application logic and XML files where the graphical user interface layout is located. The directory and file layout of each Android application is actually a stark structure that contains components that the programmer edits, deletes, or adds when creating an application, creating the desired graphical interface and the various functionality and tasks of individual components. Some of these directories are src/, res/, manifests/, build gradle and others. Each Android app is made up of several components that communicate with other components, if needed, within the same or other applications. There are four categories of components that differ between purpose and life cycle. These are: activities, services, broadcast revceivers and content providers. Firebase is a platform that includes several well-integrated features that can be combined, including wallpapers for mobile devices, analysis of these tools for development and monetizing applications to maximize the success of the application. Some of the most important and most famous Firebase services are: Analytics, Cloud Messaging, Authentication, RealTime Database, Storage and Hosting. The application dealt with in this paper is designed as a game of modern-day hangman, that is, a multiplayer game of guessing a letters and words in the form of a Android mobile app. The game itself is based on moves (turn-based game) and uses various technologies such as Firebase RealTime Database, Firebase Cloud Messaging, and many different Internet protocols. 40

Ključne riječi Java, JavaScript, Android, Android povijest, Struktura Android aplikacija, Android arhitektura, Linux, Android Studio, Mobilna aplikacija, HTTP, XMPP, FCM, Pogađanje riječi i slova, Aplikacija, Igra bazirana na potezima, Višekorisnička aplikacija, Firebase, Poslužitelj, Komunikacija, Baza podataka za rad u stvarnom vremenu Keywords Java, JavaScript, Android, Android history, Android application structure, Android architecture, Linux, Android Studio, Mobile application, HTTP, XMPP, FCM, Word and case wizarding, Application, Turn-based game, Multiplayer application, Firebase, Server, Communication, RealTime database 41