ALLEGRO PIERWSZA GRA: WYŚCIG

Slides:



Advertisements
Podobne prezentacje
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Advertisements

STRUKTURY DANYCH.
Introduction to SystemC
Usługi sieciowe Wykład 9 VPN
Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Analiza wywołania i przebiegu przerwań w systemie Linux
1 1 Przykład 1/3 main() { int i,j,k,m; /* i-m : $s0-$s3 */... i = mult(j,k);... m = mult(i,i);... } int mult (int mcand, int mlier){ int product; product.
STL - Standard Template Library Autor: Błażej Chodarcewicz rainbow.mimuw.edu.pl/~bc189380/STL/
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
SKALA 2 :1 1 : 1 1 : 2 OBRAZ DWUKROTNIE POWIĘKSZONY 8 cm 6 cm
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Mirosław Ochodek Sponsorzy: JFace Jak jeszcze szybciej tworzyć interfejsy? ECESIS Eclipse Community Education Project An.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =
Filip Andrzejewski Remigiusz Chiluta
1 Building Integration System - Training Internal | ST-IST/PRM1 | 02/2008 | © Robert Bosch GmbH All rights reserved, also regarding any disposal,
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
REKURENCJA.
XNA Szybki start Kurs ITA-106 (Grafika i multimedia) – Moduł 1
PRZELICZNIK DŁUGOŚCI w programie NetBeans IDE autorzy: Michał Mrozek i Marcin Mrugała 2012.
Krzysztof Manuszewski
Asynchroniczność w Windows 8 Jakub Binkowski. O mnie Jakub Binkowski Lead.NET Developer.
Programowanie strukturalne i obiektowe
db4o Kacper Skory Marcin Talarek
Czyli jak zrobić prezentację komputerową?
Jak korzystać z Windows Live Movie Maker ?
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
Przeglądanie inOrder function BSTinorder(BSTNode root) if root NOT NULL BSTinorder(root.left) Print(root) BSTinorder(root.right) 2, 4, 6, 8, 9, 10, 12,
Podstawy programowania
Cechy dobrej i udanej strony www Net etykieta. Ergonomia stron WWW.
ALGORYTM.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Ruchome obrazki Autor: Weronika Nastawska. Jak włączyć Edytor postaci Na pulpicie znajduje się skrót do Edytora postaci. Kliknij na niego dwukrotnie,
Instalacja serwera WWW na komputerze lokalnym
HTML Podstawy języka hipertekstowego Damian Urbańczyk.
XHTML Odsyłacze tekstowe i graficzne Damian Urbańczyk.
Schemat 4 pytań ZBADAJ POSZKODOWANEGO Kliknij na ramkę Copyright by © LifeGuard 2001.
Optimization Michał Drobot Technical Art Director Reality Pump.
Bazy danych w systemie SimCallCenter Krótkie omówienie wyboru baz danych stosowanych w CallCenter, integracja z zewnętrznymi bazami danych Czas 15 min.
Inteligentne oświetlenie Systemy z automatyczną regulacją poziomu natężenia oświetlenia i detekcją obecności.
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
KINECT – czyli z czym to się je?. Damian Zawada
SKALA MAPY Skala – stosunek odległości na mapie do odpowiadającej jej odległości w terenie. Skala najczęściej wyrażona jest w postaci ułamka 1:S, np. 1:10.
Pliki elementowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików elementowych. Pliki takie zawierają informację zakodowaną
To popularny portal internetowe. Pisząc blog informujemy internautów o swoich zainteresowaniach np. o modzie lub gotowaniu. Niestety czasem zapominamy.
Budowa programu #include /*instrukcje preprocesora */ #include int main(void) { /*podstawowa funkcja programu */ int a=1; /*deklaracja i inicjalizacja.
Narzędzie wspomagające projektowanie aplikacji Proficy iFIX
ZŁUDZENIA OPTYCZNE Większe, mniejsze? Jest czy nie ma? Wygięte! ..?
IBM Tivoli Storage Manager Strojenie A Presentation by Paweł Krawczyk June 8, 2011.
HTML cz.3 Tabele cd. oraz ramki
Autorzy:Ania Szczubełek Kasia Sul
Wykład 6 Programowanie systemowe w Linux: Wątki i ich synchronizacja
Teksty prymarne (original texts) to teksty autentyczne, nie są przeznaczone dla celów dydaktycznych; teksty adaptowane (simplified/adapted texts)są przystosowane.
w/g Grzegorz Gadomskiego
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Przykładowy algorytm geometryczny (geometria płaska)
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Formaty zdjęć.
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
Algorytm testujący czy liczba jest liczbą pierwszą czy złożoną
Silverlight 4 dla Windows Phone 7
1.
Department | 1/11/2013 | © Robert Bosch GmbH All rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution,
1 struktura #include struct complex {double real; double img; } alfa; struct complex beta={2.0,2.0}, delta; struct complex multi (struct complex x, struct.
Pliki tekstowe – odczyt i zapis Zajęcia 11. Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: // writing on a text.
obsługa wyświetlacza graficznego
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Zapis prezentacji:

ALLEGRO PIERWSZA GRA: WYŚCIG

Co trzeba zrobić? Wyświetlanie: postaci i mapy Poruszanie dla dwóch postaci Kolizje ze ścianami Koniec gry -wygraną gracza I lub II

BITMAPA Tworzenie bitmapy: BITMAP * obrazek = NULL; obrazek = create_bitmap(256,256); Wczytywanie obrazka: obrazek = load_bmp( „obraz.bmp", default_palette ); 3.Sprawdzanie czy obrazek się wczytał: if (!obrazek) { }

Wyświetlanie bitmap 1.Wyświetlanie Bitmapy blit(obrazek,screen,x1,y1, x,y, szerokość, wysokość); 2.Wyświetlanie Bitmapy bez tła (255,0,255): masked_blit(obrazek,screen,x1,y1, x,y, szerokość, wysokość); screen obrazek y1 x1 x y szerokość Wysokość

Dlaczego ekran miga? labirynt Postaci I i II

Podwójny bufor labirynt Postaci I i II bufor

Podwójny bufor 1.Tworzymy bitmapę o nazwie np. bufor i rozdzielczości identycznej z rozdzielczością naszego okna. 2.Wszystkie obiekty (planszę, postaci) kopiujemy na buforze. 3.Bufor kopiujemy na ekran(screen).

Początek 1.Stwórzcie folder „Wyscigi”. 2.Plik -> nowy ->projekt... -> Multi Media -> allegro application(dll). 3.Skopiójcie z FTP i wklejcie do „Wyscigi” „labirynt.bmp”.

1.Stworzyć bitmapę dla buforu i labiryntu #include <allegro.h> void init(); void deinit(); int main() { init(); while (!key[KEY_ESC]) { } deinit(); return 0; END_OF_MAIN() void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ void deinit() { clear_keybuf(); /* add other deinitializations here */ BITMAP * bufor = NULL; bufor = create_bitmap( 800, 600 ); BITMAP * lab = NULL; lab = create_bitmap( 800, 600 ); lab = load_bmp( "lab.bmp", default_palette ); destroy_bitmap( bufor ); destroy_bitmap( lab ); 800,600

Wyświetlanie postaci oraz labiryntu #include <allegro.h> void init(); void deinit(); int main() { init(); BITMAP * bufor = NULL; bufor = create_bitmap( 800, 600 ); BITMAP * lab = NULL; lab = create_bitmap( 800, 600 ); lab = load_bmp( "lab.bmp", default_palette ); while (!key[KEY_ESC]) { } destroy_bitmap( bufor ); destroy_bitmap( lab ); deinit(); return 0; END_OF_MAIN() void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ void deinit() { clear_keybuf(); /* add other deinitializations here */ int x=50, y=45; int x1=750, y1=555; blit(lab,bufor,0,0,0,0,800,600); circlefill(bufor, x, y, 20, makecol(255,0,0)); circlefill(bufor, x1, y1, 20, makecol(0,0,255)); blit( bufor, screen, 0, 0, 0, 0, 800, 600 );

Poruszanie postaciami #include <allegro.h> void init(); void deinit(); int main() { init(); BITMAP * bufor = NULL; bufor = create_bitmap( 800, 600 ); BITMAP * lab = NULL; lab = create_bitmap( 800, 600 ); lab = load_bmp( "lab.bmp", default_palette ); int x=50, y=45; int x1=750, y1=555; while (!key[KEY_ESC]) { //wyświetlanie blit(lab,bufor,0,0,0,0,800,600); circlefill(bufor, x, y, 20, makecol(255,0,0)); circlefill(bufor, x1, y1, 20, makecol(0,0,255)); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } destroy_bitmap( bufor ); destroy_bitmap( lab ); deinit(); return 0; END_OF_MAIN() void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ void deinit() { clear_keybuf(); /* add other deinitializations here */ if ( key [KEY_D] )x++; if ( key [KEY_S] )y++; if ( key [KEY_A] )x--; if ( key [KEY_W] )y--; if ( key [KEY_RIGHT] )x1++; if ( key [KEY_DOWN] )y1++; if ( key [KEY_LEFT] )x1--; if ( key [KEY_UP] )y1--;

Kolizje w grze getpixel(screen, x, y) - funkcja zwracająca kolor pixela na bitmapie (screen) o pozycji x,y. Np. if (getpixel(screen, 20, 100)==makecol(0,0,0)) { }

Kolizje w grze

Kolizje i wygrane if( getpixel(lab,x-20,y)==0 || getpixel(lab,x+20,y)==0 || getpixel(lab,x,y-20)==0 || getpixel(lab,x,y+20)==0) { x=50; y=45; } if( getpixel(lab,x1-20,y1)==0 || getpixel(lab,x1+20,y1)==0 || getpixel(lab,x1,y1-20)==0 || getpixel(lab,x1,y1+20)==0) x1=750; y1=555; #include <allegro.h> void init(); void deinit(); int main() { init(); BITMAP * bufor = NULL; bufor = create_bitmap( 800, 600 ); BITMAP * lab = NULL; lab = create_bitmap( 800, 600 ); lab = load_bmp( "lab.bmp", default_palette ); int x=50, y=45; int x1=750, y1=555; while (!key[KEY_ESC]) { if ( key [KEY_D] )x++; if ( key [KEY_S] )y++; if ( key [KEY_A] )x--; if ( key [KEY_W] )y--; if ( key [KEY_RIGHT] )x1++; if ( key [KEY_DOWN] )y1++; if ( key [KEY_LEFT] )x1--; if ( key [KEY_UP] )y1--; //wyświetlanie blit(lab,bufor,0,0,0,0,800,600); circlefill(bufor, x, y, 20, makecol(255,0,0)); circlefill(bufor, x1, y1, 20, makecol(0,0,255)); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } destroy_bitmap( bufor ); destroy_bitmap( lab ); deinit(); return 0; END_OF_MAIN() void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ void deinit() { clear_keybuf(); /* add other deinitializations here */ if( getpixel(lab,x,y)==makecol(255,255,0)) { allegro_message("WYGRYWA CZERWONY"); exit(-1); } if( getpixel(lab,x1,y1)==makecol(255,255,0)) allegro_message("WYGRYWA NIEBIESKI");

allegro_message(„”) oraz exit(-1); Allegro_message(”Text”);- Funkcja wyświetlająca okienko z tekstem oraz przyciskiem „OK”. exit(-1); - Funkcja wyłączająca program w allegro.

ZADANIA Zaprogramuj by postać nie była kołem, a bitmapom oraz zrób by postać się poruszała (animacje). Zrób ładniejsze zakończenia gry. Zrób kilka poziomów licznik zwycięstw graczy oraz automatyczne przechodzenie do następnego poziomu.