Ćwiczenie 6 Systemy wbudowane - laboratorium Gra na telefon komórkowy I. Cele ćwiczenia W ramach tego ćwiczenia należy: 1) Przygotować sobie środowisko do pisania programów w Java ME. a. Najprostszym sposobem jest ściągnięcie ze strony http://java.sun.com/javame/downloads/index.jsp platformy: Java Platform Micro Edition Software Development Kit 3.0 Zawiera ono wszystko co potrzebne do pisania programów: edytor kodu, wizardy, środowisko uruchomieniowe oraz symulatory telefonów komórkowych. Plusem tego rozwiązania jest jego pełna izolacja od innych platform deweloperskich oraz praktycznie bezproblemowa instalacja z wykryciem najnowszego silnika Javy obecnego na komputerze, na którym przebiega instalacja. b. Nie przetestowaną możliwością jest instalacja Pulsar Eclipse, będącą odmianą platformy Eclipse. Potrzebuje ona pewnych elementów zawartych w pierwszym rozwiązaniu (emulatory telefonów itd.), co powoduje potrzebę zainstalowania całego SDK 3.0 lub wybranych elementów z w/w strony WWW. c. Również nieprzetestowanym środowiskiem jest pisanie w Netbeans, ale z pobieżnej lektury materiałów w Internecie wynika, że również można go dostosować do współpracy z Java ME. 2) Napisanie gry dla jednej osoby (typ gry - samotnik). W ramach instrukcji będzie przedstawione stworzenie i uruchomienie prostego Miletu z wykorzystaniem interfejsu niskiego poziomu. Przykład będzie przedstawiony dla platformy JP ME SDK 3.0. II. Uruchomienie pierwszego programu w JP ME SDK 3.0. Po uruchomieniu platformy JP ME SDK 3.0 (np. poprzez kliknięcie w ikonę stworzenie nowego projektu: ) wybieramy
Następnie w zasadzie wystarczy wybierać przycisk MIDletu: w celu wytworzenia najprostszego W pole Projekt name wpisujemy wybraną nazwę: Możemy wcisnąć, ewentualnie ustawić urządzenie, wybrać konfigurację i profil (dla najprostszego przypadku wystarczy zostawić domyślne wartości):
Kreator projektu wytworzy przykładowy plik z kodem w Java ME, zawierający prosty MIDlet. Teraz należałoby go skompilować i uruchomić. Dokonuje się tego poprzez przycisk Run Main Project w postaci zielonego trójkąta ( ). Uruchomienie zajmuje trochę czasu, ale po chwili pojawi się symulator telefonu komórkowego, na którym zobaczymy proces ładowania się naszej aplikacji: Po uruchomieniu aplikacji możemy z niej wyjść klawiszem leżącym pod napisem Exit. Przedstawiony sposób tworzenia aplikacji jest wystarczający dla pierwszego zadania, jednak chętni mogą spróbować używać inne urządzenia, konfiguracje i profile. Pozwoli to zastosować więcej możliwości. Stworzony projekt domyślnie jest tworzony w Moje dokumenty w folderze JavaMESDKProjects. Prezentowanym przykładzie projekt znajduje się w głębszym folderze PierwszyMIDlet, w której to istnieje folder dist. Tutaj znajdują się pliki wykonywalne przedstawione MIDletu. Wystarczy je tylko wgrać na telefon komórkowy (miejsce i sposób wgrania zapewne zależą od modelu testowanej komórki) i program powinien być dostępny.
III. Zadanie Wykonanie prostej gry/układanki dla jednej osoby. Gra powinna wykorzystywać w działaniu klawisze komórki oraz jej ekran ryzując na nim zarówno elementy graficzne jak i tekstowe. Działanie ma być ograniczone do sterowania niskiego poziomu, czyli nie używać kontrolek typu listy, przyciski, pola wyboru itp. Gra ma wykorzystywać kolory, dopasowywać się do rozdzielczości ekranu. Możliwa też powinna być zmiana poziomu gry, rozpoczęcie jej od nowa (ewentualnie cofanie ruchu) oraz zakończenie gry. Dwie przykładowe gry/układanki poniżej: 1. Wieża Hanoi. Opis można znaleźć np. w Wikipedii. W skrócie: mamy 3 pręty. Na pierwszym z prętów jest nałożone N krążków (z dziurą w środku). Każdy z krążków ma inną średnicę i na dole leży najszerszy krążek, na nim trochę węższy itd. Czyli zawsze krążek o pewnej średnicy leży na krążku o większej średnicy. Należy przełożyć wszystkie krążki z pierwszego pręta na trzeci, ale pod pewnymi założeniami: a. Można korzystać z pręta drugiego. b. Można przekładać tylko jeden krążek z dowolnego pręta na inny pręt. c. Można wziąć tylko krążek, który jest pierwszy od góry na danym pręcie. d. Wybrany krążek można nałożyć tylko na pręt, który albo jest pusty, albo na którym wierzchni krążek ma większą średnicę niż krążek, który chcemy położyć. Czyli nigdy nie może leżeć większy krążek na mniejszym. Program powinien: liczyć ruchy, sprawdzać, czy udało się przełożyć wszystkie krążki, umożliwiać zwiększyć/zmniejszyć liczbę krążków (np. przed pierwszym ruchem), umożłiwiac rozpoczęcie gry od początku. Oczywiście powinien też pokazywać w graficzny sposób stan gry. Dla chętnych możliwość animacji ruchów krążków, czy też ich trójwymiarowości. 2. Układanka piętnastka : Plansza stanowi kwadrat jednostkowych kwadratów o wymiarach 4x4 z brakującym elementem w prawym dolnym rogu z ponumerowanymi kwadracikami od 1 do 15 (stąd nazwa). Kwadrat ten jest otoczony ramką, co powoduje, że jednostkowe kwadraty nie mogą wysunąć się poza pole 4x4. Ponieważ jeden kwadracik jest pusty to na jego miejsce można przesunąć dowolny kwadrat sąsiadujący. To spowoduje, że dziura również się przesunie w nową pozycję. I znowu można wykonać ruch jakimś sąsiadującym kwadracikiem. Celem gry jest ułożenie kwadracików w ustalonym, naturalnym porządku przedstawionym poniżej 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
zaczynając od przemieszanych kwadracików np.: 2 11 13 1 4 5 8 7 10 15 3 12 6 9 14 Uwaga: najlepiej przy tworzeniu planszy początkowej losowo przesuwać kwadraciki niż losowo je rozmieszczać, gdyż w takim przypadku w połowie sytuacji nie można ułożyć ustalonego porządku. Gra powinna umożliwiać zwiększenie/zmniejszenie rozmiarów planszy (3x3, 5x5, może 3x4 itp.), rozpocząć od nowa, itd. Dla chętnych: animacja ruchu, wstawienie obrazka do ułożenia zamiast liczb. Możliwe jest zgłoszenie dowolnej innej niezbyt skomplikowanej gry/układanki. Proponuję jednak wybrać taką, w której czas nie jest istotny, gdyż inaczej może pojawić się potrzeba współbieżności (wątki), a ocena umiejętności pisania programów współbieżnych nie jest celem tych zajęć. W każdym przypadku propozycję gry proszę zgłaszać prowadzącemu zajęcia zanim rozpoczniecie implementację. Czas wykonania: 2 zajęcia laboratoryjne. Dariusz Konieczny