Harjoitustehtävät 6

Osaamistavoitteet

Tämän harjoituksen päätteeksi

  • Osaat käyttää silmukoita ja taulukoita
  • Osaat "kulkea" silmukan avulla taulukon läpi
  • Muistat, että double-lukuja ei voi vertailla luotettavasti == -operaattorilla
# testaaminen

Testaaminen ja pisteytys

Kaikki tehtävät, joissa on Aja omat testit -painike, tulee testata. Omien testien kirjoittaminen ja ajaminen on tämän kerran tehtävissä vaadittua täysien pisteiden saamiseksi. ComTest testeissä voit käyttää pohjana seuraavaa:

/// <example>
/// <pre name="test">
/// KIRJOITA TESTIT TÄHÄN VÄLIIN
/// </pre>
/// </example>

Lisäohjeita ComTestin syntaksiin löydät ComTest-ohjeista.

Muistutus double-tyyppisten lukujen testaamisesta

T0. Palaute tästä osasta (0,5 p.)

Auta meitä parantamaan tätä kurssia antamalla palautetta tästä kurssin osiosta.

Huom: Vastaa tähän vasta, kun olet valmis tämän harjoitustehtäväkerran tehtävien kanssa

Avaa palautelomake klikkaamalla tästä

T1*. Tee taulukko (1 p.)

Lue ensin monisteesta: 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Tee funktio TeeTaulukko. Funktio ottaa parametrina kokonaisluvun, ja palauttaa taulukon, jossa on luvut kyseisestä luvusta alaspäin ykköseen saakka.

Esimerkiksi kutsu TeeTaulukko(5) palauttaisi taulukon [5, 4, 3, 2, 1], TeeTaulukko(1) palauttaisi taulukon [1], jne.

Funktio ei saa tulostaa mitään.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

Ohjeita ja vinkkejä tehtävän tekemiseen

# tehtava_tee_taulukko

Jostain syystä en saa "aja omat testit" osiota hyväskymään koodia, Saan virhekoodin, jonka mukaan Tim ei löydä funktiota tai tarvittavaa lähdetiedostoa, Voinko vaikuttaa tähän, miten koodia pitäisi muuttaa että toimisi? Sama toistuu T2 tehtävässä (kun en voi muuttaa esim sulkeiden paikkoja palautelaatikon ulkopuolella)

Aja omat testit ei mene läpi, koska et kirjoittanut omia testejä. Katso tämän sivun yläpuolella olevaa Testaaminen ja pisteytys -osiota ohjeita varten. Lisäesimerkkejä testien kirjoittamisesta dokumentaation yhteydessä löytyy myös Luennon 12 koodiesimerkeissä -DZ

11 Oct 25 (edited 11 Oct 25)

T2*. Itseisarvo (1 p.)

Lue ensin monisteesta: 13. Ehtolauseet sekä 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Kirjoita funktio Itseisarvo, joka antaa luvun itseisarvon, eli annetun luvun etäisyyden nollasta lukusuoralla. Funktiota tulee voida kutsua seuraavasti.

// Määrittele itse luku-muuttuja tässä...
double lukuEiNegatiivisena = Itseisarvo(luku);

Math.Abs-funktiota, tai mitään muutakaan valmista funktiota ei saa käyttää.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

# tehtava_itseisarvo

Miksi koodini suostunut ajamaan, mutta opiskelutoverini jakama koodi joka oli identtinen toimii?

Sinulla näyttä kyllä tässä 0.9 p, eli ajamisesti tuli kyllä täydet pisteet. Aja omat testit -painike puolestaan vaatii, että kirjoitat ComTest-dokumentaatiotesteja. -DZ

Ole tarkkana myös aliohjelman nimen kanssa (Itseisarvo vs ItseisArvo). -AJL

19 Nov 25 (edited 20 Nov 25)

T3. Kahden luvun välinen etäisyys (1 p.)

Lue ensin monisteesta: 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Kirjoita funktio Etaisyys, joka palauttaa kahden luvun välisen etäisyyden. Funktiota tulee voida kutsua seuraavasti.

double a, b;
a = 3.2; // Nämä ovat esimerkkilukuja.
b = 8.5; // Luonnollisesti nämä voisivat olla muitakin lukuja. 
double etaisyys = Etaisyys(a, b);

Esimerkiksi Etaisyys(3.2, 8.5) on likimain 5.3, kuten myös Etaisyys(8.5, 3.2). Edelleen, Etaisyys(-1, 1) on 2.

Voit hyödyntää Tehtävässä T2 luomaasi Itseisarvo-funktiota liittämällä se mukaan tähän vastaukseen.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

