tiistai 23. joulukuuta 2014

Viimeinen kerhokerta 15.12.

Viimeisellä kerralla jatkettiin kesken jääneitä pelejä. Useiden kerholaisten toivomuksesta meloninheittopeliin lisättiin mahdollisuus ampua meloneita, jolloin siitä tuli eräänlainen savikiekkoammuntasimulaatio.

Yksi melko helppo tapa toteuttaa ampuminen olisi hiirellä klikkaamalla. Se tekisi pelistä turhan helpon, ellei kohde lentäisi hyvin nopeasti ja yllättävästi. Sen sijaan tehtiin vähän monimutkaisempi järjestelmä, jossa ammus näyttää lentävän pelaajasta melonia (tai savikiekkoa) kohti. Kun hiirellä klikataan, painetaan muistiin klikkauskohdan koordinaatit asettamalla kaksi uutta muuttujaa (x ja y). Ammuksen lentorata lähtee samasta x-koordinaatista kuin mihin pelaaja klikkasi, mutta sen y-koordinaatti on aluksi näytön alareunassa ja kasvaa kohti klikkauskohdan y-koordinaattia. Kun ammuksen koko samalla pienenee, se näyttää lentävän kauemmas pelaajasta.

Seuraavassa skriptissä palikka "muuta y:n arvoa" voi vaatia miettimistä. Ensinnäkin, kun ammus lähtee alareunasta y-koordinaatista -200, sen on kuljettava y + 200 askelta ylöspäin: ensinnäkin 200 askelta, jotta se pääsee nollatasolle, sitten y askelta, jotta se pääsee hiiren klikkauksen koordinaattiin asti. Vaikka hiirtä klikattaisiin nollatason alapuolella, sama laskutoimitus sopii, koska silloin y on negatiivinen. Toiseksi, kun tämä kuljettava askelmäärä jaetaan usealle toistokerralle, kokonaismäärä pitää jakaa toistokertojen lukumäärällä. Seuraavassa toistokertoja on 10, joten kaikkiaan ammusta pitää siirtää ylöspäin (y + 200) / 10 askelta.


Milloin melonin pitäisi räjähtää? Helppo ratkaisu on räjäyttää se heti, kun se koskettaa ammusta, mutta tämä voi tehdä pelistä liian helpon. Haastavampi peli saadaan aikaan, kun vain tarpeeksi kauas edennyt ammus voi osua kohteeseen. Tämän voi toteuttaa monella tavalla: ammuksen skripti voi asettaa muuttujan, lähettää viestin tai vaihtaa ammuksen ulkoasua, kun ammus on tarpeeksi kaukana. Oheisessa esimerkkipelissä on valittu viimeinen vaihtoehto: ammus räjähtää ja muuttaa ulkoasua, ja meloni tietää tuhoutua jos se koskettaa räjähtäneen ammuksen väriä.


Tässä vielä ohjaajan mallipeli, jossa nämä skriptit yhdistetään aiempaan lennätykseen:  meloninammunta.

tiistai 9. joulukuuta 2014

Lentoratoja

Kerhossa mietittiin tällä kertaa, miten esineen saisi lentämään luonnollisen näköistä rataa. On helppo laittaa hahmo etenemään suoraviivaisesti (lisäämällä sekä x- että y-koordinaattia jatkuvasti jollakin luvulla), mutta suoraviivainen eteneminen ei aina näytä luonnolliselta. Kun esimerkiksi palloa heitetään suoraan ylös, se nousee ensin nopeammin, ja nouseminen hidastuu pallon lähestyessä ratansa lakipistettä. Lakipisteestä se alkaa liikkua alaspäin kiihtyvällä vauhdilla.

