1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA Chandler: Zjedzmy zabawy z Piętnastki. 3 00:00:11,332 --> 00:00:15,680 Piętnastka to pierwsza gra, że ​​masz do realizacji i jest interaktywny. 4 00:00:15,680 --> 00:00:16,410 Teraz, nie martw się. 5 00:00:16,410 --> 00:00:18,830 Nie musisz pisać Cała sprawa się. 6 00:00:18,830 --> 00:00:22,320 Spójrz na kod dystrybucji, ponieważ Wiele konstrukcji gry jest już 7 00:00:22,320 --> 00:00:23,880 skonfigurować dla Ciebie. 8 00:00:23,880 --> 00:00:28,160 Przyjmuje i analizuje wiersz polecenia Argument z użytkownikiem i tworzy 9 00:00:28,160 --> 00:00:31,230 Płyta opiera się na tym wejściu. 10 00:00:31,230 --> 00:00:35,570 Sprawdza, czy gra jest wygrana i wyjścia Gdy użytkownik wygrał grę. 11 00:00:35,570 --> 00:00:38,340 I wygrać mecz, robi Wejście od użytkownika i 12 00:00:38,340 --> 00:00:40,610 wywołuje funkcję Przesuń. 13 00:00:40,610 --> 00:00:44,600 >> Więc idziemy do realizacji czterech funkcje dla gry Piętnastki, 14 00:00:44,600 --> 00:00:48,110 startowych, rysować, ruch, i wygrał. 15 00:00:48,110 --> 00:00:50,340 Po pierwsze, pozwala rozwiązać procesowi init. 16 00:00:50,340 --> 00:00:55,150 W init initialize reprezentujemy wyżywienie w 2D tablicy liczb całkowitych. 17 00:00:55,150 --> 00:01:01,070 I to jest zmienna globalna o nazwie Płyta o wymiarach MAX i MAX, 18 00:01:01,070 --> 00:01:03,880 maksymalne wymiary płyty. 19 00:01:03,880 --> 00:01:07,310 Teraz rzeczywisty wymiar płyty jest przez użytkownika, przedstawione na 20 00:01:07,310 --> 00:01:10,620 liczba całkowita d, które mogłyby wynosić mniej niż MAX. 21 00:01:10,620 --> 00:01:14,660 Ale w C, nie można zmienić rozmiar tablic, tak utkniesz z 22 00:01:14,660 --> 00:01:16,730 że maksymalny wymiar. 23 00:01:16,730 --> 00:01:19,870 >> Twoim zadaniem w init jest do wypełnienia wartości tablicy 24 00:01:19,870 --> 00:01:21,860 o prawidłowej wartości. 25 00:01:21,860 --> 00:01:26,910 Teraz widzieliśmy 1D tablice, ale jak tablice 2D działa? 26 00:01:26,910 --> 00:01:30,985 Jest indeksem rzędu zera indeksowane jak zawsze, a potem także z 27 00:01:30,985 --> 00:01:32,100 kolumna. 28 00:01:32,100 --> 00:01:36,120 I będziesz wypełnić siatkę w w malejącej wartości, tak jak to. 29 00:01:36,120 --> 00:01:43,260 Siatka, 0, 0, wiersz 0, kolumna 0, jest 8, siatka 0, 1 jest 7. 30 00:01:43,260 --> 00:01:48,500 Jest to na przykład w przypadku d, trochę d, jest 3. 31 00:01:48,500 --> 00:01:52,690 >> Teraz, wyżywienie w Piętnastki musi również zawiera puste płytki, jeśli kiedykolwiek 32 00:01:52,690 --> 00:01:54,280 grał z gry fizycznej. 33 00:01:54,280 --> 00:01:59,210 Ale płyta jest tablica całkowitą, więc wszystkie wartości muszą być liczbami całkowitymi. 34 00:01:59,210 --> 00:02:06,950 Więc to do ciebie, aby zdecydować, liczbę całkowitą wartość reprezentować pustą płytkę. 35 00:02:06,950 --> 00:02:10,460 Aby zainicjować pokładzie, można użyć Struktury zawierające do pętli 36 00:02:10,460 --> 00:02:16,440 stan początkowy tablicy, gdzie wyżywienie i j oznacza element w 37 00:02:16,440 --> 00:02:19,380 wiersz i i kolumnie j. 38 00:02:19,380 --> 00:02:23,035 Rozpocznie się w kolejności malejącej, a pamiętać, że jeśli liczba płytek 39 00:02:23,035 --> 00:02:29,590 jest nieparzysta, to będziesz musiał zamienić położenie 2 i 1 punkt. 40 00:02:29,590 --> 00:02:33,790 Tak więc, mamy zainicjowany zarządu. 41 00:02:33,790 --> 00:02:37,440 >> Teraz, że mamy zainicjowany nasze wyżywienie, nadszedł czas, aby go wyciągnąć. 42 00:02:37,440 --> 00:02:41,260 Remis będzie wydrukować aktualny stan wyżywienie, ale trzeba się upewnić, 43 00:02:41,260 --> 00:02:44,260 drukowanie płytek w tej samej kolejności że już zainicjowany je. 44 00:02:44,260 --> 00:02:47,300 I trzeba także sformatować Twoje liczby poprawnie. 45 00:02:47,300 --> 00:02:51,700 Ponieważ możemy mieć pojedyncze cyfry i podwójne cyfry, a następnie chcesz 46 00:02:51,700 --> 00:02:54,540 przed wydrukować pustą przestrzeń żadnych Liczby jednocyfrowe. 47 00:02:54,540 --> 00:03:00,150 Używasz, że za pomocą zastępczy -. 48 00:03:00,150 --> 00:03:02,550 >> Ale pamiętam naszą pustą przestrzeń. 49 00:03:02,550 --> 00:03:05,970 Nie chcemy, aby wydrukować rzeczywistą liczbę które wybraliśmy do reprezentowania 50 00:03:05,970 --> 00:03:10,410 że puste miejsce w tablicy, ale także nie chce w ogóle drukować nic. 51 00:03:10,410 --> 00:03:15,310 Więc co można zrobić, to określić symbol lub postaci do reprezentowania 52 00:03:15,310 --> 00:03:17,050 puste płytki. 53 00:03:17,050 --> 00:03:21,030 W poprzednich przykładach wybrałem podkreślenia, a następnie po prostu wydrukować 54 00:03:21,030 --> 00:03:26,970 że gdy dojdziesz puste Przestrzeń w funkcji draw. 55 00:03:26,970 --> 00:03:29,850 >> Tak będzie się rysować zagnieżdżone pętle. 56 00:03:29,850 --> 00:03:31,150 Coś takiego. 57 00:03:31,150 --> 00:03:35,660 Dla każdego wiersza, a następnie dla każdej wartości wiersz, masz zamiar drukować 58 00:03:35,660 --> 00:03:36,940 wartość w tym miejscu. 59 00:03:36,940 --> 00:03:39,470 Po wydrukowane wszystkie wartości w wierszu, a następnie 60 00:03:39,470 --> 00:03:41,180 może drukować nową linię. 61 00:03:41,180 --> 00:03:47,730 Pamiętaj, że zamówienie do remisu Funkcja musi echo lub lustro kolejność 62 00:03:47,730 --> 00:03:48,980 w zainicjowany funkcji. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Teraz, gdy zainicjowana płytę i że już wyciągnąć go, że nadszedł czas, aby pozwolić 65 00:03:55,160 --> 00:03:58,500 Użytkownik edytować i wykonują swoje ruchy. 66 00:03:58,500 --> 00:04:03,840 Tak więc w zależności Fifteen.c, Program pobiera dane wejściowe od użytkownika i 67 00:04:03,840 --> 00:04:07,690 Następnie wywołuje funkcję ruch, przechodząc liczby płytek, które 68 00:04:07,690 --> 00:04:09,270 użytkownik chce przejść. 69 00:04:09,270 --> 00:04:10,380 Teraz, być ostrożnym. 70 00:04:10,380 --> 00:04:14,200 To jest rzeczywista liczba płytek a nie jego rzeczywiste położenie. 71 00:04:14,200 --> 00:04:19,010 Tak, trzeba szukać płytki jest Stanowisko wiedzieć, gdzie to jest. 72 00:04:19,010 --> 00:04:23,440 >> Teraz należy tylko pozwalają użytkownikowi wykonać ruch, jeśli jest to legalne. 73 00:04:23,440 --> 00:04:27,910 Prawnym jest każdy ruch, który jest płytki przylega do płytki puste. 74 00:04:27,910 --> 00:04:32,020 Oznacza to, że powyżej i poniżej, aby w lewo iw prawo. 75 00:04:32,020 --> 00:04:34,680 Więc musisz wiedzieć, gdzie Dachówka jest również puste. 76 00:04:34,680 --> 00:04:39,720 Teraz, każdy ruch szukasz Dachówka użytkowników, ale jest to prawdopodobnie 77 00:04:39,720 --> 00:04:43,030 nie najlepiej sprawdzić płytki pusty za każdym razem, bo robisz to 78 00:04:43,030 --> 00:04:45,270 za każdym razem użytkownik chce przejść. 79 00:04:45,270 --> 00:04:50,300 Tak więc, zamiast, najlepiej pamiętam gdzie Dachówka jest za pomocą niektóre puste 80 00:04:50,300 --> 00:04:52,650 dobrze nazwane zmienne. 81 00:04:52,650 --> 00:04:55,970 Więc kiedy pozwalają użytkownikowi na ich ruchy, są one dobrze na ich 82 00:04:55,970 --> 00:04:59,700 sposób na wygranie gry Piętnastki. 83 00:04:59,700 --> 00:05:03,940 >> Aby wygrać grę piętnastu płytek być w określonej kolejności, a 84 00:05:03,940 --> 00:05:06,970 Funkcja sprawdza, czy wygrał Gra jest wygrana. 85 00:05:06,970 --> 00:05:10,290 Zwraca True, jeśli gra jest wygrana i płytki są w odpowiedniej kolejności, 86 00:05:10,290 --> 00:05:12,210 false w przeciwnym wypadku. 87 00:05:12,210 --> 00:05:15,830 Tak, aby wygrać mecz z piętnastu, płytek muszą być rosnące z 88 00:05:15,830 --> 00:05:19,230 puste płytki w dolnym prawym rogu. 89 00:05:19,230 --> 00:05:23,630 Jak więc sprawdzić, czy użytkownik przeniósł się na prawo pokładzie 90 00:05:23,630 --> 00:05:25,010 orientacja? 91 00:05:25,010 --> 00:05:29,200 >> Cóż, będziesz iteracyjne nad pokładzie i sprawdzić wartości, aby upewnić się, że 92 00:05:29,200 --> 00:05:30,550 są one w odpowiednim miejscu. 93 00:05:30,550 --> 00:05:33,910 Aby to zrobić, możesz użyć zagnieżdżonych pętli tak jak robiłeś 94 00:05:33,910 --> 00:05:36,520 w losowaniu i init. 95 00:05:36,520 --> 00:05:40,430 Istnieje kilka sposobów, aby sprawdzić i potwierdzić, czy płyta jest 96 00:05:40,430 --> 00:05:42,860 prawidłowe i zwycięski formacji, choć. 97 00:05:42,860 --> 00:05:47,330 Jeśli go od lewej do prawej, rozpoczynając od górnego rzędu w dół, to za każdym 98 00:05:47,330 --> 00:05:50,590 Liczba ta powinna być większa niż poprzedni. 99 00:05:50,590 --> 00:05:54,530 Należy zwracać uwagę na to, co cenią masz boisko do pustej płytki choć. 100 00:05:54,530 --> 00:05:59,250 >> Lub można użyć zmiennej licznika do zapewnić, że każda wartość jest na swoim miejscu, o ile 101 00:05:59,250 --> 00:06:03,660 wymyślić jakiegoś Wzór do reprezentowania tego. 102 00:06:03,660 --> 00:06:06,250 Więc baw się eksperymentować z matematyki. 103 00:06:06,250 --> 00:06:10,930 Po wymyślić sposób, zwrotu Prawda, gdy użytkownik wygrał grę. 104 00:06:10,930 --> 00:06:15,950 Ale jeśli wartość ta jest nieprawidłowa, powrót False, użytkownik musi kontynuować ruch 105 00:06:15,950 --> 00:06:18,440 dlatego, że nie wygrał. 106 00:06:18,440 --> 00:06:23,030 Po realizacji tego czeku i wraz z initialize, rysować, i przenieść, 107 00:06:23,030 --> 00:06:25,110 skończysz grę Piętnastki. 108 00:06:25,110 --> 00:06:27,620 Gratulacje i baw się dobrze grać. 109 00:06:27,620 --> 00:06:30,600 Nazywam się Zamyla i to CS50. 110 00:06:30,600 --> 00:06:37,632