Temat 6. Przechowywanie danych w IOS Gra w kulki
Transkrypt
Temat 6. Przechowywanie danych w IOS Gra w kulki
Temat 6. Przechowywanie danych w IOS Gra w kulki - część 3 Wymagana wiedza wstępna: 1) Student musi 1) Umieć stworzyć projekt aplikacji konsolowej w XCode z wykorzystaniem Objective-C 2) Umieć skompilować i uruchomić program w XCode 3) Skorzystać z podstawowych klas i funkcji Objective-C 4) Nauczyć się zasad wywoływania metod w Objective-C 5) Znać pojecie wskaźnika 6) Umieć tworzyć hierarchę klas w Objective-C 7) Umieć wykorzystywać późne wywołanie metod w Objective-C 8) Umieć korzystać z kolekcji 9) Umieć tworzyć własne inicjalizatory 10) Tworzyć referencje do obiektów znajdujących się na widoku 11) Obsługiwać domyślne interakcje z obiektami za pomocą własnych metod 12) Znać zasady korzystania z @property i @synthesize 13) Rozumieć ideę MVC - model - view - controller 14) Rozumieć ideę delegata dla widoku (kontrolera) 2) Student powinien 1) Znać jezyk Java lub C# lub C++ Cel dydaktyczny 1) Student musi 1) Umieć przechowywać ustawienia w pamięci stałej IOS 2) Umieć uzyskać dostęp do plików 3) Umieć serializować dane do plików 2) Student powinien 1) Umieć korzystać z iCloud i zapisywać tam dane w postaci par kluczwartość 3) Student może 1) Umieć korzystać z GameKit 2) Umieć korzystać z dodatkowych Frameworków 3) Umieć korzystać z iCloud w zakresie zapisywnia w nim danych UIDocument Zakres tematyczny wykładu i laboratorium Niniejsze zajęcia wprowadzają wiedzę z zakresu przechowywania danych na urządzeniach IOS oraz zapamiętywania danych w chmurze z wykorzystaniem iCloud oraz GameKit. Core Data - możliwości Grupowanie filtrowanie i organizowanie danych NSPredicate – obiekty ograniczeń zapytań Architektura CoreData - Konteksty i obiekty zarządzalne NSManagedObject i NSManagedObject Tworzenie obiektu zarządzalnego NSUserDefaults - konfigurowanie preferencji użytkownika CFPreferences API - Zarządzanie preferencjami użytkownika i urządzenia / aplikacji Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 1/4 Dane w chmurze iCloud o Klucz-wartosć - dla prostych danych – ustawień, preferencji, stanu aplikacji. o Document - dla danych widzialnych w formie dokumentów bezpośrednio dla użytkownika o Core Data – dla danych strukturalnych niewidocznych bezpośrednio dla użytkownika NSUbiquitousKeyValueStore UbiquityContainer GameCenter - Baza danych gry w chmurze Framework GameKit Uzyskiwanie dostępu do GameCenter Załączniki 1. Prezentacja_6.pdf - slajdy prezentacji wykładu Zadania na laboratorium Stwórz projekt gry „Uciekająca kulka” Zasady gry. Gra polega na śledzeniu i blokowaniu ruchów kulki. Kulka porusza się w losowo wybranym kierunku. Jeśli wypadnie poza krawędź ekranu, gra kończy się. Aby zapobiec wypadnięciu, należy na krawędzi ekranu ustawić blokadę, tak aby przeciąć tor ruchu kulki. Kulka odbije się od blokady i będzie kontynuowała ruch w nowym kierunku. Program ma rozpoczynać się od menu, w którym można rozpocząć grę. Po przegranej, gra ma powrócić do menu. Zadanie 1. Dodaj do klasy kulka pole tekstowe, które będzie wyświetlało na kulce aktualny wynik gry. Podpowiedzi 1) Pole tekstowe to UILabel. Należy stworzyć odpowiednią właściwość i przypisać do niej nowy obiekt tego typu. Następnie należy umieścić ten obiekt na widoku kulki, pamiętając o odpowiedniej kolejności. self.l = [[UILabel alloc]init]; [l setFont:[UIFont fontWithName:@"AmericanTypewriter-Bold" size:52.0]]; [l setTextColor:[UIColor whiteColor]]; [l setBackgroundColor:[UIColor clearColor]]; [l setTextAlignment:NSTextAlignmentCenter]; [self addSubview:l]; 2) Uaktualnianie właściwości pola należy wykonać w metodzie addPoint wywoływanej przy każdym odbiciu kulki -(void)addPoint{ self.result+=1; l.text=[[NSString alloc]initWithFormat:@"%d",self.result]; } Zadanie 2. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 2/4 W momencie zakończenia gry zapisz aktualny wynik w ustawieniach aplikacji. Podpowiedzi 1) Wykorzystaj NSUserDefaults [[NSUserDefaults standardUserDefaults] setValue:self.result forKey:@"wynik"]; 2) Sprawdź wcześniej czy poprzedni wynik był mniejszy od aktualnego i tylko w tym przypadku zmodyfikuj wartość ustawienia. Zadanie 3. Zapamiętaj wynik korzystając w pliku. Podpowiedzi 1) Wykorzystaj NSMutableArray do zapamiętywania wyników tymczasowo storedScores = [[NSMutableArray alloc] init]; 2) Wykorzystaj framework NSData do zapisywania danych w pamięci masowej NSData * archivedScore = [NSKeyedArchiver archivedDataWithRootObject:storedScores]; NSError * error; [archivedScore writeToFile:storedScoresFilename options:NSDataWritingFileProtectionNone error:&error]; 3) Odczyt danych NSArray * unarchivedObj = [NSKeyedUnarchiver unarchiveObjectWithFile:storedScoresFilename]; if (unarchivedObj){ storedScores = [[NSMutableArray alloc] initWithArray:unarchivedObj]; } Zadanie 4. Zapamiętaj status gry korzystając z zapisywania par klucz-wartosć w iCloud. Zadania dodaktowe * Zadanie 1. Wykorzystaj GameKit do wysłania danych o wynikach do bazy Apple Podpowiedzi 1) Zmodyfikuj zapamiętywnie wyników tak, aby obiekty w tablicy były typu GKScore NSString * leaderboardCategory = @"pl.umk.kulki.scores"; GKScore * score = [storedScores objectAtIndex:index]; GKScore * submitScore = [[GKScore alloc] initWithCategory:leaderboard]; [submitScore setValue:self.result]; [submitScore setShouldSetDefaultLeaderboard:YES]; [submitScore setContext:1]; Zadanie 2. Dodaj wyświetlanie najlepszych wyników za pomocą GameKit Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/4 - (void)showLeaderboard:(NSString *)leaderboard { GKLeaderboardViewController * leaderboardViewController = [[GKLeaderboardViewController alloc] init]; [leaderboardViewController setCategory:leaderboard]; [leaderboardViewController setLeaderboardDelegate:self]; [self presentModalViewController:leaderboardViewController animated:YES]; } - (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController { [self dismissModalViewControllerAnimated: YES]; } Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 4/4