Sinun UserID: 0

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

Ilmoittaudu missä ryhmässä (live/zoom/video) 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 (iltaryhmä lopetettu)
  • Please to interact with this component.

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

    Ma 16-18 Zoomista (iltaryhmä lopetettu)
  • 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ä.

Ohjelmointi 1, s 2023 / Demo 2

Ohjeet ja palautusten video

Oppimistavoitteet

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

# Oppimistavoitteet

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

Edellisten demojen vastausten korjaaminen E1 (pakollinen)

Video 1 (1 p) 

TDD-pohja

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).

Villen tehtävä 2.6: Onko tuota mahdollista tehdä oikein vai pitäisikö "a++" olla "++a"?

VL: On mahdollista, eikä ole tarkoitus vaihtaa operaattoreita. (Think out of the Box)

07 Sep 23 (edited 09 Sep 23)
# villev1

Pitääkö kaikista tehtäväksi annetuista Ville-tehtävistä saada täydet pisteet, eli pitääkö "jankata" niitä niin kauan, että on 10/10? Vai riittääkö, että tekee tehtävän läpi ja saa esim. 6/10.

VL: Sanoisin että Ville-tehtävät ovat omantunnon kysymys. Jos väärästä kuitenkin tietää mikä olisi oikea vastaus, niin se riittäköön TIMin suuntaan.

17 Sep 23 (edited 17 Sep 23)
# 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 Riderilla. 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

Tehtävä 2. Binääriluvut

M: 26. Lukujen esitys tietokoneessa. Luento 04. 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:

  1. Miten "wanhasta" kirjan näköisestä paperisesta puhelinluettelosta etsitään tietyn henkilön puhelinnumero.
  2. Millaisella algoritmilla puhelinluettelosta löytyy tietyn numeron omistaja.
  3. Kumpi algoritmeista on nopeampi ja miksi?

(Vinkki: Lue Luku3).

Mitä jos ei ole koskaan käyttänyt paperista puhelinluetteloa eikä tiedä miten sieltä löytää numeroita ;_;

13 Sep 23

Puhelinluettelon rakenne muistaakseni: Kansi -> mainoksia -> hakemisto josta selviää miltä sivulta alkaa mikäkin kirjain -> numerosivuja jossa henkilöiden ja yritysten nimiä aakkosjärjestyksessä (sukunimi ensin, etunimi sitten) ja nimeä vastaava puhelinnumero rivin lopussa.

15 Sep 23
# 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

Tässä tehtävässä on mielestäni liikaa työtä yksinkertaisen pointin esiin tuomiseen.

VL: tuohan riippuu ihan siitä, miten yksityiskotaisia algoritmejä kirjoittaa. Ja en tiedä oletko tulkinnut tuon "yksinkertaisen pointin" ihan oikein tässä (vielä :-)

14 Sep 23 (edited 14 Sep 23)
# 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.

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). Perustapausta vastaa alla olevan taulukon mallilasku M1 (vialliset = 0, lopetus=99).

Vastatakseni (ulkopuolisena), -1>-10. Tehtävänannon ensimmäinen osa johtaa harhaan hylkäyssääntöjen raja-arvojen osalta, kaikki raja-arvot uusittiin ja mukana maininnat 0 ja neg arvoista eivät sellaisinaan päde.

VL: Ei johda harhaan, vaan se on ensimmäinen tulkinta, jolle sitten on tehty yleistys.
Oletko tehnyt vääränlaisen yleistyksen?

12 Sep 23 (edited 07 Nov 23)
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

Tehtävän koko pointti vaikuttaa olevan tietoinen harhautus ilmaisemalla erittäin yksinkertainen algoritmi monimutkaisesti parin virkkeen sijaan. Tästä syystä tehtävä on "luetun ymmärtämistehtävä". Ilmaisussa on myös lieviä rakenteellisia vikoja, joita lopputuleman tietävä ei havaitse, mutta joista tehtävää noviisina lähestyvä tarkka ajattelija häiriintyy. Ensimmäisessä kappaleessa ei esimerkiksi esitellä muuttujia nimillä yksiselitteisesti, ja pian niihin viitataan niiden arvoilla tai kuvauksilla. Lukijan täytyy harkita pari vaihtoehtoista tulkintaa ja lopulta vetää yhtäläisyysviivat kolmen ilmaisun välille: "vastaa -- arvoa 0"="luennot, joilla ei ole heitetty yhtään karkkia"=vialliset = 0".

VL: Sitähän se ohjelmointi on. 1) on jokin ongelma joka ei ole lausuttu mitenkään "ohjelmointikielellä". 2) Siitä muokataan ehkä ohjelma, mutta havaitaan että siitä saisi yleiskäyttöisemmänkin. Mutta ei sitä ratkaisua asiakas anna suoraan, vaan se pitää koodarin kaivaa. Se että algoritmi on yksinkertainen, ei tarkoita että se valmiiksi pitäisi opiskelijalle sellaisenaan antaa.

