ZAMYLA Chandler: Zjedzmy zabawy z Piętnastki. Piętnastka to pierwsza gra, że ​​masz do realizacji i jest interaktywny. Teraz, nie martw się. Nie musisz pisać Cała sprawa się. Spójrz na kod dystrybucji, ponieważ Wiele konstrukcji gry jest już skonfigurować dla Ciebie. Przyjmuje i analizuje wiersz polecenia Argument z użytkownikiem i tworzy Płyta opiera się na tym wejściu. Sprawdza, czy gra jest wygrana i wyjścia Gdy użytkownik wygrał grę. I wygrać mecz, robi Wejście od użytkownika i wywołuje funkcję Przesuń. Więc idziemy do realizacji czterech funkcje dla gry Piętnastki, startowych, rysować, ruch, i wygrał. Po pierwsze, pozwala rozwiązać procesowi init. W init initialize reprezentujemy wyżywienie w 2D tablicy liczb całkowitych. I to jest zmienna globalna o nazwie Płyta o wymiarach MAX i MAX, maksymalne wymiary płyty. Teraz rzeczywisty wymiar płyty jest przez użytkownika, przedstawione na liczba całkowita d, które mogłyby wynosić mniej niż MAX. Ale w C, nie można zmienić rozmiar tablic, tak utkniesz z że maksymalny wymiar. Twoim zadaniem w init jest do wypełnienia wartości tablicy o prawidłowej wartości. Teraz widzieliśmy 1D tablice, ale jak tablice 2D działa? Jest indeksem rzędu zera indeksowane jak zawsze, a potem także z kolumna. I będziesz wypełnić siatkę w w malejącej wartości, tak jak to. Siatka, 0, 0, wiersz 0, kolumna 0, jest 8, siatka 0, 1 jest 7. Jest to na przykład w przypadku d, trochę d, jest 3. Teraz, wyżywienie w Piętnastki musi również zawiera puste płytki, jeśli kiedykolwiek grał z gry fizycznej. Ale płyta jest tablica całkowitą, więc wszystkie wartości muszą być liczbami całkowitymi. Więc to do ciebie, aby zdecydować, liczbę całkowitą wartość reprezentować pustą płytkę. Aby zainicjować pokładzie, można użyć Struktury zawierające do pętli stan początkowy tablicy, gdzie wyżywienie i j oznacza element w wiersz i i kolumnie j. Rozpocznie się w kolejności malejącej, a pamiętać, że jeśli liczba płytek jest nieparzysta, to będziesz musiał zamienić położenie 2 i 1 punkt. Tak więc, mamy zainicjowany zarządu. Teraz, że mamy zainicjowany nasze wyżywienie, nadszedł czas, aby go wyciągnąć. Remis będzie wydrukować aktualny stan wyżywienie, ale trzeba się upewnić, drukowanie płytek w tej samej kolejności że już zainicjowany je. I trzeba także sformatować Twoje liczby poprawnie. Ponieważ możemy mieć pojedyncze cyfry i podwójne cyfry, a następnie chcesz przed wydrukować pustą przestrzeń żadnych Liczby jednocyfrowe. Używasz, że za pomocą zastępczy -. Ale pamiętam naszą pustą przestrzeń. Nie chcemy, aby wydrukować rzeczywistą liczbę które wybraliśmy do reprezentowania że puste miejsce w tablicy, ale także nie chce w ogóle drukować nic. Więc co można zrobić, to określić symbol lub postaci do reprezentowania puste płytki. W poprzednich przykładach wybrałem podkreślenia, a następnie po prostu wydrukować że gdy dojdziesz puste Przestrzeń w funkcji draw. Tak będzie się rysować zagnieżdżone pętle. Coś takiego. Dla każdego wiersza, a następnie dla każdej wartości wiersz, masz zamiar drukować wartość w tym miejscu. Po wydrukowane wszystkie wartości w wierszu, a następnie może drukować nową linię. Pamiętaj, że zamówienie do remisu Funkcja musi echo lub lustro kolejność w zainicjowany funkcji. Teraz, gdy zainicjowana płytę i że już wyciągnąć go, że nadszedł czas, aby pozwolić Użytkownik edytować i wykonują swoje ruchy. Tak więc w zależności Fifteen.c, Program pobiera dane wejściowe od użytkownika i Następnie wywołuje funkcję ruch, przechodząc liczby płytek, które użytkownik chce przejść. Teraz, być ostrożnym. To jest rzeczywista liczba płytek a nie jego rzeczywiste położenie. Tak, trzeba szukać płytki jest Stanowisko wiedzieć, gdzie to jest. Teraz należy tylko pozwalają użytkownikowi wykonać ruch, jeśli jest to legalne. Prawnym jest każdy ruch, który jest płytki przylega do płytki puste. Oznacza to, że powyżej i poniżej, aby w lewo iw prawo. Więc musisz wiedzieć, gdzie Dachówka jest również puste. Teraz, każdy ruch szukasz Dachówka użytkowników, ale jest to prawdopodobnie nie najlepiej sprawdzić płytki pusty za każdym razem, bo robisz to za każdym razem użytkownik chce przejść. Tak więc, zamiast, najlepiej pamiętam gdzie Dachówka jest za pomocą niektóre puste dobrze nazwane zmienne. Więc kiedy pozwalają użytkownikowi na ich ruchy, są one dobrze na ich sposób na wygranie gry Piętnastki. Aby wygrać grę piętnastu płytek być w określonej kolejności, a Funkcja sprawdza, czy wygrał Gra jest wygrana. Zwraca True, jeśli gra jest wygrana i płytki są w odpowiedniej kolejności, false w przeciwnym wypadku. Tak, aby wygrać mecz z piętnastu, płytek muszą być rosnące z puste płytki w dolnym prawym rogu. Jak więc sprawdzić, czy użytkownik przeniósł się na prawo pokładzie orientacja? Cóż, będziesz iteracyjne nad pokładzie i sprawdzić wartości, aby upewnić się, że są one w odpowiednim miejscu. Aby to zrobić, możesz użyć zagnieżdżonych pętli tak jak robiłeś w losowaniu i init. Istnieje kilka sposobów, aby sprawdzić i potwierdzić, czy płyta jest prawidłowe i zwycięski formacji, choć. Jeśli go od lewej do prawej, rozpoczynając od górnego rzędu w dół, to za każdym Liczba ta powinna być większa niż poprzedni. Należy zwracać uwagę na to, co cenią masz boisko do pustej płytki choć. Lub można użyć zmiennej licznika do zapewnić, że każda wartość jest na swoim miejscu, o ile wymyślić jakiegoś Wzór do reprezentowania tego. Więc baw się eksperymentować z matematyki. Po wymyślić sposób, zwrotu Prawda, gdy użytkownik wygrał grę. Ale jeśli wartość ta jest nieprawidłowa, powrót False, użytkownik musi kontynuować ruch dlatego, że nie wygrał. Po realizacji tego czeku i wraz z initialize, rysować, i przenieść, skończysz grę Piętnastki. Gratulacje i baw się dobrze grać. Nazywam się Zamyla i to CS50.