# tehtava_etaisyys
# tehtava_keskiarvo

T4. Keskiarvo (1 p.)

Lue ensin monisteesta: 16. Toistorakenteet (silmukat), 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Tee funktio Keskiarvo, joka ottaa vastaan kokonaislukuja sisältävän taulukon, ja palauttaa niiden keskiarvon.

int[] luvut = { 10, 3, 5, 7, 12, 105, 10, 2, -1, 15, 20 };
double keskiarvo = Keskiarvo(luvut);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");

Yllä oleva esimerkki palauttaisi keskiarvoksi noin 17.0909. Jos luvut-taulukko on tyhjä, tulee funktion palauttaa 0.0. Keskiarvo-funktio ei saa tulostaa mitään.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

# tehtava_keskiarvo
# tehtava_keskiarvo_ennen_neg

T5. Keskiarvo negatiiviseen asti (1 p.)

Lue ensin monisteesta: 16.8. Silmukan suorituksen kontrollointi.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Muuta Tehtävän T4 Keskiarvo-funktiota niin, että jos aineistossa tulee vastaan negatiivinen luku, palautetaan keskiarvo siihen asti käsitellyistä luvuista. Aineiston käsittely loppuu siihen. Jos aineisto ei sisällä yhtään sopivaa lukua, tulee funktion palauttaa 0.0.

Esimerkki:

int[] luvut = { 10, 3, 5, -1, 15, 20 };
double keskiarvo = Keskiarvo(luvut);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");

Tämä ohjelma tulostaa 6, koska (10 + 3 + 5) / 3 = 6. Lukua -1 ja sen jälkeen olevaa aineistoa ei oteta mukaan.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

# tehtava_keskiarvo_ennen_neg

Ryderissa on jokin ongelma, se antaa virhettä näillä samoilla testeillä. Mistäköhän johtuu?

08 Oct 25

Tehtävä väittää, että 0+0+0+0+0/5=4?

"Funktion Keskiarvo ratkaisusi on osittain väärin. Löydetyt virheet: * Negatiivinen luku tulee päättää aineiston käsittelemisen. * Esimerkiksi syötteellä: [0, 0, 0, 0, 0], pitäisi palauttaa: 4. Sinun funktiosi palauttaa: 0."

Tässä oli valitettavasti tarkistimessa bugi, mikä rikkoi tulostuksen. Tämä nyt korjattu. Yleisesti vinkkinä: katso monisteesta Luku 16.8. ja GitLabista SummaAlle sekä JaaEnnenNollaa -esimerkkejä. -DZ

08 Oct 25 (edited 09 Oct 25)
# tehtava_keskiarvo_alarajalla

T6. Keskiarvo alarajalla (1 p.)

Lue ensin monisteesta: 16. Toistorakenteet, 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Muuta Tehtävän T4 Keskiarvo-funktiota niin, että sillä on lisäksi toinen parametri int minimi. Jos aineistossa tulee vastaan luku, joka on pienempi tai yhtäsuuri kuin kyseinen minimi-parametrin arvo, se hylätään, mutta aineiston käsittelyä kuitenkin jatketaan.

Jos aineisto ei sisällä yhtään sopivaa lukua, tulee funktion palauttaa minimi-parametrin arvo.

Esimerkki:

int minimi = 3;
int[] luvut = { 11, 4, 2, 6 };
double keskiarvo = Keskiarvo(luvut, minimi);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");

Tämä ohjelma tulostaa 7, koska (11 + 4 + 6) / 3 = 7. Lukua 2 ei oteta mukaan, koska vain minimi-parametria suuremmat luvut otetaan mukaan.

Voit halutessasi tehdä Keskiarvo-funktiosta uuden version kahdella parametrilla käyttäen aliohjelman kuormitusta, niin ei tarvitse välttämättä tuhota edellistä vastaustasi. Voit myös suoraan kopioida Tehtävän T4 vastaukseksi ja muokata sen tämän tehtävän vaatimuksiin sopivaksi.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

# tehtava_keskiarvo_alarajalla

"Funktion ratkaisusi on osittain virheellinen. Ensimmäinen löydetty virhe: * Minimi voi olla positiivinen. Esimerkiksi syötteillä: [5, 4, 3, 2, 1], 3 Pitäisi palauttaa: 4.5 Funktiosi palauttaa: 4 " Mutta 5,4,3 keskiarvo on 4 ...? Ja kyllä, minimi voi olla positiivinen.

Tehtävänannon mukaan vain vain minimi-parametria suuremmat luvut otetaan mukaan keskiarvoon laskentaan. Jos minimi = 3, lukua 3 ei siis oteta mukaan, koska se on yhtäsuuri kuin minimi. -DZ

