Advertisement
Guest User

Untitled

a guest
Aug 16th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.27 KB | None | 0 0
  1. /* Processing: random()-funktionen, lokale variabler
  2. *
  3. * random()-funktionen er et eksempel på en funktion, der sender noget retur, når man kalder den.
  4. * Funktionen bruges til at lave et tilfældigt tal. Den skal også bruge nogle parametre i kaldet,
  5. * som angiver grænsen eller grænserne for det interval, man ønsker at tallet skal ligge inden for.
  6. * Hvis der er en parameter, er det den øvre grænse - man får altså et tilfældigt tal mellem 0 og
  7. * det tal, man angiver. Hvis der er to tal, er det nedre og øvre grænse.
  8. *
  9. * I denne sketch bruges random() til at danne tilfældige farver til kronen (se mouseClicked()-
  10. * funktionen nederst). Du skal prøve i opgaverne også at bruge det til at skabe variation i
  11. * træernes form.
  12. */
  13.  
  14. // Variabler. Alt er det samme som før. Du kan ændre dem som du selv synes
  15. color stamme = color(170, 80, 30);
  16. color blade = color(30, 170, 60);
  17. color graes = color(120, 220, 15);
  18. color himmel = color(130, 190, 255);
  19. color sky = color(240);
  20.  
  21. float sky_1x, sky_2x, sky_1fart, sky_2fart; // Variablerne til at styre skyerne med.
  22.  
  23. float bb = random(50, 500);
  24.  
  25.  
  26. // setup() er også magen til foregående sketch.
  27. void setup() {
  28. size(620, 800);
  29. background(graes);
  30. sky_1x = 440;
  31. sky_2x = 220;
  32. sky_1fart = 1;
  33. sky_2fart = 1.5;
  34. }
  35.  
  36. // draw()-metoden, derimod, er meget mere overskuelig nu, der er kun to linjer.
  37. // Men bemærk: tegnTrae() er anderledes end før.
  38. void draw() {
  39. tegnTrae(300, 600, bb, blade); // tegnTrae(...)-funktionen er lavet om, så den både
  40. // skal have et koordinatsæt og en farve til kronen.
  41. // Her er farven den samme som det hele tiden har været.
  42. tegnHimmel(); // tegnHimmel-funktionen er den, du selv forhåbentlig
  43. // fik lavet i den foregående sketch.
  44. }
  45.  
  46. /*
  47. * Metoden tegnTrae() er lavet om, så den nu får tre parametre: De to er stadig koordinater til
  48. * træets position (til roden - det gjorde du selv i foregående sketch). Den tredje er en farve,
  49. * som bruges til kronen.
  50. */
  51. void tegnTrae(float xx, float yy, float bb, color ff) {
  52. stroke(0);
  53. fill(stamme); // Stammen får stadig den samme brune farve
  54. rect(xx-10, yy-120, 20, 120);
  55. fill(ff); // Kronens farve får vi nu derfra hvor funktionen kaldes.
  56. ellipse(xx, yy-210, bb, 180);
  57. // Husk også at sætte æblet på.
  58.  
  59. }
  60.  
  61. /*
  62. * mouseClicked() er også ændret. Når vi sætter et nyt træ, vil vi gerne have variation
  63. * i farven, så vi bruger vi funktionen random(). Den genererer et tilfældigt tal inden
  64. * for et interval, og den tager enten en eller to parametre (enten en øvre grænse for
  65. * intervallet eller både en nedre og en øvre).
  66. */
  67. void mouseClicked() {
  68. // rr, gg, bb og krone er fire lokale variabler.
  69. // De gemmes et kort øjeblik men bliver glemt igen, når kodeblokken er løbet igennem.
  70. float rr = random(100); // Mængden af Rød varierer mellem 0 og 255.
  71. float gg = random(100, 255); // Mængden af Grøn varierer mellem 100 og 255.
  72. float bb = random(30); // Mængden af Blå varierer mellem 0 og 255.
  73. float bbb = random(50, 200);
  74. color krone = color(rr, gg, bb); // Ud fra de tre talværdier laver vi nu en ny farve,
  75. // som vi sender til tegnTrae(...) sammen med musens
  76. // koordinater.
  77. tegnTrae(mouseX, mouseY, bbb, krone);
  78.  
  79. print("Bredde = " + bbb + " ");
  80. }
  81.  
  82. /*
  83. * tegnHimmel()-metoden står nu for sig selv. Men kodelinjerne er de samme, og metoden gør
  84. * fuldstændig det samme som de gjorde, da de stod oppe i draw()-metoden. I den foregående sketch
  85. * flyttede du også selv disse kodelinjer til deres egen funktion.
  86. *
  87. * draw()-metoden er meget mere overskuelig, når den ikke rummer al koden.
  88. *
  89. * tegnHimmel() har ingen parametre i funktionskaldet: Parentesen er tom. Og den returnerer
  90. * heller ikke noget til draw()-metoden: Returtypen (ordet før funktionens navn) er void.
  91. */
  92. void tegnHimmel() {
  93. fill(himmel);
  94. stroke(himmel);
  95. rect(0, 0, 620, 200); // Himlen tegnes stadig hver gang draw() gennemløbes.
  96.  
  97. fill(sky); // Og skyerne også, som før.
  98. stroke(100);
  99. ellipse(sky_1x, 70, 280, 100);
  100. ellipse(sky_2x, 130, 150, 80);
  101. sky_1x += sky_1fart; // Skyerne rykker sig stadig lidt for hvert gennemløb af draw().
  102. sky_2x += sky_2fart;
  103.  
  104. if (sky_1x > 800) sky_1x = -200; // Og de starter stadig forfra, når de kommer uden for vinduet.
  105. if (sky_2x > 720) sky_2x = -100;
  106.  
  107. } // Her slutter tegnHimmel()-metodens kodeblok
  108.  
  109. // Opgave 1: Gule, lilla eller turkisblå træer er grimme. Ret farve-intervallerne i mouseClicked()
  110. // til, så der er variation i de grønne farver, uden at det ser helt skørt ud.
  111.  
  112. // Opgave 2: Prøv at lave en lokal variabel i tegnTrae()-funktionen, som kan gemme kronens bredde.
  113. // Giv kronen en tilfældig bredde, så der også er lidt variation i træernes form.
  114.  
  115. // Opgave 3: Sæt et æble på træet, og prøv at lade æblets position variere med random():
  116.  
  117. // Opgave 4: Hvis du er ambitiøs, kan du også lade kronens og stammens højder variere. Men så
  118. // sker der noget med placeringen af træets forskellige dele i forhold til hinanden,
  119. // som kræver at du bruger de pågældende variabler som dele i regnestykker inde i de
  120. // funktioner, der tegner stamme og krone (rect()- og ellipse()-funktionerne). Spring
  121. // denne opgave over, hvis du synes det bliver for rodet.
  122.  
  123. // Opgave 5: Prøv til sidst at lave draw()-metoden om, så træet får tilfældige koordinater. Sæt
  124. // denne linje ind i stedet for den der står der nu:
  125. // tegnTrae(random(50, 570), random(500, 780), blade);
  126. // Snak med din makker om, hvordan denne linje virker og se hvad der sker, når det kører.
  127. // Og prøv om du nu kan tegne træer med musen oven på det første træ.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement