Racket ohjelmointia II. Tiina Partanen 2015

Samankaltaiset tiedostot
Racket ohjelmointia II. Tiina Partanen 2015

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Racket ohjelmointia. Tiina Partanen 2014

Racket ohjelmointia I

Bootstrap / HTDP2 / Realm of Racket. Vertailu

Tiina Partanen. Koodaamassa Matikantunnilla

Ohjelmoinnin peruskurssi Y1

oppimispeli esi- ja alkuopetusikäisten lasten matemaattisten taitojen tukemiseen

Alkuun HTML5 peliohjelmoinnissa

Ohjelmoinnin perusteet Y Python

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

Lisää segmenttipuusta

Ohjelmoinnin perusteet Y Python

Luento 6. June 1, Luento 6

OHJ-1151 Ohjelmointi IIe

Kuvapankki Imagebank Independent

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Windows Live SkyDrive - esittely

OHJ-1160 Laaja Ohjelmointi 2

Ohjelmoinnin perusteet Y Python

Taulukkolaskenta II. Taulukkolaskennan edistyneempiä piirteitä

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

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Hae Opiskelija käyttöohje

VIRUSKAAPPARI-PELI - KURKISTUS OHJELMOINNILLISEEN AJATTELUUN

OHJE SÄHKÖISEN HAKEMUKSEN TÄYTTÄMISEEN

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Venekilpailu! Esteiden väistely ja hahmon ohjaaminen

Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Matematiikan tukikurssi

Adafruit Circuit Playground Express

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla (Opettajan ohje)

Algoritmit 2. Luento 8 Ke Timo Männikkö

E-kirjat. ja uusi Ellibsin käyttöliittymä

Ohjelmoinnin perusteet Y Python

Harjoitustyö: virtuaalikone

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Massaeditorikoulutus KANSALLISKIRJASTO - Kirjastoverkkopalvelut

Tietorakenteet (syksy 2013)

AJOK/KEAJ/IAJOK. Koetallennus

Matkahuolto lisäosa WooCommerce alustalle (c) Webbisivut.org

Racket ohjelmointia osa 1. Tiina Partanen Lielahden koulu 2014

Tutoriaaliläsnäoloista

Ohjelmoinnin perusteet Y Python

Isännän Ääni- Seuraseminaari. Kokkola SJK - juniorit

OUTI-verkkokirjaston opastus

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

Ohjelmoinnin perusteet Y Python

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

Johdatus ohjelmointiin

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

Ohjelmoinnin perusteet Y Python

Osa 7: Hahmojen ohjelmointi ja hienosäätö

Ohjelmoinnin perusteet Y Python

AC-HOST-vinkkejä eape3 Milla Ahola 2014

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet

KODU. Lumijoen peruskoulu

Excel pivot. Mihin ja milloin pivot:ia voi käyttää

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

Verkkojulkaisuesittely

( ) ( ) ( ) ( ( ) Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 271 Päivitetty a) = keskipistemuoto.

Yläkoulun ohjelmointia

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu , tehtävien ratkaisut

Filter -valikosta voidaan suodattaa pistepilveä esimerkiksi luokituksien mukaan.

Luento 5. Timo Savola. 28. huhtikuuta 2006

Pauliina Munter / Suvi Junes Tampereen yliopisto/tietohallinto 2013

1. Taustatietoa näppäimistönkuuntelusta

Lähtölaukaus koodaukseen! Arto Hietapelto, kevät Innokas All Rights Reserved

Syksyn aloituskampanjat lippukunnissa

Message Broadcasting. Käyttöympäristö. Message Broadcasting -laajennuksen asentaminen. Viestien luominen

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim.

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Ohjelmoinnin peruskurssien laaja oppimäärä

Rohkeasti robotiikkaan Lego Mindstorms EV3:lla Tehtäväkortteja tuntityöskentelyyn

Luku 3. Listankäsittelyä. 3.1 Listat

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Ohje hakulomakkeen täyttämiseen yliopistohaku.fi -palvelussa

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Anna Siikaniemi. BITSBOARD sovelluksen käyttöopas

Vinokulmainen kolmio. Hannu Lehto. Lahden Lyseon lukio