09 Oct 25 (edited 09 Oct 25)

"Esimerkiksi syötteillä: [7, 7, 7], 7 - Pitäisi palauttaa: 7" ei taida pitää paikaansa?

Kyseisessä esimerkissä ei ole yhtään keskiarvoon mukaanotettavaa lukua. Silloin tehtävänannon mukaan pitäisi palauttaa itse minimi, joka on 7. -SS

10 Oct 25 (edited 10 Oct 25)

V1. ViLLE (1 p.)

Tee ViLLE-tehtävät: 5.6-5.8, 9.4-9.6.

# visu_ville

B1. Keskiarvo raja-arvolla (1 p.)

Lue ensin monisteesta: 16.8. Silmukan suorituksen kontrollointi.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Muuta Tehtävän T6 Keskiarvo-funktiota lisäämällä siihen uusi parametri int maksimi. Jos aineistossa tulee vastaan luku, joka on vähintään yhtä suuri kuin kyseinen maksimiarvo, aineiston käsittely päättyy siihen.

// Esimerkki 1
int minimi = -7
int maksimi = 99
int[] luvut = { -5, 1, -4, 0, 98 };
double keskiarvo = Keskiarvo(luvut, minimi, maksimi);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");

Tämä ohjelma tulostaisi 18. Aineisto on kokonaisuudessaan minimin ja maksimin välissä, joten lasketaan "tavallinen" keskiarvo.

// Esimerkki 2
int minimi = 3;
int maksimi = 99;
int[] luvut = { 11, 4, 2, 6, 99, 12, 0, -3 };
double keskiarvo = Keskiarvo(luvut, minimi, maksimi);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");

Tämä tulostaisi 7. Vain luvut 11, 4, ja 6 lasketaan keskiarvoon mukaan: 2 on alle minimin, ja käsittely päättyy lukuun 99.

Voit halutessasi tehdä Keskiarvo-funktiosta uuden version kahdella parametrilla käyttäen aliohjelman kuormitusta, niin ei tarvitse välttämättä tuhota edellistä vastaustasi. Voit myös suoraan kopioida Tehtävän T6 vastaukseksi ja muokata sen tämän tehtävän vaatimuksiin sopivaksi.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.

# bonus_keskiarvo_raja_arvolla
# miidi

B2-3. Paras hinta-arvio asunnolle (2 p.)

Lue ensin monisteesta: 16. Toistorakenteet, 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Antti-Jussi haluaa myydä asuntonsa. Hän on saanut eri kiinteistönvälittäjiltä useita hinta-arvioita asunnostaan, ja pohtii nyt, mikä olisi sellainen myyntihinta, joka ei ole liian korkea (koska silloin asunto ei mene kaupaksi), mutta ei myöskään liian matala (koska silloin hän ei saa parasta mahdollista hintaa). Hän päätyy seuraavaan ratkaisuun.

Hän laskee ensin välittäjien antamien hinta-arvioiden keskiarvon. Sitten hän laskee, kuinka paljon kukin yksittäinen hinta-arvio poikkeaa tästä keskiarvosta. Paras hinta-arvio (ja siten myös paras välittäjä Antti-Jussin määritelmän mukaan) on se, jonka poikkeama on pienin. Jos tällaisia hinta-arvioita on useita, paras hinta-arvio on näistä suurin. Antti-Jussi valitsee tämän kiinteistövälittäjän.

Merkitään asuntojen hinta-arvioita yksinkertaisuuden vuoksi lukuina siten, että 100 tarkoittaa 100 tuhatta euroa, 105 tarkoittaa 105 tuhatta euroa, jne.

Esimerkiksi jos Antti-Jussin asunnosta on saatu hinta-arviot 100, 110, 90, 105 ja 115, niin niiden keskiarvo on 104. Poikkeamat ovat 4, 6, 14, 1 ja 11. Paras hinta-arvio on 105, koska se on lähimpänä keskiarvoa (poikkeama on 1).

Tee funktio ParasHintaArvio, joka ottaa hinta-arviot (int-taulukko) ja palauttaa niiden perusteella sen hinta-arvion, joka on lähimpänä taulukon lukujen keskiarvoa.

Esimerkki aliohjelman toiminnasta:

int parasHintaArvio = ParasHintaArvio([100, 110, 90, 105, 115]);
Console.WriteLine($"Paras hinta-arvio: {parasHintaArvio}"); // Tulostuu "105"

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 1,8 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,2 p.