13 Sep 23 (edited 09 Nov 23)

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 Riderissa 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 Rideriin 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 Riderissa (tässä esimerkissä Portaat.cs tiedostoon)
    • Ctrl-A Ctrl-V (Macissa tietysti Ctrl-tilalla Macin vastaava)
  6. Muokkaa ohjelma toimivaksi. ÄLÄ HÄVITÄ // BYCODE.. sisätäviä rivejä, niiden perusteella TIM poistaa sen koodin jota ei palauteta.
  7. Kun toimii Riderissa, niin kopioi koko vastaus (Ctrl-A Ctrl-C)
  8. Liitä vastaus TIMin ohjelma-alueessa (Ctrl-A Ctrl-V)
  9. Aja
  10. Document (ja katso millainen dokumentti tuli, käy kaikissa dokumentin linkeissä)

Kohta 8. sanooo että liitä vastaus (Ctrl-A Ctrl-V), mutta varmaan on tarkoitus jättää Riderista kopioimasta koodista pois nuo mitä TIMissä on valmiina (using... , namespace... jne.)? Jos liittää kaiken suoraan Riderista, ei koodi tule toimimaan.

VL: Jos tuo tehdään just oikein eikä hukata sinne syntyviä // BYCODEBEGIN // BYCODEEND -rivejä, niin TIM osaa poistaa niiden ulkopuolisen osan.

13 Sep 23 (edited 13 Sep 23)
# 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) ).

Yritän laskea kolmion korkeutta ja en ymmärrä miksi tälläinen virhe tulee? Eikö double tyyppisia muuttujia voi laittaa neliöjuureen tai potenssiin? Cannot apply operator '^' to operands of type 'double' and 'double' Tuolta näyttää rivi miltä herjaa tuota double a = Math.Sqrt((2*r)^2 - r^2);

VL: kielessä ei ole tuollaista ^-operaattoria. Riittää ihan r*r tyyliin.

15 Sep 23 (edited 15 Sep 23)
# ympyrat

Saan pallot asettumaan "oikein", mutta jostain syystä en pääse matemaattiseen ongelmaan "kiinni". Piirsin kuvion ruutupaperille koordinaatistoon ja saan mielestäni x- ja y-koordinaatit r:n kertoimina suoraan kuvasta. Koodissa ne ei kuitenkaan toimi. Miksi haluaisin laskea hypotenuusan kun teidän jo että a=r ja b=r? XD

VL: Minä en kyllä millään osaa tuota laskea käyttämättä vanhaa Pythagoraan-kaava ja sitä kautta neliöjuurta. Minusta tuossa sinun kuvassasi pallot eivät täysin sivua toisiaan.

Olet tod.näk. oikeassa ja minä väärässä. Laskemalla tulos on eri.

12 Sep 23 (edited 20 Sep 23)
# 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.

Voisi sanoa selkeämmin mitä "satunnainen koko" tässä meinaa käytännössä, omiin suorakulmioihin laitoin maksimiksi 100x100 (kun kenttä on 1000x1000) ettei menisi liian holtittomaksi ja se näyttää suht. hyvältä mutta kauneus on lopulta katsojan silmissä, kokohan voisi olla maksimissa vaikka 1000x1000 jos haluaa hullutella.

VL: Guru-tehtävä! Mitään ei määritellä tarkasti. Koodari ei koskaan saa tarkkoja speksejä, jos saa, niin sen nimi on valmis ohjelma.

16 Sep 23 (edited 17 Sep 23)

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

# tehtavag12

Minulle jäi vähän auki, että mitä "peli.Add(p);" tekee. Yhdessä tehtävässä tuli virheilmoitus kun tuo oli mukana ja toisessa taas se piti olla.

VL: Lisää siis sen p:n siihen peli-nimiseen olioon. Jos samaa yrität Begin metodissa, niin se valittaa, ettei tiedä mikä on peli. Siellä se kohde mihin lisätään on se peliolio itse, eli this. Sellaisissa paikoissa missä this on olemassa (eli ei-staattisten metodien sisällä, meillä lähinnä tuo Begin), sen saa kirjoittaa siihen, mutta ei ole pakko kirjoittaa. Eli siellä pitäisi oikeasti olla this.Add(p). Kun mietit informaation määrää, niin pakkohan on jollakin tavalla kertoa mihin lisätään ja mitä lisätään. Siksi pelkkä Add(p) ei voisi olla mielekäs, koska kukaan ei tietäisi mihin lisätään (paitsi tuossa mainitussa Begin-metodissa koska se käsittelee itseään, niin jos ei muuta sanota, niin toimet kohdistuvat siihen itseensä).

Sulla on muuten tuossa liikaa sulkuja, vertaa luennon LumiukkoAli. Niiden takia tuo sun aliohjelma PiirraNelio ei voi olla public kuten saisi olla. Sä muuten myös piirrät 101 neliötä

Kiitos!

17 Sep 23 (edited 18 Sep 23)

Palautteena tehtävästä, että tämä tehtävä oli hauskaa yrittää tehdä. Tämä on erinomainen tehtävä ja suosittelen muidenkin yrittää tätä, jos vähääkään kokemusta on koodailusta tai jos haluaa muuten vaan kokeilla. :D

18 Sep 23

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