Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Samankaltaiset tiedostot
Racket ohjelmointia II. Tiina Partanen 2015

Racket ohjelmointia. Tiina Partanen 2014

Racket ohjelmointia II. Tiina Partanen 2015

Bootstrap / HTDP2 / Realm of Racket. Vertailu

Racket ohjelmointia osa 1. Tiina Partanen Lielahden koulu 2014

Tiina Partanen. Koodaamassa Matikantunnilla

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Java-kielen perusteet

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Racket ohjelmointia I

Tietorakenteet (syksy 2013)

Java-kielen perusteita

ITKP102 Ohjelmointi 1 (6 op)

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Luento 5. Timo Savola. 28. huhtikuuta 2006

Python-ohjelmointi Harjoitus 2

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Ohjelmoinnin perusteet Y Python

Yläkoulun ohjelmointia

Ehto- ja toistolauseet

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

PHP tehtävä 3 Atte Pekarinen TIKT13A

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Tietueet. Tietueiden määrittely

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

ITKP102 Ohjelmointi 1 (6 op)

13. Loogiset operaatiot 13.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmointiharjoituksia Arduino-ympäristössä

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Harjoitus 2: Ohjelmointi (Matlab)

Harjoitus 2: Ohjelmointi (Matlab)

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Tietotyypit ja operaattorit

Ohjelmoinnin peruskurssien laaja oppimäärä

Luku 3. Listankäsittelyä. 3.1 Listat

VINKKI: Katso Kentät Muistioon -painikkeella, mikä on taulukon nimen oikea kirjoitusasu.

58131 Tietorakenteet ja algoritmit (syksy 2015)

Ohjelmoinnin peruskurssien laaja oppimäärä

Adafruit Circuit Playground Express

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Java kahdessa tunnissa. Jyry Suvilehto

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Ohjelmoinnin perusteet Y Python

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Ohjelmoinnin peruskurssi Y1

Flash ActionScript osa 4

Koe ma 1.3 klo salissa A111, koeaika kuten tavallista 2h 30min

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

12. Javan toistorakenteet 12.1

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Ohjelmoinnin perusteet Y Python

Sisältö. 22. Taulukot. Yleistä. Yleistä

DIGITAALISEN TARINAN TUOTTAMINEN MICROSOFT PHOTO STORY 3- OHJELMAN AVULLA VAIHEINEEN

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Merkkijonon tutkiminen matches-metodilla


Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

Ohjelmointityökalu Scratch

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä Projektiryhmä Keimo

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Ohjelmoinnin peruskurssi Y1

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

end; end else begin if aani=true then begin sound(247); delay(100); sound(220); delay(200); nosound; end; end;

etunimi, sukunimi ja opiskelijanumero ja näillä

Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

Kokonaislukuaritmetiikka vs. logiikkaluupit

Jypelin käyttöohjeet» Ruutukentän luominen

Alkuun HTML5 peliohjelmoinnissa

11. Javan valintarakenteet 11.1

Dynaaminen analyysi III

Ohjelmoinnin peruskurssi Y1

Transkriptio:

Racket ohjelmointia osa 2 Tiina Partanen Lielahden koulu 2014

Sisältö 1) Funktiot ja muuttujat (kertaus) 2) Animaatiot & pelit (big-bang) 3) Vertailuoperaattorit sekä boolean arvot 4) Tietorakenteet (struct) 5) Haarautuminen (cond) 6) Loogiset operaattorit and ja or 7) If ja rekursio 8) Lopputeksti 2

1. Funktio ja muuttuja (kertaus) Määrittele UFO-niminen kuva ja KENTTÄ-niminen empty-scene Laskeuta UFO manuaaliohjauksella alas kuvaruudun yläreunasta alas Kirjoitetaan funktio, joka piirtää ufon eri kohtiin ruutua ;; piirrä-ufo : numero -> kuva (define (piirrä-ufo..) (.. )) Lataa ufokuva tästä.

#lang racket (require 2htdp/image) (require 2htdp/universe)

(define UFO ) Kuvan lisääminen DrRacket:ssä: Valitse Insert Insert image

(empty-scene 500 300) 300 500