Jos automattinen arvostelu antaa mielestäsi väärät pisteet sinulle, käytä Mukautetut pisteet -toimintoa ja arvioi oma suorituksesi asteikolla: 25% = 0.5 p, 50% = 1 p., 75% = 1.5 p., 100% = 2 p.

Ohjeita ja vinkkejä tehtävän tekemiseen

# bonus_paras_hinta_arvio

Tarkistin antaa väärät pisteet, vaikka ilmottaakin että ratkaisu oikein ja testin toimivat. Onkohan tarkistimessa jotain häikkää vai onko vastaus vielä puutteellinen?

Kiitos, tämä korjattu nyt -DZ

09 Oct 25 (edited 09 Oct 25)

B4. Esittelyrivi ja tynkä toteutus (1 p.)

Tee seuraavia funktiokutsuja vastaavat funktioiden esittelyrivit ja lyhyimmät mahdolliset toteutukset (tynkä), jotta ohjelma kääntyy. Näin ohjelmasta saadaan syntaktisesti toimiva, mutta sen ei tarvitse toimia loogisesti oikein. Muista kirjoittaa myös dokumentaatiot: niiden tekeminen onnistuu, vaikka ohjelma ei vielä toimikaan loogisesti oikein.

Esimerkki (älä kopioi tätä):

Tehtävässä annetaan pääohjelma valmiina. Ohessa esimerkki.

/// <summary>Funktiokutsu ja apumuuttuja</summary>
/// <param name="args">Ei käytössä</param>
public static void Main(string[] args)
{
  string lyhyempi = LyhyempiJono("Matti", "Pertti"); 
}

Tämä koodi ei kuitenkaan käänny, koska LyhyempiJono-funktiota ei ole olemassa. Niinpä seuraava koodi (aliohjelman esittelyrivi sekä toteutuksen "tynkä") pitää itse kirjoittaa.

/// <summary>
/// Palauttaa kahdesta merkkijonosta lyhyemmän.
/// </summary>
/// <param name="s1">Ensimmäinen jono</param>
/// <param name="s2">Toinen jono</param>
/// <returns>Lyhyempi jonoista</returns>
public static string LyhyempiJono(string s1, string s2)
{
    return s1;
}

Nyt ohjelma kääntyy. Funktio ei vielä oikeasti palauta lyhyempää jonoa, mutta tämä riittää tämän tehtävän vastaukseksi.

Palautus: Palautuslaatikkoihin palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Tehtävä koostuu alatehtävistä B4.1-B4.5. Kussakin alatehtävässä oikein kääntyvästä ohjelmasta saa 0,2 p.

Vinkki: B4.1-kohdassa funktion toteutukseksi riittää pelkkä return false;.

# bonus_tynka_1
# bonus_tynka_2
# bonus_tynka_3

Huomaa, että alatehtävässä B4.4 ei todella tarvitse laittaa lukuja palautettavan double-taulukon sisällöksi. Tyhjä double-taulukko riittää paluuarvoksi.

# bonus_tynka_4
# bonus_tynka_5
# bonus_etaisyys_2d

B5. Pisteiden etäisyys 2-ulotteisella tasolla (1 p.)

Lue ensin monisteesta: 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Pythagoraan lauseen avulla voidaan laskea 2-ulotteisella tasolla olevan kahden pisteen välisen etäisyys.

Tee funktio Etaisyys, jonka esittelyrivi on seuraava:

public static double Etaisyys(double x1, double y1, double x2, double y2)

Tämä funktio palauttaa kahden pisteen p1 ja p2 välisen etäisyyden, jossa piste p1 muodostuu koordinaateista (x1, y1) ja p2 koordinaateista (x2, y2).

Pythagoraan lauseen yhteydessä saatat saatat tarvita laskea luvun neliöjuuren . Koodina tämä olisi

double aNeliojuuri = System.Math.Sqrt(a);

Voit myös katsoa muistin virkistykseksi Harjoitustehtäväkerran 2 Tehtävän T5 (Lumilyhty).

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Koodin ajamisesta Aja -painikkeella 0,1 p; oikeasta tulostuksesta 0,4 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,5 p.

Ohjeita ja vinkkejä tehtävän tekemiseen

# bonus_etaisyys_2d

B6. Luvun skaalaus (1 p.)

Lue ensin monisteesta: 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.

Tee aliohjelma Skaalaa(luku, min, max), joka skaalaa välillä [0, 1] olevan luvun välille [min, max].

Esimerkkitapauksia:

Skaalaa(0.2, -3.0, 3.0) ~~~ -1.8;
Skaalaa(0.2, 1.0, 6.0)  ~~~ 2.0;
Skaalaa(0.0, 1.0, 6.0)  ~~~ 1.0;
Skaalaa(1.0, 1.0, 6.0)  ~~~ 6.0;

Esimerkiksi ensimmäinen testitapaus tarkoittaa että välin luku on omaan väliinsä nähden samassa suhteessa kuin luku on väliin .
Piirrä vaikka molemmat välit ja ko. luvut oman välinsä sisälle.

Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.

Arviointi: Koodin ajamisesta Aja -painikkeella 0,1 p; oikeasta tulostuksesta 0,4 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,5 p.

Ohjeita ja vinkkejä tehtävän tekemiseen

# bonus_skaalaa

Tehtävä ei näytä tomivan, sillä ensimmäinen linja koodia on "File not found https://svn.cc.jyu.fi/srv/svn/ohj1/luentomonistecs/esimerkit/Pohja/Pohja/Pohja4.cs"

Kiitos huomiosta! Korjattu -DZ

01 Dec 25 (edited 01 Dec 25)
# guru_game_of_life_simulointi

G1. Game of Life: simulointi Jypelissä (1 p.)

Jos haluat tehdä tehtävän Riderissa: Jypeli-tehtävien tekeminen Riderissa.

Katso Harjoitustehtvien 5 Tehtävän G1-2 mallivastaus menemällä tehtävän palautuslaatikon kohdalle ja painamalla laatikon yläpuolella olevaa Näytä mallivastaus -painiketta. Tee mallivastausta ja Jypeliä käyttäen graafinen versio, jossa on paljon ruutuja (suuruusluokkaa 60 y-suunnassa) ja sukupolvia lasketaan 0.1 sekunnin välein.

Saat mallivastauksen Rider-projektiisi seuraavasti:

  1. Tee FysiikkaPeli-projekti kopioi tämän tehtävän pohjakoodi Rideriin seuraavalla ohjeella: Jypeli-tehtävien tekeminen Riderissa.

  2. Liitä projektiin mallivastaus tiedostoon Sopulit.cs. Saat sen helpointen Riderissa seuraavasti:

    • Solution Explorerissa paina hiiren oikeata projektin nimen päällä
    • Valitse Add -> Class/Interface
    • Kirjoita nimeksi Sopulit ja paina Enter-painiketta
    • Avaa Sopulit.cs klikkaamalla se kahdesti Solution Explorerissa
    • Kumita kaikki tiedoston sisältö pois ja liitä tilalle Harjoitustehtävien 5 Tehtävän G1-2 mallivastaus
    • Tallenna tiedosto lopuksi (Ctrl+S tai Cmd+S)
  3. Palaa takaisin pelitiedostoon (.cs-tiedosto, joka on samanniminen kuin tekemäsi projekti) ja täydennä aliohjelmien toteutukset.

Yllä olevien vaiheiden jälkeen voit kutsua Sopulit.cs-tiedostossa olevia aliohjelmia seuraavasti:

Sopulit.Arvo(sukupolvi, 0, 1);
Sopulit.SeuraavaSukupolvi(sukupolvi);

Palautus: Palautuslaatikkoon palautetaan peliluokan sisältö, eli Begin- ja muut aliohjelmat. Peliluokka on TIM-versiossa valmiiksi mukana (ks. Näytä koko koodi -linkki palautuslaatikossa).

Arviointi: Käytä Set custom points -toimintoa TIMissa. Tee itsearvio pistemäärästäsi ja syötä omat pisteesi väliltä 0-1. Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# guru_game_of_life_simu

G2. Game of Life: kentän muokkaus (1 p.)

Jos haluat tehdä tehtävän Riderissa: Jypeli-tehtävien tekeminen Riderissa.

Täydennä Tehtävän G1 vastauksesi siten, että voit näppäimistön Delete-painikkeella tyhjentää kentän ja sitten hiirellä klikkailla päälle ja pois ruutuja. Hiiren klikkaus pysäyttää aina animaation ja sitten voi rauhassa rakentaa haluamansa kuvion (ks: Bitstorm ja Wikipedia) ja sitten laittaa Enter-nappulalla animoinnin uudelleen käyntiin. Välilyönti arpoo kokonaan uuden alkutilanteen.

Palautus: Palautuslaatikkoon palautetaan peliluokan sisältö, eli Begin- ja muut aliohjelmat. Peliluokka on TIM-versiossa valmiiksi mukana (ks. Näytä koko koodi -linkki palautuslaatikossa).

Arviointi: Käytä Set custom points -toimintoa TIMissa. Tee itsearvio pistemäärästäsi ja syötä omat pisteesi väliltä 0-1. Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# guru_game_of_life_edit

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