AMOS Pro 2.0 w praktyce Na przykładzie klonu gry Pong Jacek Kremski na spotkanie: AMIGA - początki kultury w wersji cyfrowej, spotkanie III Rzeszów 15.11.2014.

Slides:



Advertisements
Podobne prezentacje
Opracowanie: Maria W ą sik. Pierwsze komputery budowano w celu rozwi ą zywania konkretnych problemów. Gdy pojawiało si ę nowe zadanie, nale ż ało przebudowa.
Advertisements

Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
Proces doboru próby. Badana populacja – (zbiorowość generalna, populacja generalna) ogół rzeczywistych jednostek, o których chcemy uzyskać informacje.
Kurs unifikacyjno-szkoleniowy Raszyn SOBOTA, Otwarcie kursu Sprawy organizacyjne Podsumowanie sezonu 2013 / 2014, wręczenie legitymacji sędziów.
Równowaga chemiczna - odwracalność reakcji chemicznych
„Jak pomóc uczniom się uczyć i czerpać z tego radość?” opracowała: Krystyna Turska.
OBOWIĄZKI INFORMACYJNE BENEFICJENTA Zintegrowane Inwestycje Terytorialne Aglomeracji Wałbrzyskiej.
Plan Czym się zajmiemy: 1.Bilans przepływów międzygałęziowych 2.Model Leontiefa.
NIE TAKI KOMPUTER STRASZNY JAK GO MALUJĄ PODSTAWY OBSŁUGI KOMPUTERA.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
Teoria gry organizacyjnej Każdy człowiek wciąż jest uczestnikiem wielu różnych gier. Teoria gier zajmuje się wyborami podejmowanymi przez ludzi w warunkach.
PRACA Z APLIKACJAMI SYSTEM PRZEMIESZCZANIA oraz NADZORU WYROBÓW AKCYZOWYCH EMCS PL 1.
Wyszukiwanie informacji w Internecie. Czym jest wyszukiwarka? INTERNET ZASOBY ZAINDEKSOWANE PRZEZ WYSZUKIWARKI Wyszukiwarka to mechanizm, który za pomocą.
ELEMENTY ZESTAWU KOMPUTEROWEGO
Zasady tworzenia prezentacji multimedialnych Autor: Switek Marian.
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania 1 Metody optymalizacji - Energetyka 2015/2016 Metody programowania liniowego.
POZYCJA – USYTUOWANIE SĘDZIEGO NA POLU GRY. Marek Kowalczyk Przewodniczący Centralnej Komisji Szkoleniowej KS PZPN Luty 2005.
© Matematyczne modelowanie procesów biotechnologicznych - laboratorium, Studium Magisterskie Wydział Chemiczny Politechniki Wrocławskiej, Kierunek Biotechnologia,
Excel 2007 dla średniozaawansowanych zajęcia z dnia
ZASTOSOWANIE FUNKCJI WYKŁADNICZEJ I LOGARYTMICZNEJ DO OPISU RUCHU DRGAJĄCEGO Agnieszka Wlocka Agnieszka Szota.
Niepewności pomiarowe. Pomiary fizyczne. Pomiar fizyczny polega na porównywaniu wielkości mierzonej z przyjętym wzorcem, czyli jednostką. Rodzaje pomiarów.
Wyrażenia Algebraiczne Bibliografia Znak 1Znak 2 Znak 3 Znak 4 Znak 5 Znak 6 Znak 7 Znak 8 Znak 9 Znak 10 Znak 11.
Poczta elektroniczna – e- mail Gmail zakładanie konta. Wysyłanie wiadomości.
Literary Reference Center Przewodnik
EWALUACJA PROJEKTU WSPÓŁFINANSOWANEGO ZE ŚRODKÓW UNII EUROPEJSKIE J „Wyrównywanie dysproporcji w dostępie do przedszkoli dzieci z terenów wiejskich, w.
RZUTY WOLNE Szkolenie kandydatów na sędziów KURS 2011 Wydział Sędziowski Łódzki Związek Piłki Nożnej Opracował: Tomasz Radkiewicz.
Co potrafię w przyjaźni z komputerem?.  Z jakich elementów się składa? Z jakich elementów się składa?  Do czego służy? Do czego służy?  Jakie programy.
EWALUACJA JAKO ISTOTNY ELEMENT PROJEKTÓW SYSTEMOWYCH Sonia Rzeczkowska.
Zmienne losowe Zmienne losowe oznacza się dużymi literami alfabetu łacińskiego, na przykład X, Y, Z. Natomiast wartości jakie one przyjmują odpowiednio.
MOTYWACJA. Słowo motywacja składa się z dwóch części: Motyw i Akcja. Aby podjąć działanie (akcję), trzeba mieć do tego odpowiednie motywy. Łaciński źródłosłów.
Pomiar przyspieszenia ziemskiego za pomocą piłeczki tenisowej.
BYĆ PRZEDSIĘBIORCZYM - nauka przez praktykę Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
OPTYMALNY CEL I PODSTAWY ROZWOJU SZKOŁY. PRZEDE WSZYSTKIM DZISIEJSZA SZKOŁA POWINNA PRZYGOTOWYWAĆ DO ŻYCIA W DRUGIEJ POŁOWIE XXI WIEKU.
E-sądy po polsku IV EDYCJA Badanie i ranking stron internetowych sądów okręgowych i apelacyjnych oraz Sądu Najwyższego i Trybunału Konstytucyjnego 3 kwietnia.
Analiza tendencji centralnej „Człowiek – najlepsza inwestycja”
Równowaga rynkowa w doskonałej konkurencji w krótkim okresie czasu Równowaga rynkowa to jest stan, kiedy przy danej cenie podaż jest równa popytowi. p.
Jak to się robi ? Instrukcja wypełnienia dzienniczka treningowego, na podstawie danych z GARMIN-a Forerunner 305.
Porównywarki cen leków w Polsce i na świecie. Porównywarki w Polsce.
W KRAINIE TRAPEZÓW. W "Szkole Myślenia" stawiamy na umiejętność rozumowania, zadawania pytań badawczych, rozwiązywania problemów oraz wykorzystania wiedzy.
Algorytmy Informatyka Zakres rozszerzony
Standardy de facto zapisu georeferencji map o postaci rastrowej definicja georeferencji standard „World File” standard GeoTIFF.
Organizacja, przepisy i procedury Na przykładzie Śląskiego OW NFZ Dr n. med. Z Klosa.
RAPORT Z BADAŃ opartych na analizie wyników testów kompetencyjnych przeprowadzonych wśród uczestników szkoleń w związku z realizacją.
KOSZTY W UJĘCIU ZARZĄDCZYM. POJĘCIE KOSZTU Koszt stanowi wyrażone w pieniądzu celowe zużycie majątku trwałego i obrotowego, usług obcych, nakładów pracy.
KOMBINATORYKA.
Rodzaje grafiki komputerowej. Lekcja 5. Spis treści Rodzaje grafiki komputerowej. Format graficzny, piksel, raster. Modele barwne zapisu plików graficznych.
Microsoft PowerPoint. Metodyka „dobrej” prezentacji.
Menu Jednomiany Wyrażenia algebraiczne -definicja Mnożenie i dzielenie sum algebraicznych przez jednomian Mnożenie sum algebraicznych Wzory skróconego.
Pole magnetyczne Magnes trwały – ma dwa bieguny - biegun północny N i biegun południowy S.                                                                                                                                                                     
Instalacja nienadzorowana windows xp Jakub klafta.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Optymalna wielkość produkcji przedsiębiorstwa działającego w doskonałej konkurencji (analiza krótkookresowa) Przypomnijmy założenia modelu doskonałej.
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
Podstawowe prace w jednym z najlepszych programów graficznych.
Definiowanie i planowanie zadań typu P 1.  Planowanie zadań typu P  Zadania typu P to zadania unikalne służące zwykle dokonaniu jednorazowej, konkretnej.
1 Definiowanie i planowanie zadań budżetowych typu B.
Renata Maciaszczyk Kamila Kutarba. Teoria gier a ekonomia: problem duopolu  Dupol- stan w którym dwaj producenci kontrolują łącznie cały rynek jakiegoś.
Schematy blokowe.
Liczby pierwsze.
Ping – pong dla jednego gracza
Języki programowania.
Laboratorium 1 – obsługa wejść i wyjść
Podstawy informatyki Zygfryd Głowacz.
Prawa ruchu ośrodków ciągłych c. d.
Program na dziś Wprowadzenie Logika prezentacji i artykułu
Autor: Magdalena Linowiecka
Zapis prezentacji:

