Nuorten koodauskerho 2018 kevät - 1. kerta

Tervetuloa kevään ensimmäiseen koodauskerhoon!

Omien pelien tekeminen

Jos sinulla on kesken oma peli, voit jatkaa sen tekemistä. Voit myös aloittaa kokonaan uuden pelin tekemisen.

Laajennettua kilpikonnagrafiikkaa

Koodauskerhossa on aiempina vuosina käsitelty kilpikonnagrafiikkaa. Tällä yksinkertaisella grafiikkarajapinnalla voi ohjata kilpikonnan näköistä kursoria, joka piirtää viivaa liikkuessaan.

Alkuvalmistelut

  1. Lataa turtle.zip -tiedosto C:\MyTemp\omanimi-kansioon, missä omanimi-sanan tilalla on oma nimesi. Jos kansiota ei ole olemassa, voit luoda sellaisen.
  2. Pura kansion sisältö (klikkaa oikealla ja Extract all...)
  3. Avaa Turtle.sln-tiedosto Visual Studio 2017 -ohjelmalla.
  4. Klikkaa oikean reunan valikosta Piirto.cs -tiedostoa. Ohjelmakoodia aletaan kirjoittamaan tähän tiedostoon.

  Image

  1. Kilpikonnalle voi kirjoittaa käskyjä ja ohjelman voi ajaa painamalla F5 tai klikkaamalla yläreunan Start-nappulaa.

Kilpikonnan ohjelmointi

Kilpikonnalle annettavat käskyt ovat yksinkertaisia:

  • Liiku(100); liikuttaa kilpikonnaa 100 askelta eteenpäin
  • Kaanny(100); kääntää kilpikonnaa 100 astetta vastapäivään
  • PiirtoPaalle(); laskee kilpikonnan "kynän" alas ja PiirtoPois(); nostaa sen ylös
  • AsetaViivanPaksuus(5); asettaa piirtojäljen leveyden pikseleinä
  • AsetaVari(Color.Red); vaihtaa piirtojäljen väriä, väriksi voi valita mitä haluaa

Tämän vuoden versioon on myös lisätty muutama uusi käsky:

  • AsetaNopeus(500); muuttaa kilpikonnan liikkumis- ja kääntymisnopeutta
  • LiikuPaikkaan(200,200); liikuttaa kilpikonnan annettuihin x- ja y-koordinaatteihin
  • Pomppaa(200,200); siirtää kilpikonnan välittömästi uuteen paikkaan, eikä käännä kilpikonnaa
  • PiirraMuoto(Shape.Circle,50,50); piirtää minkä tahansa Jypelin valmiista muodoista (tämä piirtäisi 50x50-kokoisen ympyrän)
  • Piilota(); piilottaa kilpikonnan, eli kuvio piirtyy itsekseen
  • Nayta(); palauttaa kilpikonnan näkyviin
  • AsetaTaustavari(Color.Azure); asettaa piirtoalustan taustan värin

Esimerkkikuvia ja niiden ohjelmakoodeja

Spiraali

protected override void LisaaKaskyt()
{
    double m = 5;
    for (double d = 0; d < 250; d++)
    {
        Liiku(m += 0.1);
        Kaanny(5);
    }
}

Tähtispiraali

protected override void LisaaKaskyt()
{   
    double m = 5;
    for (double d = 0; d < 100; d++)
    {
        PiirtoPaalle();
        double koko = 10 * Math.Sqrt(m);
        PiirraMuoto(Shape.Star, koko, koko);
        PiirtoPois();
        Liiku(m += 10);
        Kaanny(50);
    }
}

Sinifunktio

protected override void LisaaKaskyt()
{
    AsetaViivanPaksuus(5);
    Piilota();

    for (double d = 0; d < 25; d += 0.1)
        LiikuPaikkaan(d * 20, 100 * Math.Sin(d));
}

Neliöitä

protected override void LisaaKaskyt()
{
    AsetaNopeus(1000);
    AsetaViivanPaksuus(2);
    PiirtoPois();
    Pomppaa(0, -500);

    double m = 10, k = 10, koko = 16;

    for (int j = 0; j < 10; j++)
    {
        PiirtoPaalle();

        for (int i = 0; i < koko; i++)
        {
            Liiku(m += 2);
            Kaanny(89);
        }

        koko += +16;
        Kaanny(k += 20);

        PiirtoPois();
        Liiku(2 * m);
        m = 10;
    }
}

Rekursiivinen puu

protected override void LisaaKaskyt()
{
    AsetaViivanPaksuus(2);
    AsetaNopeus(1000);
    Kaanny(90);
    Pomppaa(0, -500);
    Puu(1000);
}

void Puu(double r)
{
    if (r < 20)
    {
        Liiku(r);
        Liiku(-r);
    }
    else
    {
        Liiku(r / 3);
        Kaanny(30);
        Puu(r * 2 / 3);
        Kaanny(330);
        Liiku(-r / 3);

        Liiku(r / 2);
        Kaanny(335);
        Puu(r / 2);
        Kaanny(25);
        Liiku(-r / 2);

        Liiku(5 * r / 6);
        Kaanny(335);
        Puu(r / 2);
        Kaanny(25);
        Liiku(-5 * r / 6);
    }
}

Dragon curve

protected override void LisaaKaskyt()
{
    AsetaNopeus(1000);
    AsetaViivanPaksuus(2);

    string s = "FX";
    for (int i = 0; i < 15; i++)
    {
        string ns = "";
        foreach (char c in s)
            if (c == 'X') ns += "X+YF";
            else if (c == 'Y') ns += "FX-Y";
            else ns += c;
        s = ns;
    }

    foreach (char c in s)
    {
        if (c == 'F') Liiku(8);
        if (c == '+') Kaanny(270);
        if (c == '-') Kaanny(90);
    }
}

Oppilaiden piirustuksia

Palauta kuvasi oheiseen linkkiin

Palautuslaatikko

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