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 dostosowane 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.
1.1 | Nakładka wyświetlacza
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 zapoznanie 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 osiem przycisków, które pozwalają na korzystanie z szerok iego zakresu gier i funkcji.
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 techniczne:
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.
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 oprogramowanie 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 to 10223-0.
Aby zainstalować Bibliotekę, muszą Państwo po prostu uruchomić skompresowane 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 przedstawionego 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ć róż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ę faktycznemu 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ładować 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 umieszczona na ekranie. Wymagane jest jedynie kilka wierszy, aby aktywować odpowiednie 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 piksele 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 engine.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 engine.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ę poruszał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ą naszkicować obie paletki na wyświetlaczu. Obok drawField() istnieje jeszcze funkcja dodatkowa, 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().
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 przypadku 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 poruszać się w przeciwnym kierunku. W obu zapytaniach
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 koniecznego zakresu wartości.
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 Tiny.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ładowaniu 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 wykorzystać całą długość ekranu. Sterowanie jest proste, potrzebny jest do niego zazwyczaj 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 przytrzymywany 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 objaś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 zaprogramować własną grę od podstaw.
ZAŁĄCZNIK
Krótkie podsumowanie najważniejszych poleceń Game Engine 1.