AMOS Pro 2.0 w praktyce Na przykładzie klonu gry Pong Jacek Kremski na spotkanie: AMIGA - początki kultury w wersji cyfrowej, spotkanie III Rzeszów

AMOS Pro 2.0 – ogólny opis Rok powstania: 1992 Autor: firma Europress Software Wymagania sprzętowe: komputer klasy Amiga Pochodzenie: dialekt języka BASIC Typ: interpreter / kompilator Przeznaczenie: programy multimedialne, gry Licencja: uwolniony przez autora

AMOS Pro 2.0 – zawartość pakietu dysk: AMOSPro_System dysk: AMOSPro_Accessories dysk: AMOSPro_Compiler dysk: AMOSPro_Extras dysk: AMOSPro_Tutorial i Examples dysk: AMOSPro_Productivity 1 i 2

AMOS Pro 2.0 – sposób uruchomienia z dyskietek – obsługuje do 4 stacji dysków z dysku twardego

AMOS Pro 2.0 – wygląd środowiska IDE

AMOS Pro 2.0 – możliwości IDE Zapisywanie, odczytywanie programów Funkcje: wytnij, kopiuj, wklej, schowek Funkcje zapisywania bloku do pliku, wstawiania bloku z pliku Sprawdzanie kodu progr. pod kątem błędów Podgląd bieżący zużycia pamięci Uruchomienie programu jednym klawiszem Automatyczne porządkowanie wizualne kodu

