Teemad
Siin on list iganädalastest teemadest. Õppematerjal ja täpsed juhised on Moodle keskkonnas.
Iga teema kohta on õppematerjalis videod ja mängude loomisega seotud näited ning ülesanded.
Siin lehel on kiire ülevaade teemadest ning kuidas need on mängude programmeerimisega seotud.
1. Muutujad, muutujate tüübid (arvud, sõned), matemaatika, sisend ja väljund, failide lugemine 10h
Igasuguses programmeerimises algab kõik muutujatest. Programmi kirjutatud muutujatesse salvestatakse erinevaid asju, näiteks mängija nimi, tegelase elud, rünnaku tugevus jms. Muidugi tuleb siis teha ka nende väärtustega matemaatikat. Näiteks kui tegelast rünnatakse, siis tuleks tema eludest maha lahutada rünnaku tugevus. Oletades, et tegelasel on 100 elu ja rünnak on tugevusega 25, peab pärast rünnakut tegelasel elusi alles jääma 100 - 25 = 75. See tehe tuleb programmi muutujate ja matemaatika abiga kirjutada.
2. Otsused, hargnemine, tsüklid 8h
Programm oleks väga igav, kui arvuti teeks selle järgi alati järjest kõiki käske. Mõnikord on vaja valida, mis käske täpselt teha tuleb. Selleks on olemas hargnemised. Näiteks, kui tegelasel oli 15 elu ja ta sai 25 tugevusega rünnaku sisse, siis saavad tal elud otsa. Selle peale peaks mängijale näitama vastavat teksti, mängima suremise animatsiooni, minema järgmisesse tasemesse vms. Seega programm peab olema suuteline otsustama, millal mis käske teha või mitte.
Lisaks hargnemistele on olemas tsüklid, mis võimaldavad mingit tegevust teha mitu korda järjest. Näiteks võime lihtsasti programmeerida loogika, et teatud klahvikombinatsiooni peale sooritatakse rünnakut 3 korda järjest. Või vastane käib edasi-tagasi ringi nii kaua kuni ta näeb mängija tegelast lähedal.
3. Mitmekordsed tsüklid, Turtle graafika 7h
Õpitud tsüklitega on võimalik teha väga huvitavaid asju, kui neid üksteise sisse panna. Seda kasutatakse ära näiteks Turtle graafika joonistamisel. See on selline graafika, mille joonistab programm. Programmi koodi käskude järgi joonistab pliiats ekraanile joone ja nii saab koodiga tekitada ilusaid mustreid ja lihtsamaid joonistusi.
4. Listid, listi läbivaatamine 7h
Tihtipeale on mängudes mingid kogused või hulgad samu asju. Näiteks kui mängus on 10 vastast, kes kõik peavad mängijat otsima, siis neid vastaseid saab hoida ühes listis. Programmi saab kirjutada seda listi iga teatud aja tagant läbi vaatama ning seejärel iga seal listis olev vastane saab vaadata, kas tema parasjagu näeb mängijat.
5. Funktsioonid 7h
Olukorras, kus ühte ja sama loogikat tuleb kasutada mitu korda, võib selleks kirjutada oma funktsiooni. Need funktsioonid on veidi sarnased matemaatilistele funktsioonidele, millel on mingi sisend ja väljund. Programmis aga funktsioon on lihtsalt kogumik käske, millele on antud nimi. Kuigi ka programmi funktsioonil on tihti sisend ja väljund. Näiteks võib funktsioon saada sisse mängija tegelase ja vastase ning tagastada arvu kui palju kahjustust üks teisele rünnaku korral teeb.
6. Klassid ja objektid 6h
Kui funktsioone tekib juba väga palju, on mõistlik programm struktureerida ümber klassideks. Kogenud programmeerijad ainult klasside ja objektidega programmeerivadki. Klass on mall või šabloon, mis grupeerib kokku erinevaid funktsioone ja võimaldab tekitada enda järgi objekte. Näiteks võib meil olla klass Vastane, mille sees hoitakse vastase elusi, rünnaku loogikat jms, ning seejärel võime me klassi järgi teha kiiresti konkreetsed vastased Tom, Risto ja Robert.
7. Graafika, animatsioonid 6h
Väga vähesed mängud saavad tänapäeval hakkama ilma graafikata. Sellel nädalal vaatame, mis tegelikult on üks pildifail, millised erinevad formaadid on olemas ja kuidas neid pilte programmi joonistada. Selleks tuleb teha ka eraldi programmi aken, kuhu graafikat joonistatakse. Kui me paneme mitu natuke üksteisest erinevat pildifaili kiiresti vahetuma, saame programmeerida animatsiooni. Näiteks, kui tegelane peab edasi-tagasi kõndides jalgu ka liigutama või rünnates mõõk liikuma.
8. Sündmused, mängusisene juhtimine 7h
Mängude programmeerimisel on ülimalt võimas tehnika sündmustel põhinev loogika. Nii Pygame teek kui ka mitmed teised mängude tegemise tööriistad põhinevad sündmustel. Programm peab iga natukese aja tagant uurima, kas talle on tulnud uusi sündmusi. Näiteks võib sündmus olla see, et kasutaja vajutas W-klahvi alla ja hoiab seda praegu all. Selle peale peab programm näiteks mängija tegelast edasi liigutama.
9. Helifailid, faili salvestamine, graafiline kasutajaliides 10h
Muusika ja heli on lisaks visuaalidele teine meedium, kuidas me mängijale mängust infot anname. Näiteks rünnaku korral tuleks mängida kas mõnusat pihta saamise heli või tuhmimat mööda löömise heli, et kasutajat kiiresti juhtunust informeerida. Vaatame ka graafiliste kasutajaliideste (sh menüüde) loomist ning seda, kuidas programm peaks näiteks mängija teenitud skoori või muid andmeid salvestama faili sisse, et järgmine kord sealt neid lugeda ja mängijale kuvada.
10. Oma mängu loomine 10h
Kõige paremini õpib läbi praktika ja eelnevatel nädalatel omandatu kinnistamiseks on kursuse lõpus oma mängu loomine. Teema on vaba ning tuleks välja mõelda selline mäng, mille loomisega saab eelnevalt õpitu põhjal ja ajapiiranguid arvestades hakkama. Platvormerid, reaktsiooni- ja seiklusmängud on põhilised valitutest. Igal juhul annab oma mängu meeskonnas loomine kogemust sellest, kuidas mängude loomisel on erinevate oskustega inimesed abiks. Keegi peab tegelema mängu disainiga, keegi graafika joonistamisega, keegi otsib või teeb heli, keegi mõtleb välja lugu, tavaliselt mitu inimest programmeerivad ja peavad oma koodid omavahel klappima saama. Lõpuks aga valmib võib-olla teie esimene suurem mäng ning võib-olla kohtute siin kursusel leitud meeskonnakaaslastega pärast ülikoolis juba järgmisi mänge tehes uuesti.