Seuraava skripti lennättää palloa luonnollisen näköisessä kaaressa. Vaihtelun vuoksi pallon lähtökorkeus, -nopeus ja -suunta ovat satunnaislukuja. Skriptissä käytetään kahta muuttujaa: dx on nopeus x- eli vaakasuunnassa, ja se pysyy koko heiton aikana samana. Muuttuja dy on nopeus y- eli pystysuunnassa, ja siitä vähennetään koko ajan vakiomäärää. Tämä saa lentoradan näyttämään luonnolliselta: nopeus ylöspäin on aluksi suurempi ja hidastuu, kunnes se muuttuu negatiiviseksi, jolloin pallo alkaa kulkea alaspäin.


Ohessa ohjaajan skripti, jossa pallon tilalla on hedelmä: Lentävä meloni. Ylläolevan skriptin lisäksi tämä skripti piirtää kynätoiminnolla koko lentoradan. Jos nopeuden vaikutus on epäselvä, yksi tapa tutkia sitä on lisätä "toista kunnes" -silmukan sisään palikka "odota 1 sekunti", jolloin melonin lento on nykivämpää ja taukojen aikana ehtii katsella muuttujien dx ja dy arvoja.


maanantai 24. marraskuuta 2014

Jatkoa visailupelille

Tällä kertaa jatkettiin visailupeliä. Monilla oli vielä lisättävänä uusia kysymyksiä, ja lisäksi useiden mielestä oli hyvä lisätä peliin tapahtumia. Esimerkiksi ohjaajan visailussa on nyt jalkapalloaiheinen tausta ja henkilö (joku kylläkin huomautti, että hahmo on erotuomari eikä pelaaja). Pelissä on myös jalkapallo, joka lentää maaliin tai ohi sen mukaan, saako pelaaja vastauksen oikein vai väärin.

Jalkapallon toiminta on toteutettu viesteillä. Viestit kulkevat Scratchissa skriptien välillä eivätkä siis suoraan näy pelaajalle. Erotuomarihahmon skriptiin lisättiin "lähetä (viesti)"-palikat, jotka lähettävät viestin "oikein" tai "väärin" sen mukaan, menikö vastaus oikein vai väärin:


Sitten jalkapallolle voidaan tehdä skriptejä, jotka suoritetaan viestin saapuessa. Esimerkiksi "kun vastaanotan (oikein)" käynnistää skriptin, joka liu'uttaa pallon maaliin:


Vastaavasti "kun vastaanotan (väärin)" liu'uttaa pallon huti. Jotta pallo näyttää menevän kauas, pienennetään sen kokoa. Viesteillä saa aikaan usean skriptin suorittamisen yhtä aikaa. Tässä sekä liukuminen että koon pienentäminen alkavat viestin "väärin" saapuessa.


Kerhossa kysyttiin myös, miten kysymystä saa toistettua, jos pelaajan vastaus menee väärin. Yksi tapa tehdä tämä on käyttää "toista kunnes" -palikkaa:



maanantai 17. marraskuuta 2014

Visailupeli

Ensiksi kokeiltiin erään kerholaisen leirillä tekemää donitsipeliä. Kannattaa katsoa pelin sisälle, niin näkee että peli ei ole ollut ihan helppo tehdä.

Tunnin varsinaisena sisältönä oli visailupeli (ohjaajan versio). "Kysy - - ja odota" -palikalla voi kysyä pelaajalta vastauksen. "Vastaus"-palikka mahtuu esimerkiksi yhtäsuuruuspalikan hahloon, ja yhtäsuuruuspalikka puolestaan "jos - - sitten - - muuten" -palikan hahloon. Näin kissan saa kysymään jalkapalloaiheisen kysymyksen ja kertomaan, menikö vastaus oikein vai väärin:


Lopussa on odotuspalikka, jotta kissan sanoma tulos ehtii näkyä. Kysymyksiä voi lisätä helpoiten niin, että klikkaa hiiren oikealla napilla "kysy - - ja odota" -palikkaa ja valitsee aukeavasta valikosta "kopioi".

Jotkut ehtivät toteuttaa peliinsä myös pistelaskun. Tätä varten valitaan "Tieto"-palikoiden alta "Tee muuttuja" ja annetaan muuttujan nimeksi vaikkapa "pisteet":