AMOS Pro 2.0 – możliwości IDE c.d. Obsługa dodatków tzw. Extensions Edytory dźwięków i grafiki Edytor banków zasobów Kompilator z wieloma opcjami Tworzenie makrodefinicji Konfigurowalne skróty klawiszowe Help dostępny bezpośrednio z menu

AMOS Pro 2.0 – możliwości IDE c.d. Wielopoziomowe menu Dostępny tryb debuggera i monitorowania programu krok po kroku Zaawansowane opcje wyszukiwania i zamiany ciągów znaków

AMOS Pro 2.0 – dlaczego AMOS Działa na każdej Amidze (jak i programy w nim napisane) Ma bogatą liczbę gotowych funkcji – ponad 200 Jest darmowy Jest łatwy w nauce – nie wymaga znajomości budowy Amigi (w przeciwieństwie do Assemblera) Pozwala na szybkie tworzenie złożonych aplikacji

AMOS Pro 2.0 – dlaczego AMOS Pozwala programować układy specjalizowane Amigi Obsługuje grafikę, animację, dźwięk, myszkę, joysticki, porty we/wy Ma wbudowaną obsługę procedur i częściowo funkcji Pozwala skompilować kod do postaci programu wykonywalnego Ma wsparcie w postaci literatury w języku polskim

AMOS Pro 2.0 – wady Słabe wsparcie dla kości AGA/RTG Słaba współpraca z bibliotekami systemowymi Brak wykorzystania specjalistycznych instrukcji procesorów M68k > Programy wykonują się wolniej niż napisane w językach klasy Assembler lub C Duża ilość instrukcji sprawia, że trzeba często zaglądać do dokumentacji Programy skompilowane są stosunkowo duże objętościowo Alternatywa – AmiBlitz 3

AMOS Pro 2.0 – przykładowa gra Dithells Wonderland

AMOS Pro 2.0 – literatura książka: „Programować może każdy Amos Professional w praktyce” K. Prusik, Z. Sypniewski (zawiera 2 dyski) książka: „Amos Professional” - Paweł Chadziński magazyny: Magazyn Amiga – kursy cykliczne forum:

Pong – podstawowe informacje Rok wydania: 1972 Producent i wydawca: ATARI – Allan Alcorn Rodzaj: gra sportowa Grafika – 2D, 2 kolory (czarny i biały) Dźwięk – tak Cechy szczególne: pierwsza gra produkowana na szeroką skalę, która odniosła sukces komercyjny

Pong – podstawowe informacje

AmiPong – podstawowe informacje

