Wracamy do programu rysowania Winstona. Dodałam do niego tekst. Chcę narysować jednego Winstona pod każdym z tytułów, by pokazać go w różnych punktach życia. Teraz Winston jest wszędzie. Bo współrzędne „faceX” i „faceY” to losowe liczby w funkcji. A ja mówię komputerowi: „Winstona masz narysować tutaj!”. Chcę określać tę pozycję przy każdym wywołaniu funkcji, tak jak było z elipsą i prostokątem. Chcę mieć Winstona tutaj, tutaj, jednego tu, i jeszcze tu. Niech nie wyświetlają się losowo, gdy uruchomię funkcję. Musimy więc ustalić dla tej funkcji parametry. W jej definicji, u góry, oraz tu, na dole, gdzie ją wywołujemy. Dla funkcji „drawWinston()” mamy „faceX” i „faceY”. Każemy używać podanych wartości zamiast tych generowanych losowo. Zastanówmy się, co umieścić w wywołaniu funkcji. Umieszczamy Winstona pod każdą wizytówką, więc niech „x” i „y” każdego Winstona odzwierciedla liczby w punktach „text()”. Może „y” dajmy 10 pikseli niżej. Pierwszy Winston będzie na 10,30, następny na 200, 230... 10, 230... i 200, 230. Jak ze współrzędnymi tekstu, dodaję 10 do każdego „y”, bo chcę obniżyć rysunek. Winston się nie ruszył. Nie powiedzieliśmy funkcji o parametrach, więc używa wartości losowych. Żeby powiedzieć funkcji: „Podamy ci informacje”, musimy w nawiasach wpisać nazwy parametrów. Nazwiemy je „faceX” i „faceY”, rozdzielimy przecinkiem. Nazywamy je tak, bo będziemy się do nich odnosić wewnątrz funkcji. Nie trzeba zmieniać reszty programu. Ale nadal bez zmian: Winstonów wszędzie pełno! U góry funkcji zobaczymy, że w „faceX” i „faceY” wciąż pojawiają się wartości losowe. Musimy skasować te wiersze... Teraz „faceX” i „faceY” wchodzą do funkcji, która używa podanych przez nas wartości. Źle ustawiłam Winstona, bo zapomniałam, że tekst pozycjonujemy względem lewego górnego rogu, a twarz - względem środka. Muszę więc trochę pokombinować z cyferkami. Przesunę „x”, daleko... i to tutaj. Nasz bobasek... Przejdziemy tutaj... i wprowadzimy to do funkcji. Nie muszę zmieniać definicji funkcji. Zawsze przyjmie wartości, które wprowadzimy. Jak z elipsą i prostokątem. Umiejscowiłam Winstona, ale jest za duży. Nakłada się na inne, nie pasuje. Kod rysowania umieściłam w funkcji, mogę więc zmienić rozmiar Winstonów, zmieniając jeden wiersz kodu rysujący elipsę. Zróbmy może 190... Winston przechodzi na dietę! Będzie pasował lepiej. Mogę tak robić dalej, żeby się tu zmieścił. Super! Powtórzmy, co robi program. Definiuje funkcję „drawWinston” i mówi, że funkcja przyjmuje dwie wartości określone jako „faceX” i „faceY”. Są to zmienne, których możemy używać wszędzie w funkcji, tak jak było ze zmiennymi określanymi u góry. Po zdefiniowaniu funkcji przywołujemy ją, gdy chcemy; możemy wprowadzać wartości, a ona będzie ich używać. Już wiecie, jak świetne są funkcje. Przydają się, gdy chcemy używać jakiegoś kodu wiele razy. Podajemy parametry, mówiąc komputerowi: „Zmień coś w tym programie, dostosuj go”. Jak przepis kulinarny. Macie ogólne instrukcje, a gdy przyjdzie nakarmić 4 Winstonów zamiast jednego, nie trzeba pisać przepisu od nowa, wystarczy pomnożyć wszystko przez 4. Możecie już wymyślać przepisy do swoich kodów. Pycha!