Pelin alkuun lisätään "aseta pisteet arvoon 0" ja jokaisen oikean vastauksen yhteyteen ("jos"-palikan "sitten"-haaraan) "muuta muuttujan pisteet arvoa 1".

tiistai 11. marraskuuta 2014

Sokkelopelin jatkoa

Eilen jatkettiin sokkelopelin kehittämistä. Ensinnäkin korjattiin kissan liikkuminen niin, että se ei pääse enää seinien läpi. Seuraava skripti näyttää, miten ylöspäin liikkuminen saadaan toimimaan.


Idea on, että kissa liikkuu ensin ylös (y-koordinaatin arvo kasvaa), mutta jos se sen jälkeen koskettaa mustaa väriä, se liikkuu heti takaisin (y-koordinaatin arvo pienenee). Liikkuminen on niin nopeaa, että pelaaja ei huomaa mitään. Muita liikkumisskriptejä pitää tietysti muokata vastaavalla tavalla.

Sininen "koskettaako väriä"-palikka on erilainen kuin muut. Siinä on kuusi kulmaa, ja se sopii jos-palikan kuusikulmaiseen aukkoon. Palikan teksti on suomeksi vähän kömpelö, mutta idea on joka tapauksessa, että jos kissa koskettaa mustaa väriä, suoritetaan jos-palikan sisällä oleva skriptin osa.

Skriptiä muokatessa monella tuli pieniä ongelmia. Ensinnäkin "koskettaako väriä"-palikan väri on hieman hankala asettaa: ensin klikataan palikan värineliötä, sitten haetaan pelin sisältä haluttu väri ja klikataan sitä. Tämä vaatii usein muutaman yrityksen, ennen kuin värin saa asetettua täsmälleen oikein. Sen jälkeen palikkaa kannattaa kopioida klikkaamalla sitä oikealla napilla ja valitsemalla "kopioi".

Ainakin yhdellä oppilaalla sokkelon seinät olivat osittain mustia ja osittain harmaita. Silloin voi käyttää "tai"-palikkaa:

Tämä palikka on kuusikulmion muotoinen ja sisältää kuusikulmioaukot. Kovin monen eri värin testaaminen käy työlääksi, mutta se on mahdollista ketjuttamalla tai-palikoita.

Toinen esiintynyt ongelma oli, että kissa jäi jumiin joihinkin sokkelon osiin. Silloin voi joko pienentää kissan tekemien liikkeiden pituutta 10 askelesta esim. 5:een, mutta toinen ratkaisu on pienentää kissan kokoa, jotta se mahtuu sokkeloon paremmin. Näytön yläosassa on viisi kuvaketta:


Kuvakkeiden merkitys on vasemmalta luettuna kopiointi, poistaminen, suurennus, pienennys ja aputoiminto (ikävä kyllä vain englanninkielinen). Kun klikkaa pienennyskuvaketta ja sen jälkeen muutaman kerran hahmoa, hahmo pienenee ja mahtuu liikkumaan paremmin.

Liikkumista testaillessa voi käydä myös niin, että hahmo menee seinän sisään mutta ei pääse enää liikkumaan minnekään. Silloin voi pelastaa tilanteen siirtämällä hahmoa hiirellä.

Toinen asia on kissan törmääminen viholliseen. Ohessa on yksi ratkaisu. Vihreä lippu tarkoittaa pelin alkua, joten seuraava skripti vie kissan pelin alussa aloituspaikkaan. Sen jälkeen skripti jää odottamaan, koskettaako kissa viholliseen (käytin vihollisena lepakkohahmoa, jonka nimi on Bat2). Jos kissa osuu lepakkoon, se liukuu heti takaisin aloituspaikkaan. Koska odotus ja liu'unta ovat "ikuisesti"-palikan sisällä, skripti jää odottamaan seuraavaa kosketusta. Jos ikuisesti-palikka puuttuu, se huomaisi vain ensimmäisen osuman.


Mitä seuraavaksi? Sokkeloon voisi vielä lisätä jonkin aarteen, jota kissa on tavoittelemassa. Pelissä voisi myös olla ääni- ja kuvatehosteita. Ohjaajan versio tähänastisesta pelistä on Sokkelo 2.


maanantai 3. marraskuuta 2014

Sokkelopelin alkua

Tänään aloiteltiin sokkelopelin kehittämistä. Tavoitteena on peli, jossa hahmolla pitää kulkea sokkelon läpi aarteen luokse vastustajia väistellen. Tällä kertaa ehdittiin kokeilla, miten hahmon saa liikkumaan nuolinäppäimillä ja miten taustakuvia voi piirtää.

Jotta kissan saa liikkumaan nuolinäppäimillä, pitää osata vähän geometriaa. Täytyy muistaa, että x-koordinaatti kasvaa oikealle ja pienenee vasemmalle, ja y-koordinaatti vastaavasti kasvaa ylös ja pienenee alas kuljettaessa. Koordinaatin saa kasvamaan lisäämällä sen arvoon jonkin sopivan luvun (esimerkiksi 10) ja pienenemään lisäämällä negatiivisen luvun (esimerkiksi -10).

Koordinaatiston lisäksi pitää tietää, miten koordinaattien muuttaminen liitetään näppäimiin. Tapahtumapalikoiden joukossa on palikka, jonka tekstinä on "Kun painetaan välilyönti". Välilyönnin tilalle voi vaihtaa nuolinäppäimen ja yhdistää liikkumispalikoihin. Seuraavassa kuvassa näkyy ratkaisu: nuolet oikealle ja vasemmalle muuttavat x:n arvoa, nuolet ylös ja alas muuttavat y:n arvoa. Silloin kun kuljetaan koordinaattiakselien suuntaan, lisätään arvoon positiivinen luku, vastakkaiseen suuntaan mennessä lisätään negatiivinen luku eli luku, jonka etumerkkinä on miinus. Miinusnäppäin on näppäimistön alarivissä pisteen oikealla puolella, ö:n ja ä:n alapuolella.


Taustakuvan piirtämiseksi pitää ensin valita hahmon sijasta "esiintymislava", sitten sille voi piirtää taustan. Klikattavat kohdat on merkitty kuviin punaisilla nuolilla. Näytön oikealla puolella on tilaa piirtää, ja kun piirtäminen tulee valmiiksi, voi klikata taas hahmon kuvaa. Seinät kannattaa piirtää kaikki jollain värillä (esim. mustalla) jota taustassa ei muuten esiinny.

 
Mitä seuraavaksi? Useat oppilaat ehtivät myös lisätä sokkeloonsa liikkuvia vihollisia. Yksi tapa tehdä sellainen on esitetty alla: vihreä lippu merkitsee pelin alkua, ja laittamalla kaksi liukumispalikkaa toistopalikan ("ikuisesti") sisään saa vihollisen liikkumaan haluttujen koordinaattien välillä.


Pelissä on toistaiseksi sellainen puute, että hahmo pystyy liikkumaan sokkelon seinien läpi. Myöskään vihollishahmoon törmääminen ei haittaa sitä toistaiseksi millään tavalla. Näitä ongelmia ratkotaan seuraavalla kerralla, mutta jos joku haluaa miettiä niitä itse, ehkä seuraavista palikoista voi olla apua:


Jos-palikka löytyy osastolta "ohjaus", kosketuspalikat osastolta "tuntoaisti". Näiden sisään pitää laittaa vielä muita palikoita, jotta kosketuksella on jonkinlainen vaikutus.

Niille, jotka eivät ehtineet kerhoon tällä kertaa, tässä ohjaajan oma näkemys sokkelopelin aluksi: Sokkelo 1. Kun Scratchiin kirjautuu tuolta sivulta ja valitsee "Katso sisälle" ja sen jälkeen "Remixaa", voi aloittaa oman sokkelopelinsä suunnilleen samanlaisesta vaiheesta, johon läsnäolleet ehtivät.