rok powstania: 2014 autor / wydawca: Jacek Kremski licencja: freeware z udostępnionym kodem źródłowym czas poświęcony na projekt: około 6 godzin język programowania: AmosPro 2.0 objętość kodu źródłowego: około 25 KB – 1 dysk wymagania systemowe: dowolna Amiga dźwięk: tak obsługa dwóch graczy: tak AI lub inny gracz sposób sterowania: joystick Storna domowa projektu: brak, więcej informacji tutaj: amosie

AmiPong – cel powstania pokazanie możliwości AMOS Pro 2.0 własna satysfakcja i weryfikacja umiejętności programistycznych zainteresowanie większego grona odbiorców tematyką programowania promocja platformy Amiga

AmiPong – użyte zagadnienia podstawowe działania matematyczne – dodawanie i odejmowanie podstawowa wiedza z fizyki – wektory, ruch, odbicia podstawowa wiedza z logiki – operatory I, ORAZ, LUB, NIE podstawowa wiedza z rysowania i geometrii – kwadraty, prostokąty, linie, punkty, układ współrzędnych

AmiPong – użyte zagadnienia wiedza o algorytmice system wyświetlania obrazu RGB – obsługa kolorów podstawowe instrukcje AMOSa wiedza dotycząca zmiennych, stałych, instrukcji warunkowych, iteracji, pętli system wykrywania kolizji – piłka/paletka, piłka/ścianka system ruchu paletek – ograniczenie ruchu aby paletka nie wychodziła po za ekran sztuczna inteligencja – ruch drugiej paletki, jak zrobić aby komputer czasem przegrywał obsługa joysticków – gracza 1 i gracza 2 przechowywanie danych w bankach danych – sample IFF podział kodu programu na segmenty

AmiPong – analiza kodu Podział kodu na segmenty: 1. Zdefiniowanie zmiennych przechowujących dane o położeniu paletek, piłki, punktach itp. 2. Przygotowanie i narysowanie paletek oraz piłeczki wedle parametrów zadanych zmiennymi z punktu 1 oraz umieszczenie ich w banku grafiki a) przygotowanie ekranu o odpowiedniej rozdzielczości i głębi kolorów b) narysowanie odpowiednimi kolorami paletki i piłeczki c) pobranie obrazów do banku d) zamknięcie ekranu 3. Wczytanie wcześniej przygotowanego banku sampli IFF. 4. Wyświetlenie ekranu powitalnego i poczekanie na naciśnięcie dowolnego klawisza w celu startu gry. 5. Przygotowanie ekranu rozgrywki, dobranie barw, narysowanie linii poziomych i pionowych, aktualnej punktacji. 6. Tutaj zaczyna się główna pętla programu wykonywana tak długo, aż nie zostanie naciśnięty na klawiaturze przycisk ESC który powoduje wyjście z gry do systemu operacyjnego. 7. Rysujemy paletki i piłkę na ekranie. 8. Sprawdzamy czy trzeba odbić piłeczkę – czy dotyka ona góry, dołu ekranu bądź którejś z paletek. 9. Jeśli następuje odbicie – odgrywamy dźwięk odbicia i zmieniamy zwrot wektora RX i/lub RY. 10. Jeśli następuje opuszczenie przez piłkę ekranu – odgrywamy dźwięk, przyznajemy 1 punkt więcej właściwemu graczowi.

AmiPong – analiza kodu c.d. 11. Jeśli któryś z graczy otrzyma 10 punktów – zatrzymujemy grę, wyświetlamy napis „Winner”, czekamy na naciśnięcie dowolnego klawisza oraz zerujemy ilość punktów, przywracamy początkową szybkość piłki wracając do etykiety inicjacji rozgrywki. 12. Jeśli gracz nr 2 nie nacisnął joysticka do góry bądź dołu trwa tryb gracz przeciwko komputerowi jeśli natomiast nacisnął tryb AI wyłącza się 13. Każde odbicie piłki jest zliczane – po 15 odbiciach następuje przyspieszenie ruchu piłki oraz zliczanie odbić jest zerowane. 14. Jeśli aktywny jest tryb AI następuje obliczanie czy paletka gracza nr 2 powinna przesunąć się w górę czy dół a może pozostać nieruchomo. 15. Aby AI nie grało zbyt idealnie zasymulujemy chwilę „zastanawiania” się AI – niech ruch paletki AI nie będzie stały tylko będzie losowy od 1 do 4 jednostek. Jeśli wylosuje się liczba 1 to paletka przesunie się wolniej a 4 najszybciej. 16. Jeśli nastąpiło naciśniecie joysticka nr 1 w górę sprawdzamy, czy możemy się w górę jeszcze poruszyć paletką nr 1 jeśli tak dokonujemy aktualizacji pozycji Y1 paletki nr Analogicznie dzieje się z paletką nr Odbywa się sprawdzenie dla ruchu w dół paletki nr 1 i nr Jeśli piłeczka wyszła za ekran serwujemy ją ze środka stołu – ustawiając właściwie X3,Y3 i wartość wektorów RX i RY oraz BALL_SPEED. 20. Następuje powrót do początku pętli głównej programu czyli do punktu 6.