ITKP102 Ohjelmointi 1 (6 op)

Scratch ohjeita. Perusteet

Flash ActionScript osa 4

Ohje PhotoPortaalin käytöstä

Tarkoitus Tällä toimenpiteellä luodaan matkalasku ilman matkapyyntöä. Edellytykset

Tarkoitus. Edellytykset. Kirjautuminen HAKA-tunnistautumisen kautta

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

SQL Buddy JAMK Labranet Wiki

Ohjelmoinnin perusteet Y Python

Maisema-arkkitehtuurin perusteet 1A, syksy 2015 Pinnanmuodot-tehtävään ArcMap-ohjeet

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

MultiBoot. Oppaan osanumero:

Transkriptio:

Racket ohjelmointia II Tiina Partanen 2015

Sisältö Peruspeli 1 Yksinkertainen peli, jossa kerätään kohteita ja väistellään vaaroja Pitkälle viety koodi, johon täydennetään vain puuttuvat palat Ei tarvita tietorakenteita Peli-idea Bootstrapprojektilta Peliä voi itse kehitellä Peruspeli 1a - ei Pythagoraan lausetta Peruspeli 1b - Pythagoraan lause mukana eteenpäin 2

Peruspeli 1 : Tuunaa peligrafiikat Lataa Peruspeli 1 ja pura paketti kotihakemistoosi Tuunaa peligrafiikat PELIN-NIMI (merkkijono) TEKSTIN-VÄRI (merkkijono) TEKSTIN-KOKO (numero) PELAAJA (kuva) KERÄTTÄVÄ (kuva) VAARA (kuva) TAUSTA (kuva) define Katso miltä pelisi näyttää: paina run

Peruspeli 1 : Ohjelmoi kerättävän ja vaaran liike Täydennä koodia niin, että kerättävä ja vaara liikkuvat Valitse suunta (oikealta vasemmalle tai päinvastoin) (define (liikuta-vaaraa x) x) + - * / (define (liikuta-kerättävää x) x) 4

Peruspeli 1 : Palauta ne takaisin ruudulle Täydennä koodia niin, että huomataan milloin kohde tai vaara ovat menneet ruudun ulkopuolelle (define (ruudulla-vasemmalla? x) true) (define (ruudulla-oikealla? x) true) >, <, <=, >=, =, and, or (define (ruudulla? x) true) 5

Peruspeli 1 : Liikutellaan hahmoa nuolinäppäimillä Täydennä koodia niin, että pelihahmo reagoi nuolinäppäimiin up ja down (define (siirrä-pelaaja y näppäin) y) (cond [(..)(..)] [else..]) 6

Peruspeli 1a : Tutkitaan törmääkö Ajatellaan, että pelaajan ympärillä on törmäysalue. Jos vaara tai kerättävä tulee alueen sisälle, tapahtuu törmäys. Saat törmäysalueen näkyviin kun painat välilyöntiä. 7

Peruspeli 1a : Tutkitaan törmääkö hahmo johonkin Täydennä koodia niin, että saadaan selville onko hahmo riittävän lähellä vaaraa tai kerättävää (define TÖRMÄYSVARA-X 0) (define TÖRMÄYSVARA-Y 0) <, >, <=, >= (define (törmäsikö? x1 y1 x2 y2) false) 8

Peruspeli 1b : Tutkitaan törmääkö Lasketaan pelaajan ja toisen hahmon välinen etäisyys käyttämällä Pythagoraan lausetta. Valitaan etäisyys jolla hahmot törmäävät, ja verrataan hahmojen etäisyyttä siihen. 9

Peruspeli 1b : Tutkitaan törmääkö hahmo johonkin Täydennä koodia niin, että saadaan selville onko hahmo riittävän lähellä vaaraa tai kerättävää (define (kolmion-kanta x1 y1 x2 y2) 0) (define (kolmion-korkeus x1 y1 x2 y2) 0) (define (etäisyys x1 y1 x2 y2) 0) (define (törmäsikö? x1 y1 x2 y2) false) <, >, <=, >=, abs, srq,srqt 10

Peruspeli: Lasketaan pisteet Täydennä koodia niin, että pisteet päivittyvät oikein (define (lisää-pisteitä p) p) (define (vähennä-pisteitä p) p) +, -, *, / 11

Peruspeli: Törmäysanimaatio ja gameover Jos haluat muuttaa törmäysanimaation kuvan ja lisätä pelin loppuun game over tekstin muokkaa seuraavaa koodia (define TÖRMÄYS (star 50 "solid" "gold")) (define LOPPUKUVA empty-image) text 12

Miten eteenpäin? Jos haluat jatkaa Peruspeli 1:stä eteenpäin, on opeteltava tietorakenteiden käyttö (struct) sekä peliä pyörittävän big-bang:in käyttö Pelin kaikki osat ovat muokattavissa. Koko koodi löytyy tiedoston lopusta. Tämä on tarkoitettu niille opettajille/oppilaille, jotka haluavat oppia enemmän ohjelmointia Tässä muutamia vihjeitä siitä miten koodia on muokattava (nämä ohjeet eivät ole täydelliset) 13

Hahmon liikkuminen myös sivusuunnassa Jos haluat liikuttaa hahmoja myös sivusuunnassa sinun pitää opetella käyttämään paikka structia paikka struct:iin tallennetaan sekä x- että y-koordinaatti (define-struct paikka (x y)) paikka x y 14

Struct:in käsittely Tietorakenne (struct) luodaan kutsumalla makepaikka funktiota antamalla x- ja y-kentille arvot: (make-paikka 100 200) paikka Kenttien sisältämän tiedon saa ulos kutsumalla funktiota, jonka nimi muodostuu struct:in ja kentän nimestä: (paikka-x p) 100 200 paikka 100 paikka-struct, jonka nimi on p (paikka-y p) 200

Paikka struct peruspelissä Peruspelissä on valmiina funktiot, jotka ottavat parametrina paikan ja palauttavat uuden paikan Allaolevassa esimerkissä peruspelin koodi on muutettu sellaiseksi, että vaara liikkuukin ylhäältä alas ;; päivitä-vaara : paikka -> paikka (define (päivitä-vaara p) (make-paikka (paikka-x p) (+ (paikka-y p) 10))) Luodaan uusi paikka-struct Vanhan paikan x-koordinaatti Lasketaan uusi y-koordinaatti vanhan y-koodinaatin avulla

Uusien hahmojen lisääminen Jos haluat lisätä hahmoja, sinun pitää lisätä uusi hahmo peli structiin peli struct:ssa on tallessa kaikki pelin tilaan vaikuttavat asiat (define-struct peli (pelaaja vaara kerättävä pisteet tilanne uusi)) Joudut muokkaamaan myös kaikkia funktioita, jotka käyttävät peli struct:ia niin, että uusi kenttä otetaan huomioon 17

Jos haluat lisätä hiirellä ohjauksen Jos haluat lisätä peliin uusia ohjaamismuotoja, joudut koskemaan big-bang - funktioon 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..) (on-mouse..)) piirrettävä näytölle aika kuluu käyttäjä painoi näppäintä hiirellä ohjaaminen 18

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

Kirjoita uusi funktio, liitä se bigbang:iin lähtötila (big-bang LÄHTÖ (to-draw piirrä-tilanne) (on-tick päivitä-peli) (on-key hoida-näppäimet) (on-mouse hoida-hiiri)) (define (piirrä-tilanne tila )..) (define (päivitä-peli tila )..) (define (hoida-näppäimet tila näppäin)..) (define (hoida-hiiri tila )..)

Lisää harjoituksia Koodauksen ABC - blogi http://koodauksenabc.blogspot.fi Blogin kautta on jaossa materiaalia: Opettajien Racket - koulutukset

Koodausta kouluun Koodausta kouluun projektissa on tarkoitus tehdä oppimateriaalia ohjelmoinnin opettamiseen peruskoulussa (matematiikan ehdoilla) Haluatko olla mukana ideoimassa tai testaamassa, tai kaipaatko apua Racket-ohjelmointiin? Liity Koodausta kouluun facebook ryhmään se on sinua varten! 22