Sinun UserID: 0

```

Palautus viimeistään: klo 11:00 ma 12.9.
Katso luennot-sivulta luennot 03 ja 04.

Ilmoittaudu missä ryhmässä (zoom) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen)

  • Please to interact with this component.

    Ma 14-16
  • Please to interact with this component.

    Ma 16-18
  • Please to interact with this component.

    Ma 14-16 Zoomista
  • Please to interact with this component.

    Ma 16-18 Zoomista
  • Please to interact with this component.

    Katson demonpalautuksen videolta

Alla demotilanteesi.

  • Pisteet eivät päivity tähän automaattisesti, vaan aina pienellä viiveellä.
  • Värit: Punainen: Minimit ei täyty. Vihreä: vähintään 5p joista 2p tähtitehtävistä.
# aikajana
Tiedot päivittyvät tunnin välein. Viimeksi:

Please to interact with this component.

{}


Viikko 35
26.8.
36
2.9.
37
9.9.
38
16.9.
39
23.9.
40
30.9.
41
7.10.
42
14.10.
43
21.10.
44
28.10.
45
4.11.
46
11.11.
47
18.11.
48
25.11.
Luennot 1&2 3&4 5&6 7&8 9&10 11&12 13&14 15&16 17&18 19&20 21&22 23&24
Tärkeät ti: bonus
pe: HT1
Väli-
kysely
pe: Debug-
näyte

ti: bonus
pe: HT2
ti: bonus
pe: HT3
Tentti
pe: 2.12
dh 1 2 3 4 5 6 7 8 9 10 11 Summa %
Demot

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Korjattu

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Tunnit

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Ohjelmointi 1, s 2022 / Demo 2


Jos haluat harjoitella vastaavilla tehtävillä, joihin saat myös mallivastaukset, niin katso:

HUOM! Joka kerta on saatava vähintään 2p tähtitehtävistä! Alle 5p tehneillä on huono ennuste loppukurssissa.

Demot palautetaan viimeistään maanantaina klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä. Alla mainitut mallivastaukset näkyvät vasta kun demojen palautustilaisuudet on pidetty.

# vdr1
# vdr2

Oppimistavoitteet

Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.

# Oppimistavoitteet

Palautus

Demot palautetaan viimeistään maanantaina klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä.

Ajankäyttösi tällä viikolla (0.25p)

Demokerran päätteeksi kirjoita arvio tällä viikolla käyttämästäsi työmäärästä. Laske työmäärään mukaan kaikki tällä viikolla käyttämäsi aika: lähiopetukseen (=zoom) osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, demojen purkutilaisuuteen osallistuminen (maanantaina) ja niin edelleen. Voit päivittää lukua viikon edetessä, se voi helpottaa arvion tekemistä. Huom! Siis tähän ei laiteta kurssin alusta kaikkia tunteja yhteensä, vaan vain tämän viikon tunnit. Tästä annettava 0.25 näkyy Pisteet-sivun demokerran summassa. Kirjoita pelkkä luku esim tyyliin 13.5

Ajankäyttösi tällä viikolla: Plugin numericfield error: Task id refers to another document, but you do not have access to that document.

# vaikeaa

Edellisten demojen vastausten korjaaminen E1 (pakollinen)

# korjattu

Kun tehtävien vastaukset on julkistettu (esim demopalautuksissa), pitää jokaisen korjata omat vastauksensa niin, että ainakin Tauno ja perustehtävät 1-6 tuottavat vähintään 1p kukin. Eli demon palautuksen jälkeen pitää demosivun näyttää vähintään 7 p.

Siis esim. ennen demo 2 tehtävien aloittamista pitää demoista 1 tulla vähintään mainittu pistemäärä.

Itsearvio A1 (vapaaehtoinen)

Video 1

Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 22 Lisää em. videosivulle vähintään 3-linkkiä ja kirjoita alla olevaan laatikkoon, mitkä linkit lisäsit. Joka demokerralle voi merkitä aina vähintään 3:sta linkistä yhden demotehtävän.

# video1

TDD-pohja

Tässä voit testata ohjelmiasi jos ComTest ei toimi koneellasi

# ComTestPohjaCSx

Tauno T1 a

Lisää tulos-niminen muuttuja Taunoon. Tee ohjelma, joka laskee yhteen taulukon luvut niin, että lukujen summa on lopuksi tulos-nimisessä muuttujassa.

(Muista painaa Taunoissa sekä Aja että Test että saat niistä kummastakin Taunosta sen 0.5 pistettä eli molemmista Taunoista yhteensä 1 p.)

# summaaluvut

Tauno T1 b

Lisää tulos-niminen muuttuja Taunoon. Tee ohjelma, joka laskee yhteen taulukon luvut niin, että parillisissa paikoissa olevien lukujen summa on lopuksi tulos-nimisessä muuttujassa.

# summaajokotoinen
# taunoOppi

Ville V1

Tee Villestä tehtävät 2.2-2.6 ja 6.1-6.4.

Kerro tehtävän palautuksena mitä opit Villeltä.

Vinkki: Muodollinen parametri on "turkulaisten kielessä" aliohjelman esittelyssä oleva muuttujan nimi ja todellinen parametri sille kutsussa sijoitettu arvo (C#:n omassa dokumentaatiossa tämä on argument).

# villev1
# lausekkeidenarvot

Tehtävä 1. Lausekkeiden arvot

Mieti ensin kustakin alakohdasta, että mitä ohjelma tekee. Kirjoita päätelmä itsellesi ylös ja kokeile vasta sitten itse ohjelmaa (joka pitää korjata oikeaksi että sen voi ajaa). Ohjelmakoodin lukeminen on tärkeä taito. Voit myös kokeilla tehdä ohjelmat itse Visual Studiolla. Kohtien a)-d) ohjelmien ajamisesta ei tule pisteitä, vaan niihin kuuluvien kysymysten vastauksista, kustakin alakohdasta max 0.25 p. Lue ensin huolella mitä kysytään ja miten pitää vastata.

a) Olkoon meillä seuraavanlainen pääohjelma:

# mitatulostaa

Mitä viimeinen rivi (ennen aaltosulkua) tulostaa? Kirjoita yhdelle riville se luku minkä ohjelma tulostaa. Kun olet tallentanut vastauksesi voit täydentää luokan (class, ks. alkuperäinen HelloWorld -ohjelma) yllä olevan koodin ympärille ja tarkistaa vastauksesi painamalla aja-nappia.

# teht1a

b) Miten tuloste muuttuisi, jos kaikki sulut otettaisiin pois riviltä

int x = a + b * ((2 - c) / a + b);

Kirjoita luku, jonka muutettu ohjelma tulostaisi.

# teht1b

Kun olet vastannut kysymykseen, voit tarkistaa vastauksesi muuttamalla 1. kohdan koodia.

c) Muutetaan pääohjelmaa seuraavasti:

# teht1ccode

Mikä ongelma tässä tulee? Mieti ja vastaa kysymykseen, ennen kuin käännät ohjelman. Kun ajat ohjelman, mitä huomaat?

# teht1c

d) Tehdään seuraavanlainen pääohjelma:

# teht1dcode

Mitä yllä oleva ohjelmanosa tulostaa? Mikä on c:n arvo viimeisen rivin jälkeen? Vastaa kumpaankin kysymykseen yksi luku, kumpikin omalle rivilleen. Kun olet vastannut kysymykseen, voit tarkistaa vastauksesi ajamalla yllä olevan koodin (kunhan ensin korjaat sen toimivaksi).

# teht1d

Miksi d) kohdassa vastaukseksi ei käy numerot 3 ja 4, vaikka ohjelma määrittelee int c:n arvoa, mikä on 3. ja C:n arvo viimeisen rivin jälkeen on 4.

VL: Lisääppä ohjelmaan vaikka tuostuslause, joka tuostaa c:n arvon.

09 Sep 22 (edited 09 Sep 22)

Tehtävä 2. Binääriluvut

M: 26. Lukujen esitys tietokoneessa. Binäärilukujärjestelmässä on kaksi numeroa, nolla ja yksi. Tätä sanotaan bitiksi (binary digit). Vähiten merkitsevä eli viimeisimmäksi kirjoitettu bitti tarkoittaa lukumäärää yksi, toiseksi vähiten merkitsevä bitti lukumäärää kaksi, kolmanneksi vähiten merkitsevä lukumäärää neljä ja niin edelleen aina kakkosen potensseja jatkaen (8, 16, 32, 64, ...). Kokonaisen binääriluvun ilmoittama lukumäärä saadaan kun summataan nämä yksittäisten bittien ilmoittamat lukumäärät toisiinsa. Esimerkiksi binääriluku 1000101 olisi kymmenjärjestelmässä:

1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 ==
1*64  + 0*32  + 0*16  + 0*8   + 1*4   + 0*2   + 1*1   == 
  64                          +   4           +   1   == 69

Muunna seuraavat binääriluvut ihmiselle tutumpaan 10-järjestelmään:

10010 
1001110001 
1000000000000000 
1010101010101011 
10000000000000001 
10000000000000010 
10000000000000011

Muista vastaukseen laittaa myös aukilaskettuna se, miten sait tuloksen. Pelkkä numero ei riitä.

Nykytietokoneissa on tyypillistä jakaa muisti kahdeksan bitin mittaisiin tallennuspaikkoihin eli tavuihin (byte). Mikä on suurin kokonaisluku, jonka voit tallentaa kahden tavun (eli 16 bitin) kokoiseen tilaan (oletetaan että negatiivisia lukuja ei tarvitse esittää)? Entäpä jos pitää voida esittää positiivisia ja negatiivisia lukuja: mikä silloin on toisaalta pienin ja toisaalta suurin luku, joka kahden tavun kokoiseen tilaan mahtuu?

# tehtava2

Tehtävä 3. Algoritmit

M: 3. Algoritmit: Kirjoita suomenkielinen (ei ohjelmointikielinen) algoritmi eli toimintaohje, jolla kuvaat:

  • miten "wanhasta" kirjan näköisestä paperisesta puhelinluettelosta etsitään tietyn henkilön puhelinnumero
  • millaisella algoritmilla puhelinluettelosta löytyy tietyn numeron omistaja
  • kumpi algoritmeista on nopeampi ja miksi?

(Vinkki: Lue Luku3).

# tehtava3

M: 3. Algoritmit: Pitäydy tässä tehtävässä vielä irti C#:sta ja muista ohjelmointikielestä. Kuvaile suomen kielellä tai korkeintaan ''pseudokoodilla'', miten jakaisit seuraavat tehtävät yhtä pykälää tarkemmiksi osatehtäviksi. Jaa sitten vielä kukin osatehtävä seuraavalle tasolle pienemmiksi osatehtäviksi. Käytä jotakin luonnollisia ilmauksia toistolle ja päätöstilanteille ("jos ... niin ... mutta muussa tapauksessa ..."):

  1. Tiskaaminen
  2. Kahvin keittäminen
  3. Ohjeet kuinka kurssin sivuilta löytää kurssilla käytettävän sanaston (joka ei siis ole se tynkä luentomonisten lopussa).
# tehtava4
# atk

Tehtävä 4*. ATK

ATK = Automaattinen TietojenKäsittely. Tässä tehtävässä yritetään motivoida miksi automaatio on tärkeää ja miksi ongelma pitää osata ensin tehdä itse ja vasta sitten miettiä ratkaisua joka automatisoi sen. Lisäksi opetellaan yleistämään ongelmaa.

Huomautus: Seuraava pitää lukea huolella monta kertaa ja ymmärtää ennenkuin lähtee tekemään! Eli tehtävä on erittäin paljon luetun ymmärtämistehtävä. Kuten oikeastaan kaikki asiakkaan ja ohjelmoijan välinen kommunikaatio.

Laskettava montako karkkia opettaja heittää luennolla keskimäärin.

Opettaja heittelee luennoilla karkkeja. Luennolla heitettyjen karkkien määrä on luentokerroittain kokonaislukutaulukossa (taulukko). Ne luennot, joilla ei ole heitetty yhtään karkkia, jätetään laskematta tulokseen, eli keskiarvo lasketaan vain niiltä päiviltä, jolloin karkkeja on heitetty. Luonnollisesti myös negatiiviset arvot hylätään. Keskiarvon laskeminen lopetetaan (eli keskiarvo on tätä edeltävien hyväksyttyjen alkioiden keskiarvo) mikäli taulukosta tulee vastaan luku 99 tai suurempi. Laskeminen lopetetaan luonnollisesti myös mikäli taulukon alkiot loppuvat. Perustapausta vastaa alla olevan taulukon mallilasku M1 (vialliset = 0, lopetus=99).

Jotta algoritmi olisi yleiskäyttöisempi annetaan taulukon lisäksi parametrina minimiarvo (vialliset), joka vastaa alkuperäisen ongelman arvoa 0 (eli alkuperäisen "negatiiviset" tarkoitti että pienempiä tai yhtä suuria kuin vialliset). Yleiskäyttöisyyden vuoksi algoritmille annetaan vielä parametrina lopetusarvo, joka vastaa alkuperäisen ongelman arvoa 99 (lopetus). Mikäli keskiarvoa ei voi laskea, käytetään laskun tuloksena vialliset arvoa.

Laske em. sääntöjen mukaiset keskiarvot seuraavista arvoista. Aluksi on muutama mallilasku (M1, M2 ja M3).

nr taulukko vialliset lopetus tulos
M1 12, 0, 42, 14, 99, 12, 55 0 99 22.667
M2 1, 2, 3, 0 -2 10 1.5
M3 1, 2, 3, 0 -2 0 -2
1 12, 0, 42, 14, 99, 12, 55 1 42
2 12, 0, 42, 14, 100, 12, 55 -1 41
3 12, 0, 42, 14, 99, 12, 55 0 0
4 tyhjä 0 99
5 0, 10 0 99
6 -1, -2, 99, 1 0 99
7 12, 0, 42, 14, 99, 12, 55 99 0
8 12, 0, 42, 14, 99, 12, 55 98 0
9 -1, 0, 1 -10 99
10 -1, 0, 1 -1 99

Vinkki kaikille, kannattaa katsoa videot! :)

07 Sep 22 (edited 11 Sep 22)

Huom! Videossa pitäisi -2 kohdalla sanoa että hylätään "miinus kaksi" ja pienemmät. Miinus on unohtunut sanoa. Tosin arvolla ei ole merkitystä hylkäämisen suhteen tässä tapauksessa. Kun videoon laittaa tekstityksen päälle, niin sillä näkee virheen.

# karkit
# portaattehtava

Tehtävä 5*. Portaat

M: 6. Aliohjelmat: Täydennä alla oleva ohjelma Portaat.cs toimimaan niin, että se piirtää 5 porrasta. Ole tarkkana että ohjelma muodostaa kokonaisuuden, eli katso Näytä koko koodi kohdasta että mitä on valmiina (luokka), eli älä lisää sitä enää.

Vinkki: Ympyrän (katso luentojen PiirraPallo, Shape.Circle on oikeastaan sama kuin Shape.Ellipse kun leveys ja korkeus ovat samoja) tilalla Shape.Rectangle. Älä tee muutoksia mihinkään muualle kuin Täydennä merkittyihin kohtiin! (Huomaa että TIMissä on ohjelmarunkoa sen kirjoitusikkunan ulkopuolella - katso Näytä koko koodi - eikä using tai Main rivejä kirjoiteta. Ole tarkkana myös sulkujen kanssa! Samoin jos ajetaan Visual Studiossa Jypelin projektimalleista tehtynä, niin Main menee Ohjelma.cs tiedostoon ja omaan koodiin ei enää saa Main-funktiota kirjoittaa. )

Huom! Videolla sanotaan että 0,0 on neliön nurkassa ja tehtävässä että se on neliön keskipisteessä. Tehtävän saa tehdä kummalla tavalla tahansa. Tulevissa demoissa tosin on hyötyä että 0,0 on nurkassa.

Huom! Koodin saat kopioitua Visual Studioon ja takaisin seuraavasti (ja käytä tätä samaa tekniikkaa kaikissa tulevissa demoissa):

  1. Paina Näytä koko koodi-linkkiä.
  2. Katso mikä on luokan nimi (tässä tapauksessa Portaat).
  3. Luo projekti, jonka nimi on sama kuin em. luokan nimi.
  4. Paina Copy-linkkiä silloin kun koko koodi on näkyvissä TIMIssä.
  5. Liitä koodi VisualStudiossa (tässä esimerkissä Portaat.cs tiedostoon)
    • Ctrl-A Ctrl-V (Macissa tietysti Ctrl-tilalla Macin vastaava)
  6. Muokkaa ohjelmaa toimivaksi. ÄLÄ HÄVITÄ // BYCODE.. sisätäviä rivejä, niiden perusteella TIM poistaa sen koodin jota ei palauteta.
  7. Kun toimii, niin VisualStudiossa, niin kopioin koko vastaus (Ctrl-A Ctrl-C)
  8. Timissä ohjelma-alueessa liita vastaus tähän (Ctrl-A Ctrl-V)
  9. Aja
  10. Document (ja katso millainen dokumentti tuli, käy kaikissa dokumentin linkeissä)
# portaat

Vinkki: Katso 4. luennon LumiukkoAli, jossa piirretään pallo (mutta on myöskin aliohjelma PiirraLumiukko, jota ei tarvita tässä tehtävässä tai oikeastaan tämän tehtävän pääohjelma (Begin) on kuten PiirraLumiukko luennon tehtävässä.

Tuloksen pitäisi näyttää sijaintia lukuunottamatta tältä

Vinkki: Jos haluat sijainninkin samalla tavalla kuin mallikuvassa, voit lisätä Begin-metodin loppuun: Camera.ZoomToAllObjects(50); Loppuun lisääminen tarkoittaa että laitetaan ennen Begin-metodin lopettavaa aaltosulkua.

Tehtävä 6. Ympyrät kolmion muotoon

M: 6. Aliohjelmat: Aja alla oleva ohjelma, joka piirtää lumiukon.

Huom! Yritä tehdä ohjelmasta sellainen, että ympyröiden säde on yhdessä paikassa. Tällöin muuttamalla sädettä syntyy täsmälleen samanlainen kuva, eri "mittakaavassa". Saat merkitä tehtävästä yhden pisteen vaikket tuossa "yleistämisessä" vielä onnistuisikaan.

  1. Muuta ohjelma sellaiseksi, että yksittäisen pallon piirtämiseksi on oma aliohjelma PiirraPallo. Mieti mitä parametreja pallon piirtämiseksi tarvitaan.
  2. Muuta sitten ohjelma sellaiseksi, että se piirtää kuusi ympyrää kolmeen riviin siten, että ympyrät juuri koskettavat toisiaan. Alla mallikuva ratkaisusta. Anna ympyröille säteeksi 50.

Vinkki: Piirrä paperille kolme toisiaan sivuavaa ympyrää ja niiden keskipisteiden muodostama kolmio. Laske kolmion korkeus (ks. System.Math.Sqrt. Esimerkiksi Pythagoraan lauseesta saataisiin hypotenuusan c pituus ratkaistua näin: c = Math.Sqrt(a*a + b*b) ).

Muokkasin lumiukkoa nyt niin, että jokaisen pallon säde olisi samalla kohdalla, eli käytännössä lopputuloksena näyttää siltä niinkuin lumiukkoa katsoisi ylhäältä alaspäin (ohjelmoin kunkin pallon eri värillä jotta kaikki pallot ei ole valkoisia koska sillon niitä ei tietenkään toisistaan erottaisi). Pisteitä siitä tuli nyt kuitenkin vain 0.1 eli ymmärsinköhän jotain väärin? Pitäisikö lumiukon pallot tehdä siis sittenkin tuon lumilyhdyn näköiseksi, siten, että alhaalla on kaksi palloa ja niiden päällä/yläpuolella keskellä 1? Tarkoittaako "säteen muuttaminen" säteen koon JA sijainnin muuttamista, eikä pelkästään sijainnin muuttamista?

VL: Tuo tarkoittaa että koodissa säde on sanottu vain kerran sijoittamalla se johonkin muuttujaan jota käytetään jatkossa. Eli jos halutaan lumilyhty eri kokoisilla palloilla, niin vain yhdessä kohti koodia pitää tehdä muutos. Siinä ei siis puhuta pallojen sijainneista lopputuloksessa.

Pitääkö tässä näkyä aliohjelma jotta voi saada tarvittavat täydet pisteet, eli ei riitä että pallot ovat alemman kuvan vaatimalla tavalla?

VL: Luitko ohjeen Points/Pisteet rivin kohdalta? #- Ai, kappas, kiitoksia! (Tuo kohta näytti ensin siltä että sitä ei pysty muokkaamaan, tai ehkä oli niin väsy ettei tajunnut ajatella loppuun asti.. asia kunnossa!)

07 Sep 22 (edited 09 Sep 22)
# ympyrat
# liuku

L1. Liukuhihna

Dokumentissa Liukuhihna on hauska robotti. Vastaa siellä oleviin kysymyksiin. Maksimissaan voit tuolta kerätä 2.5 p. Kirjoita alla olevaan tehtävään miltä liukuhihnatehtävä tuntui ja laita itse tehtävän pisteisiin liukuhihnan tuloksesi. Saat tehdä tähän demoon tehtävästä osan ja kolmanteen demoon osan, kunhan kumpaankin merkkaamasi (demo2 + demo3) summa on sama kuin Liukuhihnatehtävän pistemäärä.

Huom! Pisterajatarkistus ei vättämättä toimi, joten et saa huijata laittamalla liikaa pisteitä!

# tehtavaL1

B1. Harjoitustyö

Kurssille kuuluu harjoitustyö, mutta mitä harjoitustyössä sitten pitäisi tehdä? Jollei valmista peli-ideaa ole, tutustu aiempien vuosien tuotoksiin ja raportoi mietteesi kolmesta eri (Jypeli) pelistä tai ei-pelistä. Liitä mukaan myös linkki, mistä ko. pelin/videon/ohjelman löytää.

Alla linkkejä, mistä voi löytää peleihin liittyviä videoita ja itse pelejä:

Katso myös video GalaxyTripin tekemisestä ja sen lähdekoodi.

# tehtavab1

B2. Alice ja puut

Tämä jälkeen ei ole enää Alice-demoja, eli jos sitä ei ole vielä asentanut, niin kannattaa miettiä asentaako tämän takia.

Joko Alice 2.3: Aloita avaamalla Alicen luisteluesimerkki Eli aloita luistelu-tutorial ja poistu siitä saman tien. Taustalla on puita. Laita kaksi niistä saapumaan luistelijan luo niin, että ensimmäinen saapuu 2 sekunnin aikana ja "kaatuu" 45 astetta vasemmalle sen jälkeen, kun toinen on saapunut. Ensimmäisen kaatumisen jälkeen toinen kaatuu 45 astetta oikealle. Tehtävän vastauksena palauta lisäämäsi "ohjelmarivit" käsin tekstiksi kopioituna tyyliin

IceSkater.do simple spin

Tai Alice 3: Luo maailma missä on vähintään 3 "oliota". Sitten kuten edellä että kaksi saapuu sen kolmannen luo ja kaatuu kuten edellä.

# tehtavab2

B3. Khan Academy ja Code Org

Tässäkin kannattaa miettiä viekö erilainen materiaali omaa edistymistä eteen- vai taaksepäin. Jotkut kokevat hyödylliseksi, toiset ajanhukaksi.

Tee Khan Academyn "luennot" Intro to Variables ja More on Variables. Kokeile lisätä koodiin joku oma muuttuja ja kokeile muutella sitä.

Kokeile myös Code.orgia

Tehtävän vastauksena kerro mielipiteitä Khan Academyn "luennoista" ja käytön järkevyydestä tällä kurssilla.

# tehtavab4

G1-2. Tippuvat suorakulmiot

Tee ohjelma nimeltä SuorakulmiotFysiikalla.cs. Tee siihen aliohjelma nimeltä PiirraSuorakulmio(), joka lisää ruudulle (peliin) PhysicsObject-tyyppisen suorakulmion. Tee aliohjelma siten, että se ottaa parametrinä pelin, suorakaiteen koordinaatit ja mitat. Laita peliin vielä painovoima seuraavasti (2d-vektori ottaa vastaan kaksi koordinaattia) ja sijoita se Begin()-aliohjelmaan

Gravity = new Vector(/*täydennä 2d-vektorin parametrit...*/);

Laita kenttään myös reunat, etteivät palaset putoile ulos ruudusta.

Level.CreateBorders();

Lisää kentälle 100 satunnaisen kokoista suorakaidetta satunnaiseen paikkaan. Vinkki: for-silmukka ja RandomGen.

HUOM! Vastauksen tallentaminen kestää, koska tästä tehdään palvelimella muutaman sekunnin video joka sitten näytetään tallentamisen jälkeen.

# tehtavag12

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.