Matematyka – układ współrzędnych

AMOS Pro – układ współrzędnych

AmiPong – etapy rysowania ekranu tytułowego

AmiPong – etapy rysowania ekranu tytułowego - Bar 20,30 To 30,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 60,40 To 70,60

AmiPong – etapy rysowania ekranu tytułowego - Bar 20,50 To 70,60

AmiPong – etapy rysowania ekranu tytułowego - Bar 90,30 To 140,40

AmiPong – etapy rysowania ekranu tytułowego - Bar 90,80 To 140,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 90,30 To 100,80

AmiPong – etapy rysowania ekranu tytułowego - Bar 130,30 To 140,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 160,30 To 210,40

AmiPong – etapy rysowania ekranu tytułowego - Bar 160,30 To 170,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 200,30 To 210,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 230,30 To 280,40

AmiPong – etapy rysowania ekranu tytułowego - Bar 230,80 To 280,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 230,30 To 240,90

AmiPong – etapy rysowania ekranu tytułowego - Bar 270,60 To 280,80

AmiPong – etapy rysowania ekranu tytułowego - Bar 260,60 To 270,70

AmiPong – etapy rysowania ekranu tytułowego – Ink 0 Ink 0 – zmiana koloru na kolor nr 0 – jest to kolor czarny co wynika z naszej palety

AmiPong – etapy rysowania ekranu tytułowego - Bar 60,30 To 70,40

AmiPong – etapy rysowania ekranu tytułowego - Bar 60,50 To 70,60

AmiPong – etapy rysowania ekranu tytułowego – efekt końcowy

AmiPong – etapy rysowania ekranu tytułowego – efekt końcowy c.d.

dodanie pozostałych napisów odbywa się za pomocą instrukcji Centre At (,Y)+”[napis]”),gdzie Y stanowi nr wiersza w którym zostanie umiejscowiony i wycentrowany napis a w miejsce [napis] wstawiamy ciąg tekstowy

AmiPong – etapy rysowania stołu stół składa się z 3 elementów: 1) górnej linii poprowadzonej od współrzędnej X = 0 do 319, Y=0 2) dolnej linii poprowadzonej od współrzędnej X = 0 do 319, Y=254 3) przerywanej linii na środku

AmiPong – etapy rysowania stołu Do narysowania stołu użyjemy instrukcji rysującej odcinek Draw jej parametrami są współrzędne dwóch punktów (X1, Y1)(X2, Y2) – początku i końca odcinka więc całość instrukcji będzie wyglądała następująco: Draw 0,0 to 319,0 spowoduje narysowanie odcinka górnej linii – krawędzi boiska analogicznie zadziała instrukcja Draw 0,0 to 319,254 rysująca linię dolnej krawędzi boiska

AmiPong – etapy rysowania stołu

Przerywana linia na środku boiska For I=0 to 240 Step 20 Draw 155,I to 155,I+10 Next I aby skrócić kod posłużono się tzw. pętlą For/Next w pętli ustalamy wartość początkową i końcową ew. skok wszystko to co znajduje się niżej słowa kluczowego For ale przed Next zostaje powtórzone określoną liczbę razy po wywołaniu instrukcji Next wartość zmiennej (w naszym przypadku I) zmienia się o 1 lub o wartość skoku (step) w naszym przypadku 20. Kolejne wartości I będą się zmieniały następująco: 0,20,40,60,…,200,220,240 Generować to będzie automatycznie ciąg instrukcji Draw:

