maanantai 29. lokakuuta 2018

Opinnot etenee

Ohjelmoinnin perusteet -kurssi oli kiinnostava ja tein omana harjoitteena pari konsolipohjaista peliä luodakseni itselleni rutiinia. Ensimmäinen oli Murhamysteeri -niminen tekstiseikkailu, jossa leikiteltiin rng -arvoilla jotka arpoivat joka peliin eri murhaajan ja murha-aseen jotka pelaajan piti selvittää. Suhteellisen yksinkertainen ohjelma jossa testailin tekstin ja taustan värien vaihtoa, äänieffektejä Console.Beep() -komennolla ja eri looppeja.

Sen jälkeen aloitin hieman kunnianhimoisemman projektin, RPG -tyylisen pelin jossa komentoja annetaan tekstin avulla ja konsoli tulostaa erilaista grafiikkaa for -loopein luoduilla geometrisillä muodoilla. Lisäksi alkeellisia classeja käytin tallentamaan sankarin arvoja kuten level, strength, HP, SP, lvl, exp jne. Onnistuin myös tekemään yksinkertaisia vuoropohjaisia taisteluita joissa viholliselle on määritelty HP sekä hyökkäykset ja random number generaattorilla todennäköisyydet niiden käyttämiseen. Koodia tähän projektiin on kertynyt n. 3000 riviä ja projekti on vielä kesken.

Murhamysteeri


GreatAdventure
Seuraavaksi Olio-ohjelmoinnin perusteissa opettelimme classien luomista ja olioiden tekemistä niiden pohjalta WPF -ohjelmaan. Tuli paljon uutta asiaa, enimmäkseen käyttöliittymän puolella kun omatoimisesti harjoitellut niin paljon konsolilla. Myös komennot olivat hieman erilaisia WPF puolella. Kurssin harjoituksena loimme älytalosovelluksen, jossa säädettiin kuvitteellisen älytalon valoja, saunaa ja lämpötilaa. Tässä pääsi hyvin soveltamaan olioita ja uusina asioina tuli ainakin slideri valon voimakkuutta varten ja timer saunan lämpötilan nousulle ja laskulle.

Relaatiotietokannan hallinta ja ylläpito kurssilla tutustuimme SQL -servereihin ja SQL Management Studion käyttöön. Lisäksi kävimme läpi tietokantojen tuomista, varmuuskopiointia sekä poistamista. Yleisestikin kaikkea ohjelman käyttöliittymään liittyvää. Tästä olemme nyt luonnollisesti jatkaneet SQL kielen perusteet -kurssille, jossa käymme läpi eri komentoja joilla tietokantoja voidaan muokata.

Lisäksi olemme aloittaneet johdanto pelinkehittämiseen -kurssin, jossa harjoittelemme 2D pelien tekemistä unityn avulla. Käytämme unity playground projectin assetteja tällä hetkellä ja vielä emme juurikaan käytä omaa koodia. Kurssi on vasta aluillaan joten olemme vasta asentaneet unityn sekä harjoitelleet kuinka luodaan objekteja ja annetaan niille eri ominaisuuksia kuten sprite, collider, fysiikat, movement yms. Mielenkiintoista asiaa ja odotan innolla mitä kaikkea uutta tulee vastaan.

keskiviikko 12. syyskuuta 2018

Opintojen alku

Olen jo ainakin kaksi vuosikymmentä leikitellyt ajatuksella että haluaisin oppia ohjelmoimaan ja tekemään pelejä. Mutta tähän asti pelinkehitykseen tähtäävää koulutusta en ollut löytänyt. Yläasteen jälkeen opiskelin laborantiksi, jolla työllistin itseni hetkeksi, kunnes -09 aikoihin taantuma vaikutti todella huonosti työllistymiseen. Seuraavaksi hankin koulutetun hierojan paperit ja tein alalla töitä toiminimellä n. 2,5 vuotta. Molemmat ammatit ovat kyllä mielenkiintoisia, mutta eivät ole niinkään linjassa intohimoani tietotekniikkaa ja videopelejä kohtaan.

Nyt kun viimein tarjoutui mahdollisuus opiskella pelinkehittäjäksi, niin tulin siihen johtopäätökseen, että voisin jälleen palata koulun penkille. Onnistuin vielä liittymään syksyn 2018 -kurssille, vaikkakin vasta pari viikkoa sen alkamisen jälkeen. Opiskelu PointCollegessa on verkko-opinto painotteista, joka on minulle täysin uusi, mutta samalla mielenkiintoinen kokemus.

Osallistuin ensimmäiseen verkkotapaamiseen maanantaina 10.9.2018 ja myönnän olleeni aivan hukassa käsiteltyjen asioiden kanssa. En ollut siis vielä edes asentanut Microsoft Visual Studiota, saatikka tehnyt edes Hello World -ohjelmaa. Oli kylläkin hienoa nähdä millaisia ohjelmia muut opiskelijat olivat jo tehneet ja päässeet hieman soveltamaankin. Mutta koodit näyttivät silmääni vain erilaiselta yhdistelmiltä englanninkielisiä sanoja, lyhenteitä sekä lukuja.

Kuitenkin jo saman illan aikana sain ladattua Microsoft Visual Studio -ohjelman ja päätin ruveta toimeen. Moodlesta löysin videotallenteet asioista jotka muut olivat jo opetelleet. Katsoin ensin videot vain läpi ajatuksella ja tuntui siltä että tämähän voikin olla ihan ymmärrettävää. Seuraavaksi aloinkin jo koodaamaan ihka ensimmäistä Hello World -ohjelmaa viedotallenteiden ja koodiesimerkkien avulla. Hyvin nopeasti ymmärsin kuinka luodaan string -tyyppinen muuttuja ja yhdistetään se Console.WriteLine -komennon tekstikenttään. Heti myös ymmärsin että ellei perään lisää Console.ReadLine(); niin ohjelma sulkeutuu saman tien käynnistyessään.

Tästä jo pienen onnistumisen elämyksen saatuani onnistuin lisäämään tervehdykseen nimi -muuttujan jolloin ohjelman käyttäjä voi syöttää muuttujalle tekstin, jonka ohjelma myöhemmin tulostaa näkyviiin. Seuraavaksi kun mukaan tuli int -tyyppinen muuttuja käyttäjän ikää kysyttäessä, olin hetken hämilläni kunnes käsitin että numerot pitää syöttää eri etuliitteellä että ohjelma pystyy käsittelemään ne oikein. Nopeasti rupesi myös kiinnostamaan kuinka voisin korjata haavoittuvuuden jossa ohjelma kaatuu kun ikää kysyttäessä syötetäänkin tekstiä. Tässä tapauksessa try ja catch tulivat kuvioihin. Tuntuu että vieläkin sitä soveltaessa teen hieman virheitä, mutta esimerkkejä käyttäen olen saanut virheilmoitus -loopin kyllä toimimaan. Välillä on vain vaikea hahmoittaa kuinka isolle alueelle try -tehdään ja välillä on ohjelma rebuild solution -vaiheessa ruvennut herjaamaan puuttuvia muuttujia.

Päivämääriä käyttäessä mukaan tuli using.system.Globalization sekä DateTime -muuttuja. Uskon jo jonkin verran ymmärtäväni mutta hieman on vielä harjoiteltava Parse -komennon käyttöä muuttujien tyyppiä muunnellessa. If -lausekkeen oppiminen olikin jostain syystä hyvin simppeliä ja toi paljon lisää siihen miten eri vastaukset antavat myöhemmin eri tulosteen. If -lausekkeen käyttäminen string -muuttujien kanssa kiinnostaisi oppia ja poissulkea väärät vaihtoehdot string -muuttujia käyttäessä.
Alkukankeudesta huolimatta on opiskelu lähtenyt käyntiin ja olen jopa tehnyt omaa interaktiiivista tarinaa if -lausekkeita hyödyntäen. Perjantaina on minulle ensimmäinen lähipäivä ja mielenkiinnolla lähden oppimaan lisää uutta!