(place-image UFO 250 0 KENTTÄ) 0 250

(place-image UFO 250 50 KENTTÄ) 50 250

(place-image UFO 250 250 KENTTÄ) 250 250

Koodaushaaste 1 Etsi y:n arvo, jolla saat ufon laskeutumaan maanpinnalle niin, että sen pohja koskettaa maata. Määrittele löytämäsi luku vakioksi MAANPINTA.

2. Animaatiot ja pelit (big-bang) big-bang funktio mahdollistaa interaktiiviset pelit ja animaatiot. Se kutsuu ohjelmoijan itsensä kirjoittamia funktioita, kun jotakin tarvitsee tehdä. (big-bang LÄHTÖ (to-draw..) (on-tick..) (on-key..) (stop-when..)) piirrettävä näytölle aika kuluu käyttäjä painoi näppäintä lopetusehto

2htdp/universe : big-bang (on-tick..) big-bang (on-key..) (to-draw..) (stop-when..)

Kirjoitettava omia funktioita lähtötila (big-bang 0 (to-draw piirrä-ufo) (on-tick siirrä-ufo) (stop-when maassa?)) (define (piirrä-ufo tila )..) (define (siirrä-ufo tila )..) (define (maassa? tila )..)

Funktion parametrit ja paluuarvot Kun big-bang kutsuu ohjelmoijan omia funktioita, se antaa parametrina pelin tilan. Laskeutuvan ufo:n tila voidaan ilmoittaa yhdellä numero:lla (ufon y-koordinaatti). y-koodinaatti on siis funktioidemme muuttuja eli parametri. Funktioiden pitää palauttaa big-bang:lle tietyntyyppisiä paluuarvoja. Racket ei vaadi ohjelmoijaa kertomaan parametrien tyyppejä koodissa mutta on hyvä tapa kirjoittaa ne näkyviin kommenttiriville ennen funktion määrittelyä. ;; piirrä-ufo : numero -> kuva ;; siirrä-ufo : numero -> numero ;; maassa? : numero -> boolean

UFO laskeutuu 1) (define UFO..) 2) (define KENTTÄ..) 3) (define (piirrä-ufo tila)..) 4) (define (siirrä-ufo tila)..) 5) (bigbang 0 (to-draw..) (on-tick..)) UFO laskeutuu scenen yläreunalta alas (ei pysähdy vielä maahan)

3. Vertailuoperaattorit sekä boolean arvot Jotta ufo saadaan pysähtymään maan pinnalle on käytettävä vertailuoperaattoria Vertailuoperaattoreita ovat: <, >, <=, >=, = Jos väite on totta, paluuarvo on true, jos epätosi false Esim. (< 2 3) palauttaa true Kirjoita funktio, joka testaa onko ufo maassa: ;; maassa? : numero -> boolean

UFO pysähtyy maanpinnalle Jotta UFO saadaan pysähtymään maanpinnalle, lisätään lopetusehto (stop-when) 1) (define (maassa? tila)..) 2) (bigbang 0 (to-draw..) (on-tick..) (stop-when..)) UFO laskeutuu ja pysähtyy maanpinnalle

Koodaushaaste 2 Muuta koodia niin, että UFO lähteekin maanpinnalta ylöspäin ja pysähtyy kuvan yläreunaan.

TILAMUUTTUJAT? Miten ufo saadaan menemään myös vasemmalle ja oikealle?

TILAMUUTTUJAT? Jotta ufo saadaan kulkemaan saman animaation/pelin aikana sekä ylhäältä alas, että vasemmalta oikealle, tarvitaan lisää tilamuuttujia (y:n lisäksi tarvitaan myös x). Nämä pitää tallentaa samaan tietorakenteeseen. Sijainti x y

4. Tietorakenteet (struct) MÄÄRITELLÄÄN TIETORAKENNE: (define-struct sijainti (x y)) LUODAAN TIETORAKENNE: (make-sijainti 0 0) Tallennetaan uudet tilatiedot tietorakenteeseen (struct) VIITATAAN TIETORAKENTEEN KENTTÄÄN: (sijainti-x..) (sijainti-y..) EI VIELÄ LISÄÄ UUTTA TOIMINNALLISUUTTA