AmiPong – etapy rysowania stołu Draw 155,0 To 155,10 Draw 155,20 To 155,30 Draw 155,40 To 155,50 Draw 155,60 To 155,70 Draw 155,80 To 155,90 Draw 155,100 To 155,110 Draw 155,120 To 155,130 Draw 155,140 To 155,150 Draw 155,160 To 155,170 Draw 155,180 To 155,190 Draw 155,200 To 155,210 Draw 155,220 To 155,230 Draw 155,240 To 155,250

AmiPong – etapy rysowania stołu które to instrukcje narysują krótkie odcinki na stole tworzące linię przerywaną

AmiPong – etapy rysowania stołu Pozostaje już tylko wypisać wynik startowy „0 : 0” poznaną wcześniej instrukcją Centre At(,15)+"0:0” Nie zapominając o zmianie koloru czcionki na mrugający instrukcją Pen 3

AmiPong – etapy rysowania stołu oraz nanieść nasze paletki i piłkę Sprite 1,X1,Y1,1 Sprite 2,X2,Y2,1 Sprite 3,X3,Y3,2 Rysujemy poszczególne sprajty – 1,2,3 nanosząc je w miejsce wskazane przez odpowiednie współrzędne. Sprajt nr 2 korzysta z tego samego obrazu co sprajt nr 1 więc ta druga „1” to nie pomyłka. Pytanie: dlaczego zamiast stałych wartości są litery?

AmiPong – dźwięki Dla ułatwienia zbiór dźwięków został przygotowany wcześniej i umieszczony w banku dźwięków. Użyte zostały 3 próbki: a)dźwięk odbicia piłeczki od paletki (próbka dźwiękowa nr 1) b)dźwięk odbicia piłeczki od krawędzi (próbka dźwiękowa nr 2) c)dźwięk (gwizdek) opuszczenia boiska przez piłkę (próbka dźwiękowa nr 3) Instrukcją powodującą odegranie dźwięku jest instrukcja Sam Play [Nr] gdzie zamiast [Nr] podajemy nr dźwięku jaki posiada dany dźwięk w banku próbek (sampli) czyli np. do odegrania dźwięku nr 1 wywołamy instrukcję Sam Play 1

AmiPong – obsługa joysticka AMOS Pro umożliwia łatwą obsługę myszki i obydwu joysticków. Aby sprawdzić czy dany stan joysticka został osiągnięty sprawdzamy wartość poszczególnych funkcji: Jup([nr_portu])=True (joy w górę) Jdown([nr_portu])=True (joy w dół) gdzie [nr_portu] = 0 dla joysticka znajdującego się w porcie myszki i 1 dla znajdującego się w porcie joysticka.

AmiPong – zakończenie działania programu Do zakończenia działania programu służy instrukcja End która nie przyjmuje żadnych parametrów

AmiPong – poruszanie paletek W AMOS Pro zapis warunku (jeżeli… to) będzie wyglądał następująco: If [warunek] Then [akcja] lub If [warunek] [akcja 1] [akcja 2] [akcja …] [ostatnia akcja] End If lub If [warunek] [akcja 1] [akcja 2] [akcja …] Else [inna akcja 1] [inna akcja 2] [inna akcja …] [inna ostatnia akcja] End If gdzie [warunek] to matematyczne wyrażenie logiczne a [akcja] instrukcja lub ciąg instrukcji która zostanie tylko wtedy wykonana jeśli dany warunek jest spełniony. po Else natomiast zostaną wykonane instrukcje jeśli warunek będzie niespełniony U nas będzie to wyrażenie: Jeśli joystick nr 1 jest naciśnięty do góry oraz paletka nie znajduję się jeszcze w najwyższej pozycji wykonaj ruch paletki do góry (zmniejszając wartość współrzędnej Y1 o wartość PADDLE_SPEED) Analogicznie wygląda sprawa poruszania w dół.

AmiPong – poruszanie paletek Wyrażenia logiczne w AMOS Pro możemy tworzyć w następujący sposób – możemy: a)używać liczb rzeczywistych b)używać nazw zmiennych i stałych c)używać operatorów I (and) LUB (or) zaprzeczenia NIE (not) d)używać wyników instrukcji e)używać operatorów = >= <=

AmiPong – wyrażenia logiczne Przykłady: If P1=10 Then End Jeśli zmienna P1 jest równa 10 zakończ program.

