0:00:00.877,0:00:06.001 Vi er igen i gang med Winston-tegneprogrammet,[br]men jeg har tilføjet lidt tekst til det. 0:00:06.001,0:00:11.072 Jeg vil gerne lægge en Winston under hvert mærkat, 0:00:11.072,0:00:13.210 så vi kan se ham i hver del af livet. 0:00:13.210,0:00:16.437 Lige nu er han over det hele.[br]Det er fordi vi sætter 0:00:16.437,0:00:20.449 faceX og faceY til tilfældige tal[br]inden i funktionen. 0:00:20.449,0:00:26.714 Vi vil gerne kunne udtrykke "Her er den præcise[br]position hvor du skal tegne den her Winston." 0:00:26.714,0:00:30.316 Jeg vil have en måde at give en position på[br]hver gang jeg kalder funktionen 0:00:30.316,0:00:32.648 på samme måde som vi gør ved[br]ellipse() og rect(). 0:00:34.048,0:00:40.460 Jeg vil gerne have en Winston her, her[br]her og her, 0:00:40.460,0:00:43.623 og jeg vil ikke bare lægge dem tilfældige steder[br]hver gang jeg kalder funktionen. 0:00:43.623,0:00:48.882 For at gøre det er vi nødt til at[br]give funktionen "parametre" 0:00:48.882,0:00:52.811 både i vores funktionsdefinition[br]-- her i toppen -- 0:00:52.811,0:00:57.302 og i vores funktionskald hernede[br]når vi faktisk kalder den. 0:00:57.302,0:01:02.210 Vi sender faceX og faceY gennem drawWinston(), 0:01:02.210,0:01:09.058 og vi får den til at bruge de sendte værdier[br]i stedet for at generere dem tilfældigt. 0:01:09.058,0:01:14.657 Vi skal tænke over hvad vi sender[br]til funktionerne hernede. 0:01:14.657,0:01:20.071 Vi sætter hver Winston under hvert mærkat,[br]så vi vil nok gerne have at x og y for hver 0:01:20.071,0:01:24.491 Winston er ens med de tal[br]som vi sendte til text()-funktionerne. 0:01:24.491,0:01:32.166 Måske 10 pixels mindre i y-værdien?[br]Den første værdi er 10 og 30 0:01:32.166,0:01:40.891 og så måske 200, 230...[br]10, 230... 200, 230. 0:01:40.891,0:01:44.863 Det er det samme som med mærkat-koordinaterne.[br]Jeg tilføjer bare 10 til hvert y, 0:01:44.863,0:01:47.405 for jeg vil have den lidt lavere. 0:01:49.985,0:01:55.301 Winston har ikke flyttet sig.[br]Vi har ikke fortalt vores funktion at 0:01:55.301,0:01:59.177 vi sender parametre til den,[br]så den bruger stadig de her tilfældige værdier. 0:01:59.177,0:02:03.603 For at fortælle funktionen "Nu skal du have[br]den her information i stedet" 0:02:03.603,0:02:08.398 er vi nødt til at give parametrene navne[br]inde i de her paranteser. 0:02:08.398,0:02:14.106 Vi kalder dem faceX og faceY og[br]separerer dem med et komma. 0:02:14.106,0:02:20.704 Vi kalder dem det fordi vi bruger[br]dem inde i funktionen. 0:02:20.704,0:02:23.472 Så har vi ikke brug for at omskrive[br]resten af vores kode. 0:02:23.472,0:02:28.813 Men stadigvæk... Intet er sket![br]Winston er over det hele. 0:02:28.813,0:02:31.353 Hvis du kigger i toppen[br]af funktionen 0:02:31.353,0:02:35.263 ser du at vi stadig overskriver faceX og faceY[br]med tilfældige værdier 0:02:35.263,0:02:38.793 Så vi skal slette de her linjer... 0:02:38.793,0:02:45.457 Nu bliver faceX og faceY sendt[br]til funktionen, og 0:02:45.457,0:02:49.581 den bruger de værdier[br]som vi kalder dem med. 0:02:49.581,0:02:55.311 Jeg satte ikke helt Winston korrekt,[br]for jeg glemte at tekst positioneres 0:02:55.311,0:03:01.041 i forhold til øverste venstre hjørne, og ansigtet[br]positioneres i forhold til midten. 0:03:01.041,0:03:06.383 Jeg er nødt til at fikse mine tal lidt. 0:03:06.383,0:03:12.608 Jeg skal flytte x-værdien en del og flytte[br]den her, og så... det er vores baby. 0:03:12.608,0:03:18.028 Vi gennemgår og ændrer hvad jeg sender til funktionen. 0:03:18.028,0:03:22.518 Jeg behøver slet ikke at[br]ændre funktionsdefinitionen. 0:03:22.518,0:03:25.758 Den tager altid de værdier[br]som vi giver den. 0:03:25.758,0:03:28.388 Helt ligesom ellipse() og rect(). 0:03:28.388,0:03:33.348 Jeg har positioneret den, men jeg[br]har lagt mærke til at Winston er for stor. 0:03:33.348,0:03:35.756 Han overlapper og passer ikke ind. 0:03:35.756,0:03:39.019 Jeg har lagt koden til at tegne ham[br]ind i en funktion. 0:03:39.019,0:03:42.374 Jeg kan ændre størrelsen af allesammen[br]på én gang 0:03:42.374,0:03:45.439 ved at ændre en linje kode[br]der tegner ellipsen. 0:03:45.439,0:03:50.626 Hvis vi giver ham 190[br]kommer han på en diæt. 190 igen. 0:03:50.626,0:03:55.964 Nu passer han bedre, og I er[br]godt klar over at jeg kunne blive ved med 0:03:55.964,0:04:01.902 at justere ham for at han kan komme derind.[br]Sejt! 0:04:01.902,0:04:08.531 Lad os repetere hvad koden gøre.[br]Den definerer en funktion vi kalder drawWinston() 0:04:08.531,0:04:14.673 og siger at funktionen tager to værdier[br]og giver dem navnene faceX og faceY. 0:04:14.673,0:04:19.949 De værdier kommer som variabler som[br]vi kan bruge overalt i vores funktion 0:04:19.949,0:04:23.055 helt ligesom vi plejede at bruge[br]variablerne fra toppen. 0:04:23.055,0:04:29.113 Og så kan vi kalde funktionen[br]hvornår vi nu vil. 0:04:29.113,0:04:33.711 Vi kan give den forskellige værdier,[br]så den bruger de værdier hver gang. 0:04:33.711,0:04:38.110 Du har set hvad der er sejt ved funktioner.[br]Vi kan finde på miljøvenlig kode der 0:04:38.110,0:04:42.509 nemt kan genbruges,[br]men vi kan også bruge parametrene til at sige 0:04:42.509,0:04:46.460 "Hey, her er noget som du kan ændre[br]ved koden." 0:04:46.460,0:04:49.405 Det er som en opskrift.[br]Du skriver de generalle instruktioner, 0:04:49.405,0:04:52.810 og hvis du indser at du pludselig skal[br]fodre 4 Winstons i stedet for 1 0:04:52.810,0:04:55.941 behøver du ikke starte forfra, for du[br]ændrer bare de oprindelige instruktioner 0:04:55.941,0:04:57.632 og ganger alt med 4. 0:04:57.632,0:05:02.205 Nu kan du tænke lidt over dine[br]kode-opskrifter! Nam-nam.