Tietorakenteen (struct) käsittely Luodaan tietorakenne, annetaan kentille alkuarvot, annetaan sille nimi: (define LÄHTÖ(make-sijainti 100 200)) LÄHTÖ sijainti Kenttien sisältämän tiedon saa ulos kutsumalla funktiota, jonka nimi muodostuu structin ja kentän nimestä: (sijainti-x LÄHTÖ) 100 200 sijainti 100 (sijainti-y LÄHTÖ) 200

5. Haarautuminen (cond) Jotta ufoa voi ohjata näppäimillä oikealle ja vasemmalla, tarvitsemme funktion, joka hoitaa näppäimen painallukset (on-key) Cond-rakenteella koodi saadaan haarautumaan (cond [( ehtolause ) (.. )] [( ehtolause ) (.. )] [( ehtolause ) (.. )] [else..])

Ufon ohjaaminen oikealle ja vasemmalle (cond [(key=? n left")(make-sijainti..)] [(key=? n right")(make-sijainti..)] [else (make-sijainti..)])

Koodaushaaste 3 Lisää laskeutuvalle ufolle kaasunappi, joka saa se nousemaan ylöspäin (esim. nuolinäppäin up tai välilyönti )

6. Loogiset operaattorit and ja or Nyt kun ufo leijuu, se pitää saada pysymään ilmassa niin, ettei se kosketa mihinkään seinään. Lopetusehdon voi laatia käyttämällä loogista operaattoria or. (define (loppu? tila) (define x (sijainti-x tila) (define y (sijainti-y tila) (or (<= x YLÄREUNA) (>= x ALAREUNA) (<= y VASENREUNA) (>= y OIKEAREUNA))) Lokaalit apumuuttujat tekevät koodista luettavampaa.

7. If ja rekursio Ohjelmointikielissä on monta tapaa tehdä silmukoita eli looppeja. Yksi on rekursio. Kokeile oheista koodinpätkää tällä kuvalla. Rekursion lopetus ehdossa on käytössä myös if. (define (pyöritä-kuvaa kulma kohta kuva taulu) (if (>= kulma 360) taulu (pyöritä-kuvaa (+ kulma 45) (- kohta 110) kuva (overlay/xy (rotate kulma kuva) kohta -10 taulu)))) Kutsu funktiota esim. näin: (pyöritä-kuvaa 60 0 (empty-scene 720 80))

8. Lopputeksti Pelin tai animaation loppuun voi laittaa lopputekstin (text Game over 78 blue ) Tämä funktio palauttaa kuvan, jonka voi liittää overlay/xy:llä toisen kuvan päälle Pelin viimeisen ruudun piirtofunktio annetaan stop-when funktiolle parametrina: (define (piirrä-loppukuva..) (.. )) (big-bang.. (stop-when loppu? piirrä-loppukuva))

Koodaushaaste 4 Tee uusi maalaa-auto - funktio, joka ottaa auton renkaiden ja korin värin lisäksi myös mainostekstin sekä tekstin värin. ;; maalaa-tekstiauto : teksti t-väri r-väri k-väri -> kuva Vihje: Kutsu vanhaa maalaa-auto funktiota tämän uuden funktion sisältä.

Koodaushaaste 5 Pistä autosi ajamaan ruudun vasemmasta reunasta oikealle ja pysähtymään ennen kuin autosi katoaa kokonaan. Koodaushaaste 6 Tee autolle kaasu ja jarru. Kun kaasua painetaan se lähtee liikkeelle, ja kun jarrua painetaan se pysähtyy. Vinkki 1: näppäimet k ja j voivat olla kaasu ja jarru Vinkki 2: tarvitset enemmän kuin yhden tilamuuttujan

Lähteet 1) Ufo-kuva OpenClipArt - sivuilta: 2) Racket - ohjelmointiohjeita Realm of Racket - kirjasta: http://openclipart.org/detail/20150/ufo-in-cartoonstyle-by-rg1024 http://www.amazon.com/realm-racket-learn- Program-Game/dp/1593274912