AmiPong – wyrażenia logiczne Przykłady: If P1=10 and P2=0 Then Print „Przewaliłeś do 0!” Jeśli zmienna P1 (ilość punktów gracza nr 1) wynosi 10 a drugiego gracza P2 nic (0) wtedy wyświetl komunikat „Przewaliłeś do 0!”

AmiPong – wyrażenia logiczne Przykłady: If AI=True and P2=„10” Print „Zwyciężył gracz komputerowy”. Jeśli gramy w trybie P2C i gracz komputerowy osiągnął wynik 10 punktów wyświetl komunikat jak powyżej.

AmiPong – poruszanie paletek Aby poruszyć paletką nr 1 sprawdzany jest fakt, czy joystick nr 0 jest naciśnięty do góry lub do dołu. Po wykryciu kierunku naciśnięcia współrzędna Y1 jest zwiększona (ruch do dołu) lub zmniejszona (ruch do góry) o wartość zmiennej PADDLE_SPEED (za jej pomocą regulujemy szybkość z jaką może poruszać się paletka nr 1 – w naszym przypadku = 2 czyli 2 piksele na jeden cykl). Zwiększenie lub zmniejszenie wartości Y1 uzależnione jest też od tego czy paletka nr 1 nie osiągnęła krańcowej pozycji na górze lub dole – w takim przypadku dalszy ruch jest niemożliwy do wykonania. Górną i dolną krawędź określają zdefiniowane wcześniej w kodzie programu stałe: MN_Y_POS i MX_Y_POS (minimal_y_position i maximal_y_position).

AmiPong – poruszanie paletek W AMOS Pro zapis warunku będzie wyglądał następująco: If Jup(1)=True and Y1>MN_Y_POS Then Y1=Y1- PADDLE_SPEED If Jdown(1)=True and Y1<MX_Y_POS Then Y1=Y1+PADDLE_SPEED

AmiPong – sztuczna inteligencja Do sterowania sztuczną inteligencją wykorzystamy poznaną wcześniej instrukcję warunkową Przeanalizujmy następującą sytuację:

AmiPong – sztuczna inteligencja c.d.

AmiPong – generator liczb pseudolosowych Jest to zestaw dwóch funkcji. Pierwsza służy do tego aby uruchomić wewnętrzny generator liczb i uzależnić otrzymywane wartości od stanów zegara czasu rzeczywistego Randomize Timer które zwracają wartość z przedziału 0..Max, gdzie max to liczba całkowita, większa od 0 określają

AmiPong – generator liczb pseudolosowych c.d. Druga instrukcja Rnd([liczba]) zwraca losową wartość z przedziału 0..liczba, gdzie liczba to liczba całkowita, większa od 0. np. Rnd(5) może wylosować nam wartości – 0,1,2,3,4,5

AmiPong – sztuczna inteligencja Dokonajmy analizy kodu: If AI=True and Y2>MN_Y_POS and Y3<Y2 Y2=Y2-(1+Rnd(3)) If Y2<MN_Y_POS Y2=MN_Y_POS End If

AmiPong – sztuczna inteligencja Sprawdzamy czy warunek jest prawdziwy – trzeba spełnić wszystkie 3 warunki jednocześnie 1.tryb gry to P2C. 2.pozycja Y2 paletki gracza 2 jest większa niż minimalna dopuszczalna pozycja Y dla paletek 3.pozycja Y3 piłeczki jest mniejsza niż pozycja Y2 paletki gracza 2 (piłeczka jest wyżej niż paletka)

AmiPong – sztuczna inteligencja Wtedy poruszymy paletką gracza komputerowego w górę o wylosowaną ilość jednostek – od 1 do 4. Upewnimy się jeszcze, że nie wyjechaliśmy paletką za bardzo do góry – jeśli tak to ustalamy, że pozycją Y2 dla paletki gracza komputerowego będzie minimalna dopuszczalna dla paletek pozycja MN_Y_POS zdefiniowana wcześniej jako stała w kodzie programu. Analogicznie postępujemy ze sprawdzeniem konieczności ruchu w dół paletki gracza komputerowego.

AmiPong – odbicie piłki od paletek Przeanalizujmy sytuację odbicia się piłeczki:

