Conrad 10223 Operation Manual [pl]

Wprowadzenie
Przed Państwem znajdują się wszystkie elementy pakietu gry. Oprócz instrukcji szybkiego uruchamiania znajdą Państwo przed sobą nakładkę wyświetlacza LCD oraz nakładkę Joypad. Obie płytki zostały zaprojektowane i specjalnie dostoso­wane do Arduino Uno. Pozwalają Państwu na wypróbowanie przedstawionych przykładów bądź na rozwinięcie własnych gier. Prosimy o ponowne, dokładne przyjrzenie się obu ekranom. Jest wiele do odkrycia.
Nakładka wyświetlacza
Nakładka wyświetlacza to płytka, która za pośrednictwem wyświetlacza LCD 12864 LCD ST7565 i przycisków sprzętowych staje się kompatybilna z Arduino. Wyświetlacz ma rozdzielczość 128 x 64 px i sterowany jest za pomocą SPI (Serial Peripheral Interface). Dane techniczne:
Nakładka ekranu Nakładka kompatybilna z Arduino Uno Ekran DXDCG12864-4330 Kontroler wyświetlacza ST7565 Rozdzielczość 128 x 64 px Napięcie robocze 3,3 V Urządzenie peryferyjne 2 przyciski na płycie (A4 oraz A5) Wielkość wyświetlacza 38 x 20 mm Pozostałe skrócona forma - 14 wolnych portów I/O na Arduino Nie muszą się Pańs two nadmiernie wczytywać w s zczeg óły dotyczące sterowania
wyświetlaczem, ponieważ funkcjonalność Biblioteki odejmuje Państwu większą część pracy, dzięki czemu mogą Państwo całkowicie skoncentrować się na pro- gramowaniu gier. Jeśli są Państwo zainteresowani szczegółowymi informacjami dotyczącymi sterowania wyświetlaczem i jego cech, polecamy Państwu zapozna­nie się z pakietem „Programowanie wyświetlaczy graficznych Franzis Maker”.
1.2 | Nakładka do Joypada
Nakładka do Joypada
Nakładka do Joypada została zaprojektowana specjalnie dla tego projektu. Umożliwia ona Państwu praktyczną i intuicyjną obsługę gier. Na tarczy znajduje się sześć przycisków. Cztery z nich są ułożone w kształt krzyża (D-pad), dzięki czemu kierunki mogą być wybierane intuicyjnie. Dwa kolejne przyciski przybierają funkcje odpowiednie do danej gry. Łącznie mają Państwo więc do dyspozycji o­siem przycisków, które pozwalają na korzystanie z szerok iego zakresu gier i funk­cji.
Poza przyciskami w płytkę wbudowany jest również niewielk i przetwornik piezoe- lektryczny. Spełnia on funkcję głośnika. Mogą więc Państwo nie tylko przekazywać informacje za pomocą wyświetlacza, lecz również poprzez akustykę. Dane tech­niczne:
Nakładka do Joypada Nakładka kompatybilna z Arduino Uno Wprowadzanie danych 6 przycisków z krótkim skokiem (D-Pad + 2
przyciski akcji)
Emisja dźwięku wbudowany głośnik TMB12A05
1.3 | Montaż
Jak wspomniano na wstępie, obie nakładki doskonale pasują do jednego Arduino Uno. Należy się przy tym upewnić, że nakładki i górne wejścia Arduino Uno dokładnie się domykają.
Nakładka Joypada doskonale wtedy pasuje do dolnych listw zasilających, patrz rysunek. W tym układzie zastosowanie produktu jest najlepsze, mogą Państwo chwycić jednocześnie za Arduino oraz nakładkę i rozpocząć obsługę.
1.4 | Dokumentacja
Niniejsza instrukcja szybkiego uruchamiania zawiera informacje wprowadzające oraz proste przykłady udanego programowania gier. Główne informacje znajdą Państwo w podręczniku online dotyczącym programowania gier. Mogą Państwo ściągnąć pełną wersje PDF pod adresem: http://www.buch.cd. Odpowiedni kod to
10223-0.
Poza podręcznikiem znajdą tam Państwo również potrzebną Bibliotekę oraz przykłady.
1.5 | Community
Jako rozszerzenie projektu, znajdą Państwo dodatkowe informacje na stronie: http://tiny.systems/spielekonsole Mają tutaj Państwo dostęp nie tylko do przyszłych aktualizacji Biblioteki bądź pro-
gramów, lecz również do bardziej zaawansowanych projektów i informacji obu autorów. Poza tym można tutaj zamówić przydatne narzędzia online, których
potrzebują Państwo do tworzenia własnych oraz przykładowych projektów.
1.6 | Zintegrowane Środowisko Programistyczne (IDE)
Aby mogli Państwo coś stworzyć, potrzebują Państwo jak najprostszego w obsłudze Zintegrowanego Środowiska Programistycznego (w skrócie: IDE) jak również kilku narzędzi. Jako IDE stosuje się tutaj znane i często wykorzystywane IDE od Arduino. Aktualną wersję kompatybilną z Państwa sprzętem znajdą Państwo na stronie:
www.Arduino.cc/Downloads W naszych projektach pracowaliśmy z wersją 1.6.7, jednak instrukcje użytkowania
w tej książce powinny funkcjonować również z nowszymi wersjami. Po ściągnięciu oraz instalacji IDE wybierają Państwo w ustawieniach odpowiednią płytę oraz port. Teraz mogą Państwo zaprogramować Arduino bądź konsolę do gry.
Oprócz Arduino wykorzystywane jest jeszcze kilka narzędzi, między innymi opro­gramowanie do tworzenia i opracowywania grafiki. W tej książce wykorzystywany jest zarówno program Windowsa Paint, jak również otwarte oprogramowanie Gimp. Za pomocą narzędzia online na tiny.systems mogą Państwo te grafiki przekonwertować na kompatybilny format - i wiele więcej.
Ważne jest również ściągnięcie i instalacja przykładów zawartych w Bibliotece na stronie http://www.buch.cd. Przynależny kod to10223-0.
Aby zainstalować Bibliotekę, muszą Państwo po prostu uruchomić skompresowa­ne dane za pomocą managera Biblioteki. W tym celu należy kliknąć Sketch -> Otwórz bibliotekę -> Dodaj Bibliotekę .Zip oraz wybrać pobrane skompreso- wane dane Biblioteki. Teraz powinno pojawić się powiadomienie o udanym zakończeniu procesu.
1.7
| Test sprzętu
IDE oraz przykładowe programy są więc zainstalowane - czas załadować pierwszy program na Arduino. W tym celu należy wybrać Dane -> Prz ykłady -> GameEn- gine -> S tarter a następni e otworzyć pierwszy program i kliknąć przycisk Pob ierz. Po chwili zobaczą Państwo powiadomienie o udanym zakończeniu procesu w oknie usuwania błędów. Wyświetlacz powinien wyglądać podobnie do tego przed­stawionego na rysunku poniżej. Jeśli tak nie jest, należy ponaciskać oba p rzyciski znajdujące się bezpośrednio pod wyświetlaczem. W ten sposób regulują Państwo kontrast wyświetlacza oraz usuwają potencjalną przyczynę braku obrazu. Jeśli nadal nic nie pojawia się na wyświetlaczu, należy sprawdzić umiejscowienie obu nakładek na Arduino.
Należy wybrać optymalną dla siebie wartość kontrastu i zapamiętać ją. W kolejnych projektach należy wprowadzić ją w program, tak aby wyświetlacz
zawsze pokazywał dobrze czytelne wskaźniki.
1
2
3
4
5
W tym przykładowym programie mogą Państwo testowaćżne funkcje nakładek. Jeśli na przykład przycisną Państwo przycisk na Joypadzie, to zostanie on wyróżniony na wskaźniku. Mogą Państwo również testować dźwięk. Należy przetestować funkcjonalność wszystkich komponentów, zanim rozpocznie się właściwą pracę.
PIŁKA – WSTĘP DO PROGRAMOWANIA GIER
Wszystko już zostało zainstalowane i przetestowane - czas poświęcić się faktycz­nemu rozwijaniu gier. W tym celu należy otworzyć przykładowy program Piłka poprzez Dane -> Przykłady -> GameEngine -> Piłka.
W tym pierwszym, prostym przykładowym programie chodzi o szkicowanie i poruszanie prostym obiektem, piłką. Najpierw należy ustawić kontrast w 9 wierszu programu. W tym wierszu znajduje się polecenie instalacji engine.init(20). Liczba 20 w nawiasie może zostać zastąpiona i nną wybraną wartością kontrastu. Będzie to konieczne również w kolejnych projektach. Następnie mogą Państwo załado­wać program na Arduino. Po udanym wgraniu zobaczą Państwo prosty obiekt pośrodku ekranu. W jaki sposób przebiega realizacja od strony technicznej?
0
void drawBall() {
0
0
engine.drawPixel(ballX , ballY) ;
0
0
engine.drawPixel(ballX + 1, ballY);
0
0
engine.drawPixel(ballX - 1, ballY);
0
0
engine.drawPixel(ballX , ballY + 1);
0
00 engine.drawPixel(ballX, ballY - 1);
6
0
7
1
2
3
4
5
1
}
0
Za pomocą funkcji, która nosi odpowiednią nazwę drawBall (), piłka zostanie um­ieszczona na ekranie. Wymagane jest jedynie kilka wierszy, aby aktywować od­powiednie piksele na wyświetlaczu. Opiera się to głównie na tym, że główna część pracy w tle przejmowana jest przez Game Engine. Aktualna pozycja piłki oznaczona jest zmiennymi ballX i ballY. Piłka rysowana jest za pomocą funkcji drawPixel(), która aktywuje piksele na aktualnej pozycji piłki i w jej bezpośrednim otoczeniu. Mogą Państwo również dopasować kształt piłki, wybierając, które pik­sele naokoło pozycji piłki mają zostać aktywowane. Należy zw ró c i ć uwagę, żeby w lewym górnym rogu piksel znajdował się w pozycji 0,0.
0
void moveBall() {
0
0
ballX = ballX + 1;
0
0
ballX = ballX % 128;
0
0
ballY = ballY % 64;
0
0
}
0
Za pomocą funkcji moveBall(), piłka zaczyna się poruszać. Po każdym wywołaniu tej funkcji, pozycja piłki zwiększa się o 1. W prostych słowach oznacza to, że piłka na wyświetlaczu porusza się w prawo. Oba wiersze pod tym zapewniają, że piłka nie opuści wymiarów wyświetlacza.
Funkcja Modulo gwarantuje, że współrzędne x nie przekraczają 128, a współrzędne y nie przekraczają 64 - odpowiada to dokładnie współczynnikowi pikseli 128 x 64, który znajduje się na Państwa ekranie.
0
void controlBall() {
0
0
2
3
4
5
6
7
8
1
2
3
4
0
moveBall();
if(engine.joypad.isPressed(UP)){
0
0
ballY = ballY - 1;
0
0
}
0
0
if(engine.joypad.isPressed(DOWN)){
0
0
ballY = ballY + 1;
0
0
}
0
0
}
0
Za pomocą funkcji controlBall() mogą Państwo sterować piłką. W ten prosty sposób sprawdzone mogą zostać przyciski Joypada. Funkcja engi­ne.joypad.isPressed(UP) wysyła wartość TRUE, gdy przycisk jest wciśnięty. Wtedy pozycja y piłki zmniejsza się o jeden piksel, co powoduje, że piłka zbliża się do głównej krawędzi wyświetlacza. Analogicznie do tego działa funkcja engi­ne.joypad.isPressed(DOWN). Mogą Państwo również regulować wysokość piłki za pomocą przycisków w górę i w dół, podczas gdy piłka na wyświetlaczu porusza się w prawo. Gdy piłka osiągnie koniec wyświetlacza, pojawi się ponownie na innej krawędzi. Aby te trzy funkcje dobrze współgrały, muszą zostać wywołane w pasującym miejscu w rutynie pętli.
0
void loop(){
0
0
if(engine.update()){
0
0
controlBall();
0
0
if(engine.isFrameCount(20)){
0
0
5
6
7
8
9
0
}
0
0
drawBall();
0
0
}
0
0
}
0
Arduino posiada do tego funkcję stałej pętli. Funkc ja engine.update() zapewnia, że wszystkie funkcje Engine, takie jak rysowanie piłki i wartości przycisków,
kończą się zanim rozpoczyna się kolejne przejście. Funkcja moveBall() ma jednak jeszcze inne ograniczenie - wywoływana jest jedynie co 20 klatek. Z tego powodu zawartość wyświetlacza jest aktualizowana, zanim można zmienić pozycję piłki. Jest to spowodowane tym, że w przeciwnym razie piłka za szybko by się porus­zała.
Ping-Pong - tym razem inaczej
Kolejny przykładowy program stanowi trochę inne wydanie znanej gry w ping-ponga. Zamiast paletką sterują Państwo piłeczką za pomocą klawiszy ze strzałkami. Można się przy tym nauczyć nowych elementów programowania gier.
Ping-pong został wydany po raz pierwszy w roku 1972 przez f irmę Atari i stanowi jedną z najbardziej znanych gier. Gra ta opiera się na zasadach gry w ping-ponga bądź w tenisa s tołowego. W klasycznej wersji dwóch graczy gra przeciwko sobie. Po obu przeciwległych stronach wirtualnego pola gry znajdują się dwie paletki w formie kresek. Piłka porusza się po ekranie, a gracz próbuje odbić piłkę paletką w kierunku przeciwnika. Jeśli mu się to nie uda, przeciwnik dostaje punkt.
W tej wersji odgrywają Państwo rolę piłki, podczas gdy obie paletki są sterowane przez komputer. Muszą Państwo próbować utrzymać piłkę w grze jak najdłużej.
Program przykładowy otwiera się za pomocą jednego kliknięcia.
1
2
3
4
5
6
7
8
9
0
1
2
0
collisionX = collisionX * -1;
Dane -> Przykłady -> Game Engine -> GameEngine1 -> Pong
Ten program zawiera wiele dobrze już znanych elementów. Na przykład funkcję drawBall(), która - w zależności od aktualnej pozycji - tworzy piłkę na polu gry. Analogowo działają funkcje drawPlayer() i drawField(), które pozwalają naszkico­wać obie paletki na wyświetlaczu. Obok drawField() istnieje jeszcze funkcja do­datkowa, mianowicie drawValue(), która szkicuje aktualny poziom bądź wynik przy danej pozycji. Aktualny poziom zmienia się zawsze wtedy, gdy piłka zostaje skutecznie odbita. Zapewnione jest to za pośrednictwem funkcji moveBall().
0
void moveBall() {
0
0
if (ballX == 1 || ballX == 127) {
0
0
setup();
0
0
}
0
0
if (ballY == 1 || ballY == 63) {
0
0
collisionY = collisionY * -1;
0
0
}
0
0
if (abs(b allX - player1X ) <= 2 && abs(ballY - player1Y) < 9) {
0
0
collisionX = collisionX * -1;
0
0
level++;
1
0
}
1
0
if (abs(b allX - player2X ) <= 2 && abs(ballY - player2Y) < 9) {
1
1
3
4
5
6
7
8
1
2
3
4
5
0
player1Y--;
0
level++;
1
0
}
1
0
ballX = ballX + collisionX;
1
0
ballY = ballY + collisionY;
1
0
}
1
Jak Państwo widzą, istnieje wiele zapytań dotyczących pozycji piłki. Jeśli piłka znajdzie się w pozycji x przy 1 bądź 127, oznacza to, że nie została ona skutecznie odbita i wyszła poza prawą bądź lewą stronę pola gry. W tym przypad­ku wywoływana jest Setup-Routine i gra może zacząć się od początku. Jeśli piłka znajdzie się w pozycji y 1 lub 63, oznacza to, że została ona odbita od górnej bądź dolnej krawędzi, zanegowana zostaje więc współrzędna Y i piłka zaczyna porus­zać się w przeciwnym kierunku. W obu zapytaniach
if (abs(ballX - player1X) <=2 && abs(ballY - player1Y) < 9)
ustala się, czy piłka zostaje od bita od paletek , k on trol ując, czy piłka jest wystarczająco blisko paletek i czy w nią trafia. Jeśli tak się dzieje, to współrzędna ruchu w kierunku x zostaje odwrócona i gracz przechodzi na wyższy poziom .
0
void movePlayer() {
0
0 0
0 0
0 0
0 0
if (player1Y < 7) {
player1Y++;
}
if (player1Y > 55) {
0
6
7
8
9
0
1
2
3
4
5
6
1
2
0
ballY = ballY - 1;
0
}
0
0
player1Y = (player1Y -1 + random(3));
0
0
if (player2Y < 7) {
0
0
player2Y++;
1
0
}
1
0
if (player2Y > 55) {
1
0
player2Y--;
1
0
}
1
0
player2Y = (player2Y -1 + random(3));
1
0
}
1
Ruch gracza (paletki) jest ustalany natomiast w sposób losowy. Przedtem sprawdza się jedynie, czy paletki znalazły się zbyt blisko górnej bądź dolnej krawędzi. Przesunięcie ku górze bądź ku dołowi wywołane jest za pośrednictwem dodania lo- sowej liczby pomiędzy -1 i 1. Wywołanie funkcji random(3) wywoływane jest liczbami losow ymi między 0 i 2. Ten zakres wartości przesuwany jest za pomocą „-1” do ko­niecznego zakresu wartości.
0
void controlBall() {
0
0
if(engine.joypad.isPressed(UP) && ballY > 2){
0
0
3
4
5
6
7
8
9
0
1
2
3
4
1
2
0
controlBall();
0
}
0
0
if(engine.joypad.isPressed(DOWN) && ballY < 61){
0
0
ballY = ballY + 1;
0
0
}
0
0
if(engine.joypad.isPressed(LEFT) && ballX > 13){
0
0
ballX = ballX - 1;
0
0
}
1
0
if(engine.joypad.isPressed(RIGHT) && ballX < 115){
1
0
ballX = ballX + 1;
1
0
}
1
0
}
1
W funk cji cont roll B all( ) wys z ukiwan e są jedynie przyciski, a pozycja piłki zmienia się odpowiednio do wprowadzonych danych. Jednakże ta „uparta piłka” podlega oczywiście pr awom fizy ki . Natu ra lny r uch p iłki może oczywiście zostać zmieniony.
0
void loop(){
0
0
if(engine.update()){
0
0
3
4
5
6
7
8
9
0
1
2
3
4
0
if(engine.isFrameCount(10 - (level/10))) {
0
0
moveBall();
0
0
}
0
0
if(engine.isFrameCount(25 - (level/4))) {
0
0
movePlayer();
0
0
}
0
0
drawPlayer();
1
0
drawBall();
1
0
drawField();
1
0
}
1
0
}
1
Aby czas przebiegu wszystkich funkcji był dobrze skoordynowany, muszą one zostać wywołane po sobie w procedurze loop. Funkcja isFrameCount() służy do sterowania prędkością procesów. Pozycja piłki zmienia się co 10 klatek, a pozycja paletek co 25 klat ek. Ruch piłki jest aktualizowa ny również częściej. Do tego wbu- dowany jest równi eż stopień ciężkości. Wraz ze wzrostem p ozi o mu, prz erwa w ak tua- lizacjach jest troch ę krótsza, a ruch szybszy. Im wyższy więc poziom, tym gra staje się trudniejsza.
Snail – INSTALOWANIE MAP BITOWYCH
W poprzednich przykładach elementy gry przedstawiane były głównie za pomocą linii i pikseli. W tym przykładzie przekonają się Państwo, jak zintegrować w grze nawet bardziej złożone grafiki. W tym celu poznają Państwo konwerter online na Ti­ny.systems.
Na stronie internetowej http://tiny.systems/article/mosaic.html znajduje si ę narzędzie, kt óre po z w a l a na bar dzo proste tw orzenie rysun k ó w. Pośrodku
tej strony znajduje się s zare pole. Gdy klikną Państwo w jakieś miejsce na t ym polu, aktywowany zostanie odpowi edni piksel . Pon owne kli knięcie na dan y piksel powoduj e jego zniknięcie. Należy kliknąć i przytrzymać przycisk myszy, poruszając kursor po polu. Jak Państwo widz ą, w ten sposób można tworzyć całe rysunki. Na początek pole rysowania ma powierzchnie 16 x 16 px. W celu stworzenia większych rysunków można powiększyć powierzchnię kliknięciem na odpowied ni s ymbol pod po wier zchnią rysowania. Jeśli będą Państwo niezadowole ni z rysun ku, można wyczyścić całe pole jednym kliknięciem przycisku X.
Przy pierwszej próbie mogą Państwo stworzyć figurę o wielkości 16 x 16 px. Gdy będzie gotowa, należy zaznaczyć haczyk znajdujący się na dole po lewej stronie. Pojawi się dość długi kod szesnastko wy, który należy skopiować do programu Snail. W tym celu nale ży ot w o r zyć program klikając na Dane -> Pr z ykłady -> GameEngine
-> GameEngine1 -> Snail. W 10 wierszu programu znajdą Państwo współrzędną snail, która jest już wypełniona inną grafiką. Zamiast istniejącego kodu szesnast- kowego należy wpisać nowy, wygenerowany przez stronę Mosaic. Mogą teraz Państwo pobr ać progr am i spra wdz ić, czy narysow ana przez Państwa grafika znajduje się na wyświetlaczu (należy pamiętać o dostosowaniu wartości kontrastu). Za pomocą przycisków kierunków można poruszać grafikę po ekranie. Odpowiada za to nowa funkcja w Bibliotece, która nazywa się drawBitmap():
engine.drawBitmap(snailX, snailY, 16, 16, snail);
Oba pierwsze parametry funkcji potwierdzają pozycję grafiki na wyświetlaczu, a kolejne parametry definiują jej wielkość. Na ostat nim m iejs cu li sty p ar ame trów znaj duj e się sa ma współrzędna, w której umieszc zone są dane grafiki. Tak proste jest przed- stawianie grafiki na ekranie.
Istnieje jednak jeszcze druga możliwość tworzen ia dany ch gr a ficzny c h komp a tyb ilny ch z Arduino na stronie Mosaic. Być może zwrócili już Państwo uwagę na przycisk o- pisany jako „wybierz dan e” . P oprz e z niego możliw e je s t załadowanie istniejących map bitowych na stronę i automatyczne przetworzenie ich w kod szesnastkowy. Trzeba
jednak mieć na uwadze fakt, że nie wszystkie dane map bitowych można tak łatwo przekonwertować. Należy pa miętać, że mowa jest tutaj jedynie o monoch romowych (jednokolorowych) mapach bitowych. Najłatwiej jest stworzyć taką mapę bitową sa- modzielnie w programie do rysowania, takim jak MS Paint. Również program do rysowania Gimp dobrze się od tego nadaje.
Należy odpowiednio zapisać grafikę w pr ogramie Paint.
W przykładowym folderze programu znajdują się już odpowiednie grafiki. Nazywają się Snail.bmp. Te dane mogą zostać załadowane na stroni e Mosaic, po c zym otrzy- mują Państwo inf ormacje dotyczące grafiki w form ie kodu szesnastkowego. Ten k od szesnastkowy należy skopiować ponownie we współrzędne snail, od razu po załado­waniu programu na ekranie ukaże się ślimak (engl. Snail).
Flappy Bird - radość z gry z Game Engine 1
Jest to ostatni pr zykład w tej instrukcji szybkiego uruchamiania. Tutaj na pierwszym miejscu jest zabawa. W następującym programie chodzi o małą grę zręcznościową, początkowo stworzoną na smartfony, która cieszyła się największą popularnością na początku roku 2014. Twórca Dong Nguyen zdec ydował się jednak na usunięcie gry z App-Store w lutym tego samego roku. Do dziś jednak istnieje wiele klonów tej gry, wciąż jest więc ona popularna.
Flappy Birds na wystawie
Program otwierany jest poprzez Datei -> Pr zykłady -> GameEngine -> GameEngi- ne1 -> FlappyBirdClone. Celem gry jest przelecenie małym ptaszkiem między dwiema rurami. W tej grze wyświetlacz ma możliwość obrotu, można więc wy­korzystać całą długość ekranu. Sterowanie jest proste, potrzebny jest do niego za­zwyczaj jedynie wskazujący na lewo przycisk, za pomocą którego przekazuje się ptakowi impuls. Wymaga to jednak dużej z ręczności, ponieważ jeśli przycisk jest przy­trzymywany zbyt długo, to ptak może wpaść na górną rurę. Jeśli impuls jest za słaby,
ptak spada. Do tego poziom trudności zwiększa się po pokonani u każdej przeszkody,
init
byte contrast (0–63)
Inicjalizacja ekranu z przekazaną wartością kontrastu
update
-
Update der Game Engine (Prze-
wadzonych danych itd.)
(x-,y-Position)
pozycji
drawLine
byte x1, byte y1
(Punkt 2)
rysuje linie pomiędzy dwoma drawValue
byte x, byte y
byte value
rysuje stan pun któw na wyb ranej
drawBitmap
byte x, byte y,
byte bitmap[]
rysuje mapę bitową na pozycji x,
isFrameCount
byte frame
przekazuje informację zwrotną
odstęp między rurami wciąż się zmniejsza. Gdy ptak ponosi porażkę, pokazuje się liczba pokonanych pr zeszkód. P o ponowny m naciśnięciu przycisku można zacząć od początku.
Program jest przyjemną grą zręcznościową na zabicie czasu – i zarazem źródłem frustracji. Wiele radości sprawia jednak porównywanie swoich wyników z wynikami przyjaciół. Aby można było korzystać z urządzenia sterującego na ekranie również mobilnie, istnieje m ożliwość dołączeni a baterii. Należy jednak zawsze uważać na to, aby po skończeniu gry odłączyć zasilanie, ponieważ płyta Arduino z ok. 70mA zużywa sporo energii.
Źródło tekstowe projektu jest bardzo o bszerne, na tym etapie nie jest dokładnie ob­jaśnione. Wykorzystane są jedynie funkcje z już Państwu znanego Game En gine 1. Mogą Państwo więc zobaczyć, jak dużo już można zrealizować za pomocą jedynie tego środka. Ws pomniany na początku podręcznik online jeszcze bardziej pozwala zagłębić się w programowanie gier. Przedstawia on kolejne gry, podaje przykłady, uwzględnione są również dodatkowe Game-Engine; powiększa się w ten sposób zasób rodzajów i możliwości gier. Oprócz Super Mario i Point-n-Click-Adventure uczą się Państwo równi eż najważniejszych elementó w gry i mogą na koniec zaprogramo­wać własną grę od podstaw.
ZAŁĄCZNIK
Krótkie podsumowanie najważniejszych poleceń Game Engine 1.
drawPixel byte x, byte y
(Punkt 1) byte x2, byte y2
(x-,y-Position),
byte width, byte height, const
niesienie zawartości wyświet­lacza, wyszukiwanie wpro-
rysuje punkt na określonej
punktami (x1, y1) i (x2, y2)
pozycji (x, y)
y z długością (width) i szero- kością (height)
TRUE, gdy podana w nawiasach
sterowanie czasowe procesów
joypad.isPress
byte button
przekazuje informację zwrotną
Ł, W GÓRĘ, A, B)
beep
-
wywołuje sygnał dźwiękowy (Ton)
liczba klatek (Frame s) zost aje narysowana; wykorzystanie:
ed
TRUE, gdy przycisk jest przy­trzymany (PRAWO, LEWO, W
Loading...