maanantai 27. lokakuuta 2014

Tunnusten ja kerhosääntöjen luontia sekä vanhan kertausta

Säännöt

Tänään kerhoon saapui vielä pari uutta jäsentä ja kerholle tuli 17 innokasta peliohjelmoijan alkua. Aloitimme sopimalla kerhossa noudatettavista säännöistä. Kerholaiset itse ehdottivat sääntöjä ja jokaisen kohdalla kysyttiin kerääkö sääntö tarkennusta tai kannatusta. Kerhon säännöiksi muodostui seuraava lista:

  1. Tietokoneilla ollaan vain kerhon aiheeseen liittyvillä sivuilla ja ohjelmistoilla.
  2. Ei huudeta toisten puheenvuoron päälle. Ei kerholaisten eikä ohjaajien.
  3. Ei kiroilua.
  4. Ei näprätä toisten koneilla ilman lupaa.
  5. Ei rikota tietokoneita eikä toisten töitä.
  6. Ei hakkerointia.
  7. Autetaan muita.
  8. Ei kiusata.
  9. Keskitytään olennaiseen.
Sovittiin lisäksi että jokaisella on maksimissaan kolme varoitusta, jonka jälkeen joutuu käytävän rappusille 5 minuutin jäähylle. 

Scratch-tunnukset

Loimme sääntöjen jälkeen Scratch-ohjelmaan tunnukset ja näiden muistamista helpottamaan jokaiselle tunnuksen luoneelle annettiin lappu, jolle tunnus ja salasana pyydettiin laittamaan muistiin. Tämä siitä syystä, että juuri luodut tunnukset saattavat viikon touhuilun lomassa unohtua. Tunnusten avulla kerholaiset voivat lisäksi toki jatkaa harjoittelua myös kotona. Ihan kaikilla ei ollut vielä joko lupaa tehdä tunnuksia tai sitten oma sähköpostiosoite ei muistunut mieleen. Heidän kanssaan on sovittu, että tunnuksen voi tehdä vanhempien kanssa kotona ennen seuraavaa kertaa tai sitten seuraavalla tapaamiskerralla. Tunnukset on hyvä olla senkin vuoksi että kerran tehtyä projektia voi jatkaa eikä tarvitse joka kerta aloittaa aivan tyhjältä pöydältä.

Piirto-toiminnon kertaamista

Kerhon viimeinen puolikas käytettiin edellisen kerran aiheen kertaamiseen. Osalle kerholaisista ohjelman käyttöliittymä oli tuntematon ja kävimme sen perustoimintoja läpi. Samoin piirtämisen ja hahmon liikuttamiseen tarkoitetut komennot kerrattiin. Hahmon liikkumisen suunnittelua helpotti  X- ja Y- koordinaatiston muistelu sekä miten suuria asteita tarvitaan jos halutaan saada aikaiseksi esimerkiksi neliö. Kaikki eivät saaneet piirtotehtävää saaneet täysin valmiiksi mutta niitä on mahdollista tehdä joko kotona lisää tai kysyä mahdolliset epäselvyydet seuraavalla kerralla. 

Piirto-työkalun käytöstä on jotain ohjeistuksia mm. seuraavien linkkien takaa:
Linkki 1, sivu 20
Linkki 2, mm. sivu 7

Muuta

Muutamalta kerholaiselta puuttuu vielä lupalomakkeen täyttäminen ja se pyydetään täyttämään esimerkiksi täällä: http://goo.gl/forms/bJ7HHU8S0j

Lopuksi vielä mielenkiintoinen huomio keskustelusta muutaman kerholaisen kanssa. Ilmeisesti robottien ohjelmoiminen kiinnostaisi ainakin muutamaa kerholaista. Mielenkiintoista oli myös se, että ohjelmoinnin lisäksi kiinnosti miten on mahdollista että ohjelmoimalla voidaan liikuttaa jotain laitetta sekä miten ne komennot saa siitä koneelta siihen laitteeseen.