AmiPong – odbicie piłki od paletek Aby sprawdzić, czy faktycznie piłeczka znajduje się w pozycji opisanej powyżej należy sprawdzić wartość jaką zwraca instrukcja warunkowa: If X3>=X2-BALL_SIZE and X3 =Y2-BALL_SIZE and Y3<=Y2+PADDLE_H RX=RX*(-1) X3=X3+RX Sam Play 1 SPEEDUP_COUNTER=SPEEDUP_COUNTER+1 End If

AmiPong – odbicie piłki od linii boiska Aby sprawdzić czy piłka odbiła się od górnej linii boiska sprawdzamy warunek: If Y3<=MN_Y_POS RY=BALL_SPEED Sam Play 2 End If

AmiPong – odbicie piłki od linii boiska Jeżeli pozycja Y3 piłki jest mniejsza lub równa minimalnej dopuszczalnej pozycji Y wtedy: 1.Wektor przesunięcia piłki góra/dół RY ma znak dodatni i jest równy wartości szybkości piłki. 2.Odegraj dźwięk odbicia od stołu. Analogicznie dla odbicia na dole ekranu.

AmiPong – zdobycie punktu Aby sprawdzić czy piłka przekroczyła linię ekranu z prawej strony (gracz nr 2 nie odbił piłki) trzeba sprawdzić warunek If X3>X2+PADDLE_W P1=P1+1 SPEEDUP_COUNTER=0 X3=280 Y3=46+Rnd(200) RX=-BALL_SPEED RY=BALL_SPEED Sam Play 3 End If

AmiPong – zdobycie punktu Jeżeli współrzędna położenia piłeczki X3 jest większa niż X2 powiększona o grubość paletki uznajemy, że piłka wyszła za ekran z prawej strony i wykonujemy szereg kroków: 1. Zwiększamy o 1 punkt stan punktów gracza Zerujemy licznik poprawnych odbić aby nie dopuścić do przypadkowego przyspieszenia piłeczki. 3. Serwujemy piłeczkę ustawiając ją na środku ekranu względem osi X. 4. Losujemy pozycję góra/dół dla piłeczki skąd rozpocznie się serwowanie. 5. Zmieniamy kierunek poruszania się piłki na osi X (lewo/prawo). 6. Odgrywamy dźwięk opuszczenia stołu przez piłkę. Analogicznie przeprowadzamy sprawdzenie dla opuszczenia piłki z lewej strony ekranu.

AmiPong – zmiana szybkości piłki Aby sprawdzić czy należy przyspieszyć ruch piłki potrzeba sprawdzić warunek: If SPEEDUP_COUNTER>=SPEEDUP_STEP BALL_SPEED=BALL_SPEED+1 SPEEDUP_COUNTER=0 End If

AmiPong – zmiana szybkości piłki Jeżeli licznik prawidłowych odbić przekroczy zadaną wcześniej wartość to zwiększamy szybkość poruszania się piłki o 1 oraz zerujemy licznik prawidłowych odbić.

AmiPong – pobieranie elementów graficznych z obrazu do banku graf.

AmiPong – ponowna rozgrywka Aby sprawdzić, czy należy zakończyć rozgrywkę należy sprawdzić stan punktów obydwóch graczy. Jeśli dowolny z nich ma 10 punktów wtedy: If P1=10 Centre At(,15)+"Player 1 WINS!" Wait Key Centre At(,15)+" " Goto INIT_GAME End If Zatrzymujemy grę wpierw wyświetlając komunikat o zwycięstwie właściwego gracza i czekamy na naciśnięcie dowolnego klawisze po czym udajemy się do etykiety INIT_GAME aby ustawić odpowiednio wszystkie zmienne – wyzerować punkty, zaserwować piłkę, dobrać odpowiednio szybkość poruszania piłki i paletek itd.

AmiPong – wnioski końcowe jakieś pytania? która część kodu i dlaczego stwarza problem w interpretacji? ważniejsza od języka jest algorytmika jest jeszcze dużo do zrobienia w kwestii fizyki gry czym ta gra różni się od oryginału zrobienie nawet klonu prostej gry wiele uczy można jeszcze bardziej zoptymalizować kod program będzie nadal rozwijany zachęcam do własnych eksperymentów z kodem kontakt do autora: grę można pobrać z: