-
Vi er igen i gang med Winston-tegneprogrammet,
men jeg har tilføjet lidt tekst til det.
-
Jeg vil gerne lægge en Winston under hvert mærkat,
-
så vi kan se ham i hver del af livet.
-
Lige nu er han over det hele.
Det er fordi vi sætter
-
faceX og faceY til tilfældige tal
inden i funktionen.
-
Vi vil gerne kunne udtrykke "Her er den præcise
position hvor du skal tegne den her Winston."
-
Jeg vil have en måde at give en position på
hver gang jeg kalder funktionen
-
på samme måde som vi gør ved
ellipse() og rect().
-
Jeg vil gerne have en Winston her, her
her og her,
-
og jeg vil ikke bare lægge dem tilfældige steder
hver gang jeg kalder funktionen.
-
For at gøre det er vi nødt til at
give funktionen "parametre"
-
både i vores funktionsdefinition
-- her i toppen --
-
og i vores funktionskald hernede
når vi faktisk kalder den.
-
Vi sender faceX og faceY gennem drawWinston(),
-
og vi får den til at bruge de sendte værdier
i stedet for at generere dem tilfældigt.
-
Vi skal tænke over hvad vi sender
til funktionerne hernede.
-
Vi sætter hver Winston under hvert mærkat,
så vi vil nok gerne have at x og y for hver
-
Winston er ens med de tal
som vi sendte til text()-funktionerne.
-
Måske 10 pixels mindre i y-værdien?
Den første værdi er 10 og 30
-
og så måske 200, 230...
10, 230... 200, 230.
-
Det er det samme som med mærkat-koordinaterne.
Jeg tilføjer bare 10 til hvert y,
-
for jeg vil have den lidt lavere.
-
Winston har ikke flyttet sig.
Vi har ikke fortalt vores funktion at
-
vi sender parametre til den,
så den bruger stadig de her tilfældige værdier.
-
For at fortælle funktionen "Nu skal du have
den her information i stedet"
-
er vi nødt til at give parametrene navne
inde i de her paranteser.
-
Vi kalder dem faceX og faceY og
separerer dem med et komma.
-
Vi kalder dem det fordi vi bruger
dem inde i funktionen.
-
Så har vi ikke brug for at omskrive
resten af vores kode.
-
Men stadigvæk... Intet er sket!
Winston er over det hele.
-
Hvis du kigger i toppen
af funktionen
-
ser du at vi stadig overskriver faceX og faceY
med tilfældige værdier
-
Så vi skal slette de her linjer...
-
Nu bliver faceX og faceY sendt
til funktionen, og
-
den bruger de værdier
som vi kalder dem med.
-
Jeg satte ikke helt Winston korrekt,
for jeg glemte at tekst positioneres
-
i forhold til øverste venstre hjørne, og ansigtet
positioneres i forhold til midten.
-
Jeg er nødt til at fikse mine tal lidt.
-
Jeg skal flytte x-værdien en del og flytte
den her, og så... det er vores baby.
-
Vi gennemgår og ændrer hvad jeg sender til funktionen.
-
Jeg behøver slet ikke at
ændre funktionsdefinitionen.
-
Den tager altid de værdier
som vi giver den.
-
Helt ligesom ellipse() og rect().
-
Jeg har positioneret den, men jeg
har lagt mærke til at Winston er for stor.
-
Han overlapper og passer ikke ind.
-
Jeg har lagt koden til at tegne ham
ind i en funktion.
-
Jeg kan ændre størrelsen af allesammen
på én gang
-
ved at ændre en linje kode
der tegner ellipsen.
-
Hvis vi giver ham 190
kommer han på en diæt. 190 igen.
-
Nu passer han bedre, og I er
godt klar over at jeg kunne blive ved med
-
at justere ham for at han kan komme derind.
Sejt!
-
Lad os repetere hvad koden gøre.
Den definerer en funktion vi kalder drawWinston()
-
og siger at funktionen tager to værdier
og giver dem navnene faceX og faceY.
-
De værdier kommer som variabler som
vi kan bruge overalt i vores funktion
-
helt ligesom vi plejede at bruge
variablerne fra toppen.
-
Og så kan vi kalde funktionen
hvornår vi nu vil.
-
Vi kan give den forskellige værdier,
så den bruger de værdier hver gang.
-
Du har set hvad der er sejt ved funktioner.
Vi kan finde på miljøvenlig kode der
-
nemt kan genbruges,
men vi kan også bruge parametrene til at sige
-
"Hey, her er noget som du kan ændre
ved koden."
-
Det er som en opskrift.
Du skriver de generalle instruktioner,
-
og hvis du indser at du pludselig skal
fodre 4 Winstons i stedet for 1
-
behøver du ikke starte forfra, for du
ændrer bare de oprindelige instruktioner
-
og ganger alt med 4.
-
Nu kan du tænke lidt over dine
kode-opskrifter! Nam-nam.