Fractale kunst

In dit project, ga je herhaalblokken 'nesten' in herhaalblokken om complexe afbeeldingen te maken.

  1. "H2L4-FractaleKunst"
  2. Bouw een script dat een rode driehoek tekent, kopieer het twee keer en laat de twee nieuwe scripts een blauwe driehoek teken half zo groot als de rode en een groene driehoek half zo groot als de blauwe.
    • Om een script te kopiëren, klik je met de rechter muisknop (of met de linker muisknop terwijl je Ctrl ingedrukt houdt) op het eerste blok van het script (in dit geval het herhaal blok) en klik op 'kopieer'.
    • Dan verander je de invoer zoals de video laat zien:
    Geen Afbeelding
  3. Probeer ieder script op zichzelf om zeker te zijn van wat het doet. Wis daarna het speelveld.
  4. Voeg nu het hele script voor de blauwe driehoek tussen de neem ... stappen en draaiblokken van de rode driehoek, zoals hieronder.
    Geen Afbeelding
  5. Voorspel wat er zal gebeuren als je dit script uitvoert.
  6. Voer het daarna uit om te zien wat het doet.

Debuggen met Stapsgewijs Programmaverloop

Snap! heeft een debug-tool genaamd Stapsgewijs Programmaverloop dat je laat bepalen hoe snel Snap? door de blokken van je code 'stapt'. Dit zorgt ervoor dat je het effect van ieder blok één voor één kan zien om je te helpen fouten in je code te vinden.

Nadat je op de Stapsgewijs Programmaverloop-knop () hebt geklikt, kan je met de schuif de stapsnelheid bepalen. De sprite voert iedere stap van de code uit, gemarkeerd in cyaan.

Geen Afbeelding

Als je de schuif op de langzaamste instelling zet (helemaal naar links), dan verandert de vorm van de gele pauze-knop en kan je erop drukken om één stap vooruit te gaan in je code. Dit kan je helpen om te zien wat er gebeurt op een specifiek punt.

Geen Afbeelding
  1. Bedenk met behulp van de scripts die je hebt, een manier om deze afbeelding te maken. Gebruik Stapsgewijs Programmaverloop om bugs te vinden, indien nodig.
  1. Als je wil, voeg nog een driehoek toe, half zo groot als de laatste, op dezelfde manier.

Abstractie gebruiken om driehoeken te nesten

Voelt al dit knippen en plakken van code een beetje raar? Je kent al een nettere manier: abstractie. In Hoofdstuk 1 heb je een molenblok gebruikt om asterisk en polygoon te implementeren, in plaats van de code te kopiëren. Hier kan je ook een blok maken om abstractie te hanteren, maar in dit geval, willen we soortgelijke code (een kleinere driehoek) genest binnenin, dus we zullen hetzelfde blok in zichzelf gebruiken.

  1. Maak een geneste driehoekblok.
    1. Ontwerp een blok met één invoer, grootte. Laat voor nu het deel over kleur veranderen weg.

    2. Gebruik je eerste driehoekscript zonder naam van probleem 1 als voorbeeld. Voeg wel één conditie toe: teken de driehoek alleen als hij groot genoeg is:
    3. Klik op "OK" in het "Blok Bewerken"-venster zodat het blok links verschijnt in het palet aan de linkerzijde.
    4. Probeer dit blok te gebruiken met ten minste de invoeren 9, 18, 20 en 100 zodat je zeker weet dat het werkt zoals je verwacht.
  2. Bij probleem #4, sleepte je een kopie van het script tussen de neem ... stappen en draaiblokken. Je kan iets soortgelijks doen met je blok.
    1. Sleep van het palet een kopie van het geneste driehoekblok in het venster en zet het in de definitie van geneste driehoek tussen de neem ... stappen en draaiblokken. Maak zijn grootte invoer de helft van de huidige waarde van grootte.
    2. Probeer opnieuw je blok uit met ten minste de invoeren 9, 18, 20 en 100 om zeker te weten dat het werkt zoals je verwacht.
      Je gebruikt geneste driehoek in zijn eigen definitie. Als een blok naar zichzelf verwijst, dan noem je dit blok recursief Recursie is een van de meest krachtige technieken in de informatica en je gaat er meer over leren in latere projecten.
  3. Gebruik geneste driehoek als een voorbeeld om een recursief genest vierkant blok te definiëren.
  1. Probeer een kleurinvoer toe te voegen en, gebruikmakend van in plaats van zodat je de kleur kan veranderen terwijl je tekent. Probeer in de "recursieve oproep" , het blok binnenin met de gehalveerde "grootte", 10 toe te voegen aan de kleur. Voordat je dit blok uitprobeert, gebruik om een felle kleur te kiezen, niet bijna wit of bijna zwart. Daarna kan je elk getal gebruiken als invoer voor je nieuwe blok.
  2. Bekijk deze code zonder het uit te voeren:
    1. Voorspel hoeveel blauwe vormen het zal tekenen.
    2. Probeer te schetsen wat het zal maken.
    3. Als er nog een kopie van het originele script in de blauwe versie zat, hoe vaak zou die vorm getekend worden?
  1. Gebruik wat je weet van animatie om dingen zoals dit te tekenen:
TerugVolgende