Posty

Sprawdzam Sudoku - Kurs Unity - 7. Legenda podpowiedzi, Zapisywanie stanu, Tłumaczenie

Obraz
W poprzednim kroku zaimplementowaliśmy podpowiedzi . W tym kroku dodamy legendę wyjaśniającą podpowiedzi, dodamy zapisywanie stanu oraz tłumaczenie na inne języki: Implementacja Zacznijmy od tłumaczenia na inne języki. Zgodnie z tym tutorialem instalujemy pakiet Localization, dodajemy locale dla języków: angielskiego (domyślny), niemieckiego oraz polskiego. Poprawiamy nazwy wszystkich napisów w aplikacji, oraz dodajemy ich tłumaczenia. Następnie do każdego napisu dodajemy "Localize" i wybieramy odpowiednie tłumaczenie. Dodajemy też opcję w ustawieniach, aby można było ręcznie zmienić język. W tym celu dodajemy grupę przełączników, która zawiera: HorizontalLayoutGroup - aby automatycznie rozmieścić przełączniki języków ToggleGroup - aby jednocześnie mógł być aktywny tylko jeden język Każdy przełącznik, to zwykły Toggle, w którym pole tekstowe zastąpiliśmy obrazkiem, z ikoną pobraną z pixabay.com ( english-flag , german-flag , polish-flag ) Dodajemy skrypt z właściwością local...

Sprawdzam Sudoku - Kurs Unity - 6. Podpowiedzi

Obraz
W poprzednim kroku zaimplementowaliśmy zasady gry . W tym kroku dodamy podpowiedzi pomagające rozwiązać Sudoku: Implementacja Zacznijmy od podpowiedzi w roboczej komórce. Chcemy, aby podpowiedziała ona niektóre opcje w sposób wizualny, tj. wartość która jest jedyną możliwą w danej kolumnie oznaczymy na niebiesko ( #1E88E5 ), w danym wierszu, na czerwono ( #D81B60 ), a w danym kwadracie 3x3 na żółto ( #FFC107 ). Pobieramy darmową  ikonę celownika z pixabay.com , którą następnie korzystając z GIMP'a przerabiamy i przemalowujemy na wybrane kolory: Do możliwej wartości ( PossibilityRect ) dodajemy obrazy ( OnlyValueColImage ,  OnlyValueRowImage ,  OnlyValueGroupImage ) obrócone tak, aby możliwe było wyświetlenie kilku podpowiedzi jednocześnie (jeśli dana wartość może być jedyna np. zarówno w kolumnie jak i wierszu): Do możliwej wartości ( PossibilityRect ) dodajemy metody aktywujące podpowiedzi: public class PossibilityRect : MonoBehaviour { public GameObject onlyVal...

Sprawdzam Sudoku - Kurs Unity - 5. Zasady gry

Obraz
W poprzednim kroku zaimplementowaliśmy ustawianie wartości na planszy . W tym kroku dodamy sprawdzanie zasad Sudoku, aby nie dało się "wyklikać" niepoprawnej planszy: Implementacja Na tym etapie musimy w aplikacji stworzyć model gry. W tym celu tworzymy klasy: BoardModel  do przechowywania modelu całej planszy CellModel  do przechowywania modelu pojedynczej komórki CellSetModel  do przechowywania zbiorów komórek (kolumn, wierszy, kwadratów 3x3) Pytanie 1: Który element powinien przechowywać model planszy? Możliwości: Menadżer gry ( GameManager ) Plansza ( BoardImage ) Robocza komórka ( WorkCellImage ) Decyzja: Ponieważ i tak musimy połączyć model z komórkami planszy, najprościej będzie jeśli to plansza ( BoardImage ) sama stworzy model przy starcie przekazując mu wszystkie swoje komórki. Aby ułatwić testowanie, ustawiamy początkowe wartości niektórych komórek, aby uzyskać rozwiązywalne Sudoku: public class BoardImage : MonoBehaviour { ... private BoardM...

Sprawdzam Sudoku - Kurs Unity - 4. Ustawianie wartości

Obraz
W poprzednim kroku stworzyliśmy szkielet aplikacji . W tym kroku zaimplementujemy mechanizm ustawiania wartości w komórkach planszy: Implementacja Aby wypełnić planszę do gry kwadratami 3x3 (potrzebujemy ich 9) oraz pojedynczymi komórkami (potrzebujemy 81), tworzymy odpowiednie prefabrykaty i korzystamy z  GridLayout  aby je wyświetlić. Tworzymy  GroupRect  dla każdej grupy 3x3 oraz  CellImage  dla każdej komórki: Podobnie robimy z roboczą komórką, gdzie wyświetlamy możliwe wartości. Tworzymy  PossibilityRect  do wyświetlenia możliwej wartości komórki: Po kliknięciu na komórkę planszy ( CellImage ), chcemy, aby coś (???) zaznaczyło wybraną komórkę ramką, a robocza komórka ( WorkCellImage ) pokazała aktualną wartość danej komórki. Po kliknięciu na inną komórkę planszy, coś powinno odznaczyć poprzednią komórkę, zaznaczyć nową i pokazać nową aktualną wartość w roboczej komórce. Pytanie 1: Który element powinien pamiętać aktualnie wybraną komórk...