[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.96,0:00:03.97,Default,,0000,0000,0000,,Dowiadujmy się dalej, co można\Nzrobić z obiektami. Dialogue: 0,0:00:04.07,0:00:08.25,Default,,0000,0000,0000,,Sięgnijmy do programu\Nz filmiku o funkcjach. Dialogue: 0,0:00:08.35,0:00:11.03,Default,,0000,0000,0000,,Ma on funkcję „drawWinston”, Dialogue: 0,0:00:11.13,0:00:14.51,Default,,0000,0000,0000,,która umie narysować Winstona\Nw danym „x” i „y”... Dialogue: 0,0:00:14.61,0:00:17.92,Default,,0000,0000,0000,,Tutaj przywołujemy tę funkcję\Ncztery razy, Dialogue: 0,0:00:18.02,0:00:20.87,Default,,0000,0000,0000,,zawsze z innymi współrzędnymi. Dialogue: 0,0:00:21.71,0:00:25.31,Default,,0000,0000,0000,,Znacie mnie. Gdy patrzę na te cztery\Nrysunki Winstona, Dialogue: 0,0:00:25.41,0:00:28.16,Default,,0000,0000,0000,,tak podobne do siebie, Dialogue: 0,0:00:28.26,0:00:32.30,Default,,0000,0000,0000,,myślę tylko, że dużo lepiej\Nbyłoby użyć pętli. Dialogue: 0,0:00:33.11,0:00:36.11,Default,,0000,0000,0000,,I przywołać funkcję raz,\Nwewnątrz pętli, Dialogue: 0,0:00:36.21,0:00:39.45,Default,,0000,0000,0000,,zmieniając „x” i „y”\Nw każdym powtórzeniu pętli. Dialogue: 0,0:00:40.10,0:00:44.37,Default,,0000,0000,0000,,W tym celu musimy znaleźć sposób\Nna przechowywanie pozycji „x” i „y”, Dialogue: 0,0:00:44.47,0:00:47.58,Default,,0000,0000,0000,,w tablicy, żebyśmy mieli\Ndo nich dostep. Dialogue: 0,0:00:47.68,0:00:49.62,Default,,0000,0000,0000,,Mamy dwa zestawy wartości, Dialogue: 0,0:00:49.72,0:00:51.99,Default,,0000,0000,0000,,więc moglibyśmy zrobić dwie tablice. Dialogue: 0,0:00:52.09,0:00:56.21,Default,,0000,0000,0000,,Jedną dla pozycji „x”,\Ndrugą dla pozycji „y”. Dialogue: 0,0:00:56.31,0:01:01.79,Default,,0000,0000,0000,,Dajmy pozycje „x”:\N99, 294, 101 i 294... Dialogue: 0,0:01:02.30,0:01:07.96,Default,,0000,0000,0000,,a pozycje „y”\Nto 117, 117, 316, 316. Dialogue: 0,0:01:09.26,0:01:11.56,Default,,0000,0000,0000,,Teraz możemy zrobić tu pętlę, Dialogue: 0,0:01:11.66,0:01:14.28,Default,,0000,0000,0000,,pisząc: for-loop var i = 0; Dialogue: 0,0:01:14.38,0:01:18.37,Default,,0000,0000,0000,,i < xPositions.length; i++ Dialogue: 0,0:01:18.74,0:01:21.29,Default,,0000,0000,0000,,Przejdziemy przez każdy\Nelement „xPositions”, Dialogue: 0,0:01:21.39,0:01:25.07,Default,,0000,0000,0000,,i napiszemy:\NdrawWinston(xPositions[i], Dialogue: 0,0:01:25.66,0:01:29.40,Default,,0000,0000,0000,,yPositions[i]); Dialogue: 0,0:01:30.71,0:01:34.51,Default,,0000,0000,0000,,Sprawdźmy, czy to działa.\NSkasujmy... Dialogue: 0,0:01:34.61,0:01:35.57,Default,,0000,0000,0000,,Udało się! Dialogue: 0,0:01:35.67,0:01:38.75,Default,,0000,0000,0000,,Możemy to przywołać. Dialogue: 0,0:01:38.85,0:01:41.15,Default,,0000,0000,0000,,Jedna linijka programu\Nrysuje Winstona Dialogue: 0,0:01:41.25,0:01:44.63,Default,,0000,0000,0000,,w każdej pozycji\Nz tablicy „xPositions”. Dialogue: 0,0:01:45.15,0:01:48.67,Default,,0000,0000,0000,,Możemy dodawać więcej.\NPowiedzmy od 10. Dialogue: 0,0:01:48.77,0:01:53.54,Default,,0000,0000,0000,,Potem dodajemy 1, i 1, i 1... Dialogue: 0,0:01:54.24,0:01:57.89,Default,,0000,0000,0000,,a później 100, i 1... Dialogue: 0,0:01:58.26,0:02:01.53,Default,,0000,0000,0000,,Zrobił się tu bałagan. Dialogue: 0,0:02:01.90,0:02:05.53,Default,,0000,0000,0000,,Niedobrze, bo trudno mi zobaczyć, Dialogue: 0,0:02:05.63,0:02:08.38,Default,,0000,0000,0000,,który „x” odnosi się do którego „y”. Dialogue: 0,0:02:08.48,0:02:12.61,Default,,0000,0000,0000,,A ja chcę na pierwszy\Nrzut oka widzieć Dialogue: 0,0:02:12.71,0:02:16.79,Default,,0000,0000,0000,,pary x-y, zamiast pilnować, Dialogue: 0,0:02:16.89,0:02:20.90,Default,,0000,0000,0000,,żeby były idealnie ustawione\Nw pionie, np. tak. Dialogue: 0,0:02:21.59,0:02:27.00,Default,,0000,0000,0000,,Chcę znaleźć inny sposób\Nprzechowywania tych pozycji. Dialogue: 0,0:02:27.10,0:02:30.86,Default,,0000,0000,0000,,Możemy przechowywać je\Njako obiekty. Dialogue: 0,0:02:30.96,0:02:36.06,Default,,0000,0000,0000,,Każda pozycja to dwie\Ninformacje: „x” i „y”. Dialogue: 0,0:02:36.16,0:02:39.68,Default,,0000,0000,0000,,Możemy zrobić obiekt\No właściwościach „x” i „y.” Dialogue: 0,0:02:39.78,0:02:44.65,Default,,0000,0000,0000,,Możemy mieć tablice obiektów\Nz pozycjami „x” i „y”. Dialogue: 0,0:02:44.75,0:02:45.93,Default,,0000,0000,0000,,Zróbmy to więc. Dialogue: 0,0:02:46.03,0:02:48.18,Default,,0000,0000,0000,,Napiszemy: „var positions” Dialogue: 0,0:02:48.78,0:02:51.43,Default,,0000,0000,0000,,równa się... i to też będzie tablica. Dialogue: 0,0:02:51.53,0:02:56.38,Default,,0000,0000,0000,,Ale każdy element, zamiast być\Nliczbą, będzie obiektem. Dialogue: 0,0:02:56.48,0:02:59.10,Default,,0000,0000,0000,,Mamy klamry... Dialogue: 0,0:02:59.20,0:03:04.81,Default,,0000,0000,0000,,I napiszemy „x:99” i „y:117”. Dialogue: 0,0:03:05.39,0:03:08.31,Default,,0000,0000,0000,,Mamy tu jedną z naszych pozycji, Dialogue: 0,0:03:09.10,0:03:13.91,Default,,0000,0000,0000,,a drugą dodamy tutaj. Dialogue: 0,0:03:14.23,0:03:18.89,Default,,0000,0000,0000,,Dobrze; „x” wyniesie 294, 117, Dialogue: 0,0:03:19.18,0:03:22.01,Default,,0000,0000,0000,,dalej 101, Dialogue: 0,0:03:22.59,0:03:24.03,Default,,0000,0000,0000,,dalej 316, Dialogue: 0,0:03:25.22,0:03:30.45,Default,,0000,0000,0000,,a na koniec 294 i 316. Dialogue: 0,0:03:30.55,0:03:35.02,Default,,0000,0000,0000,,I jest tablica obiektów, Dialogue: 0,0:03:35.12,0:03:38.43,Default,,0000,0000,0000,,z których każdy\Nma właściwości „x” i „y”. Dialogue: 0,0:03:38.53,0:03:41.17,Default,,0000,0000,0000,,Teraz za pomocą pętli FOR Dialogue: 0,0:03:41.27,0:03:44.77,Default,,0000,0000,0000,,wypiszemy każdy obiekt\Ntablicy „positions”. Dialogue: 0,0:03:44.87,0:03:49.16,Default,,0000,0000,0000,,Następnie przekażemy obiekt. Dialogue: 0,0:03:49.26,0:03:53.89,Default,,0000,0000,0000,,Na razie przekazujemy cały obiekt,\Na chcemy przekazać wartości „x” i „y”. Dialogue: 0,0:03:53.99,0:03:59.03,Default,,0000,0000,0000,,Potrzebujemy zatem\Npositions[i].X i positions[i].Y. Dialogue: 0,0:03:59.13,0:04:00.27,Default,,0000,0000,0000,,Hura! Dialogue: 0,0:04:00.61,0:04:03.100,Default,,0000,0000,0000,,Możemy skasować te stare,\Nzaśmiecone tablice. Dialogue: 0,0:04:04.10,0:04:07.92,Default,,0000,0000,0000,,Teraz wygląda to znacznie ładniej, Dialogue: 0,0:04:08.02,0:04:12.93,Default,,0000,0000,0000,,a program jest prostszy do czytania.\NIm łatwiej, tym lepiej! Dialogue: 0,0:04:13.03,0:04:16.62,Default,,0000,0000,0000,,I łatwiej jest dodawać nowe obiekty.\NJeśli chcę dodać 1... Dialogue: 0,0:04:16.73,0:04:18.100,Default,,0000,0000,0000,,Dodam tę parę. Dialogue: 0,0:04:19.10,0:04:23.38,Default,,0000,0000,0000,,Powiedzmy, że „x” to 200,\N„y” też... Dialogue: 0,0:04:23.48,0:04:26.38,Default,,0000,0000,0000,,i pośrodku pojawi się Winston. Dialogue: 0,0:04:26.48,0:04:27.51,Default,,0000,0000,0000,,Fajnie! Dialogue: 0,0:04:27.61,0:04:31.58,Default,,0000,0000,0000,,A teraz pokażę wam\Ncoś jeszcze lepszego. Dialogue: 0,0:04:31.68,0:04:37.08,Default,,0000,0000,0000,,Zauważcie, że nasza funkcja\Nprzyjmuje dwie liczby Dialogue: 0,0:04:37.18,0:04:38.78,Default,,0000,0000,0000,,i korzysta z nich. Dialogue: 0,0:04:38.88,0:04:42.02,Default,,0000,0000,0000,,Możemy zmienić funkcję tak,\Nże będzie oczekiwać obiektu Dialogue: 0,0:04:42.12,0:04:45.23,Default,,0000,0000,0000,,i weźmie z niego „x” oraz „y”. Dialogue: 0,0:04:45.33,0:04:49.62,Default,,0000,0000,0000,,To znaczy, że możemy\Nzabrać stąd obiekt. Dialogue: 0,0:04:49.72,0:04:50.95,Default,,0000,0000,0000,,Spróbujmy. Dialogue: 0,0:04:51.05,0:04:53.62,Default,,0000,0000,0000,,Zabieramy obiekt, teraz nie działa. Dialogue: 0,0:04:53.72,0:04:57.61,Default,,0000,0000,0000,,Bo nasza funkcja\Noczekuje dwóch obiektów, Dialogue: 0,0:04:57.71,0:05:00.26,Default,,0000,0000,0000,,a dostaje tylko jeden.\NZmienimy to więc. Dialogue: 0,0:05:00.36,0:05:02.71,Default,,0000,0000,0000,,Damy tu „facePosition”, Dialogue: 0,0:05:02.81,0:05:07.06,Default,,0000,0000,0000,,ale widać komunikat o błędzie,\Nbo FaceX nie jest zdefiniowane. Dialogue: 0,0:05:07.16,0:05:10.68,Default,,0000,0000,0000,,Wcześniej „faceX” było argumentem, Dialogue: 0,0:05:10.78,0:05:13.41,Default,,0000,0000,0000,,lecz teraz nie istnieje.\NMamy tylko obiekt. Dialogue: 0,0:05:13.51,0:05:17.28,Default,,0000,0000,0000,,Możemy zapisać pozycję „x” Dialogue: 0,0:05:17.38,0:05:20.95,Default,,0000,0000,0000,,z obiektu wewnątrz zmiennej „faceX”. Dialogue: 0,0:05:21.05,0:05:22.87,Default,,0000,0000,0000,,Mamy więc obiekt, Dialogue: 0,0:05:22.97,0:05:24.87,Default,,0000,0000,0000,,wiemy, że ma właściwość „x”, Dialogue: 0,0:05:24.97,0:05:28.21,Default,,0000,0000,0000,,i będziemy go przechowywać\Nw zmiennej „faceX”. Dialogue: 0,0:05:28.40,0:05:33.27,Default,,0000,0000,0000,,To samo możemy zrobić z „y”:\N„faceY = facePosition.y”. Dialogue: 0,0:05:33.95,0:05:38.29,Default,,0000,0000,0000,,I proszę! A reszta funkcji\Nużywa „faceX” i „faceY”. Dialogue: 0,0:05:38.39,0:05:41.94,Default,,0000,0000,0000,,Trzeba to dobrze zapisać.\N„xx” nie zadziała, Dialogue: 0,0:05:42.04,0:05:46.32,Default,,0000,0000,0000,,bo tego nie ma tutaj,\Nw naszej tablicy obiektów. Dialogue: 0,0:05:46.42,0:05:48.34,Default,,0000,0000,0000,,Musi pasować! Dialogue: 0,0:05:48.44,0:05:52.01,Default,,0000,0000,0000,,Wspaniale: teraz możecie mieć\Ntablice obiektów, Dialogue: 0,0:05:52.11,0:05:54.06,Default,,0000,0000,0000,,funkcje przyjmujące obiekty, Dialogue: 0,0:05:54.16,0:05:58.10,Default,,0000,0000,0000,,i przekonacie się,\Nże programy są świetne Dialogue: 0,0:05:58.20,0:06:00.40,Default,,0000,0000,0000,,w organizacji danych. Dialogue: 0,0:06:00.49,0:06:04.38,Default,,0000,0000,0000,,Zwłaszcza że często chcemy\Nłączyć „x” z „y”. Dialogue: 0,0:06:04.48,0:06:08.69,Default,,0000,0000,0000,,Tablice obiektów przydadzą się\Npodczas rysowania i animacji. Dialogue: 0,0:06:08.79,0:06:11.40,Default,,0000,0000,0000,,Korzystajcie z nich\Ni bawcie się dobrze!