Login    
  • Kontakt

LOGIC DEVBLOG

Sekrety programowania


  • Gra izometryczna cz.11 – animacje

    18 grudnia 2012 by Adam Sobociński

    Lekcja ta, powstała na prośbę kilku moich czytelników. Przedstawie w niej sposób, ładowania, przechowywania i wyświetlania klatek animacji. Oczywiście jest to jeden ze sposobów, ale starałem się opracować system, który będzie prosty do zrozumienia i jego dalszej rozbudowy.
    Pewnie nie możecie, już się doczekać, aby zobaczyć efekt tej lekcji, więc zabieram się za omawianie.

    Animacje jako takie, omówiłem w lekcji 2, dobrze jest sobie ją przypomnieć.

    Jak już wiesz, animacja składa się z dwóch lub więcej klatek, tego samego obiektu, ale lekko zmodyfikowanych. Na potrzeby tej lekcji przygotowałem dwie animacje. Animacja gracza i animacja jednego z bloku na planszy.

    Czytaj więcej »

    Kategorie: python Tagi: animacje, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.10 – przesuwanie, przenoszenie i zmiana stanów

    09 grudnia 2012 by Adam Sobociński

    Umiemy już przesuwać gracza i wykrywać kolizje. Czas na coś bardziej efektownego, czyli na interakcje gracza z otoczeniem. Pokaże, w jaki sposób zaimplementować, przesuwanie bloków, zabieranie i umieszczanie w nowym miejscu, oraz zmianę stanu bloku, na przykład wszelkie przełączniki, otwieranie i zamykanie drzwi itp.

    Przygotowałem nieco zmodyfikowaną tablicę MAP, w której już nie mamy 2 elementów 1 i 2, ale jest ich aż 5.
    Numer, to identyfikatory bloków. Dzięki nim, program wie, jaki kolor klocka ustawić (albo inne elementy).
    Oczywiście, taka mapa jest bardzo prymitywna, bo nie zawiera żadnych dodatkowych informacji, ale na potrzeby tej lekcji wystarczy. W grze, dobrze mieć tablicę obiektów, gdzie obiektem, jest każde pole mapy.
    W poprzedniej lekcji, pokazałem już jak to zrobić, przy wykorzystaniu klasy Tile. W tej lekcji, nadal będziemy z niej korzystać, tylko tym razem nieco rozbudowanej. Czytaj więcej »

    Kategorie: python Tagi: interakcje, mapa izometryczna, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.9 – ruch, kolizje i głębia

    22 listopada 2012 by Adam Sobociński

    W tej lekcji zajmiemy się wykrywaniem kolizji na mapie izometrycznej. Istotną sprawą jest kolejność rysowania elementów świata, aby postać gracza przesłaniała je, lub chowała się za nie, na przykład za drzewem, zależnie od tego w jakim miejscu się znajduje. Wiele osób o to pyta, więc postaram się w miarę prosty i dokładny sposób to opisać.

    Na poniższym rysunki widać różnice, przy wyświetlaniu zwykłym z lewej, i po zastosowaniu sortowania z prawej. Jak można zauważyć, z lewej nasz czerwony klocek, robi co chce, włażąc pod ścianę. Jak nauczyć go posłuszeństwa, wyjaśnię w dalszej części.

    Czytaj więcej »

    Kategorie: python Tagi: kolizje, mapa izometryczna, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.8 – wyświetlanie tekstów w OpenGL

    30 maja 2012 by Adam Sobociński

    Ważną czynnością w grach, jest wyświetlanie tekstu. O ile sama biblioteka pygame posiada funkcję, do jego wyświetlania w trybie graficznym, tyle w OpenGL musimy to zrobić sami. Musimy więc sami zadbać o jego obsługę.
    Są conajmniej trzy metody wyświetlania tekstu w OpenGL. Generowanie z bitmapy, generowanie z pliku TTF i użycie biblioteki GLUT.  Każda ma swoje wady i zalety, opiszę każdą metodę, a Ty wybierz taką która Ci odpowiada.

    Najprostrzy sposób, to użycie biblioteki GLUT. Aby skorzystać z tej biblioteki, dodaj import

    from OpenGL.GLUT import *

    i ją zaninicjuj poleceniem glutInit(). Polecenie to, wstaw do funkcji opengl_init(). Teraz napiszemy funkcję draw_text(), która wyświetla tekst. Czytaj więcej »

    Kategorie: python Tagi: fonty, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.7 – mysz w świecie izometrii

    28 kwietnia 2012 by Adam Sobociński

    Witam Cię, w kolejnej lekcji. Jak wspomniałem poprzednio, dziś zajmiemy się obsługą myszki w świecie izometrycznym. Jest to istotna sprawa, ponieważ musimy wykorzystać pewne przekształcenia. Będą to przekształcenia pozycji ekranowej na izometryczną i izometryczną na ekranową. Jak widzisz na rysunku, współrzędne ekranu inaczej się układają niż współrzędne izometryczne. W związku z tym musimy je przekonwertować.

    Czytaj więcej »

    Kategorie: python Tagi: mapa izometryczna, mysz, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.6 – rysowanie mapy izometrycznej

    21 kwietnia 2012 by Adam Sobociński

    Po dłuższej przerwie, udostępniam obiecaną lekcje. W poprzednich lekcjach, pokazywałem jak obsługiwać duszki, klawiaturę, jak rysować świat 2D i jak poruszać w nim obiektami. Dla jednych była to ciekawa przygoda, dla innych być może przypomnienie tego co już znali. Celem było wprowadzenie do właściwego tematu tego kursu, jakim jest tworzenie świata w rzucie izometrycznym. W tej lekcji, pokaże jak tworzyć kafle i jak budować z nich świat.

    Rzut izometryczny, dodaje efekt trójwymiarowości. Świat nie jest pokazany z góry, ale jest lekko obrócony, a dokładnie o 45 stopni.

    Czytaj więcej »

    Kategorie: python Tagi: mapa izometryczna, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.5 – rysowanie mapy 2D

    22 listopada 2011 by Adam Sobociński

    Zgodnie z obietnicą, dziś zajmiemy się tworzeniem mapy 2D, za pomocą kafli (ang. tiles).  Jest ona zbudowana z wielu obrazków, ułożonych jeden obok drugiego, tak jak układa się płytki.

    Oś Y ekranu, jest w przeciwną stronę, niż uczyłeś się na matematyce. (0,0) to lewy górny róg ekranu. Ułożone w rzędach i kolumnach płytki, tworzą mapę. Mapa oczywiście nie jest zapisywana w postaci płytek, jest w postaci jedno lub dwuwymiarowej tablicy, która informuje jaka płytka znajduję się na danej pozycji. Taka mapa łatwa jest do zapisania na dysku i późniejszego odczytania. Dla uproszczenia, zdefiniujemy mapę, w tablicy. Czytaj więcej »

    Kategorie: python Tagi: opengl, pygame, tworzenie gier
  • Gra izometryczna cz.4 – Pygame, OpenGL i duszki

    13 listopada 2011 by Adam Sobociński

    Dzisiejsze gry wymagają wsparcia sprzętowego grafiki, aby odciążyć procesor. Dzięki temu, gry są szybsze i ładniejsze. Czy ciekawsze to nie koniecznie, wszystko zależy od pomysłu i realizacji.
    Sprzętowe wsparcie graficzne umożliwiają DirectX i OpenGL. Pierwsze jest tylko na Windows, a OpenGL działa na wszystkich graficznych systemach operacyjnych, dlatego skupimy się jedynie na tej bibliotece graficznej.

    Pygame, sam w sobie nie posiada obsługi OpenGL, ale można go prosto połączyć z PyOpenGL, zakładam, że masz już go zainstalowany, jak zalecałem w pierwszej części jeśli nie, to zrób to teraz.

    Na początek garść teorii.  Musisz nauczyć się umieszczać obiekty 2D w przestrzeni 3D.
    OpenGL operuje na wielokątach (ang. polygon). Można rysować pojedyńcze piksle, ale operacje takie są bardzo powolne i nie nadają się do tworzenie gier. Aby umieścić obrazek na ekranie, trzeba utworzyć w przestrzeni 3D, czworokąt i nałożyć na niego teksturę, w postaci naszego obrazka. Do utworzenia czworokątu, potrzebujemy współrzędnych czterech wierzchołków.

    Czytaj więcej »

    Kategorie: python Tagi: duszki, opengl, pygame, tworzenie gier
  • Gra izometryczna cz.3 – Kolizje

    09 listopada 2011 by Adam Sobociński

    Wiemy już jak tworzyć duszki i poruszać nimi. Ale dało się zauważyć, że duszkom coś brakuje. Kolizji.
    Czym są kolizje? Jeśli próbujesz wyjść z pokoju przez ścianę, to nastąpi kolizja ze ścianą, która nie wypuści cie z niego. Jeśli kolizji by nie było, jak w naszym ostatnim przykładzie, to można by było przechodzić przez ściany jak duchy.
    Kiedy więc zachodzi kolizja? Gdy dwa obiekty w grze, zachodzą na siebie, czyli jakaś część duszka, znajduje się w tym samym miejscu ekranu, co inny duszek.

    Metody wykrywania kolizji
    Jest wiele sposobów wykrywania kolizji. Najdokładniejszym jest sprawdzanie każdego piksela, duszka z innym duszkiem. Metoda ta ma jednak wady. Jest bardzo czasochłonna. W grze, gdzie wszystko dynamicznie się zmienia, nie jest konieczna aż taka dokładność.

    Kolizja okręgów
    Najprostszym sposobem jest przybliżenie obiektu do okręgu.

    Czytaj więcej »

    Kategorie: python Tagi: pygame, tworzenie gier
  • Gra izometryczna cz.2 – Duszki

    06 listopada 2011 by Adam Sobociński

    W poprzedniej części, nauczyliśmy się tworzyć okno, obsługiwać pętle zdarzeń i wyświetlać obrazki na ekranie. W tej części nauczymy się tworzyć duszki i poruszać nimi.

    Co to są duszki
    Duszki (ang. sprites), to małe ruchome obrazki wyświetlane na ekranie. Są nimi np, postacie, potworki wszelkie ruchome elementy gry. Duszki mogą być statyczne, które nie zmieniają kształtu ani wyglądu i animowane. Najpierw zajmiemy się duszkami statycznymi.

    Tworzymy duszka
    Tworzymy więc jakiś obrazek, którym będziemy sterować w formacie PNG, oczywiście bez tła, albo pobierz gotowy, który przygotowałem.

    Czytaj więcej »

    Kategorie: python Tagi: pygame, tworzenie gier

« Starsze posty

Zapisz się na newsletter

Dołącz do grona czytelników, aby otrzymać dostęp do najnowszych informacji





Donate / Wsparcie bloga



Najnowsze wpisy

  • Gra izometryczna cz.11 – animacje
  • Gra izometryczna cz.10 – przesuwanie, przenoszenie i zmiana stanów
  • Gra izometryczna cz.9 – ruch, kolizje i głębia
  • Gra izometryczna cz.8 – wyświetlanie tekstów w OpenGL
  • Gra izometryczna cz.7 – mysz w świecie izometrii
  • Gra izometryczna cz.6 – rysowanie mapy izometrycznej
  • Gra izometryczna cz.5 – rysowanie mapy 2D
  • Gra izometryczna cz.4 – Pygame, OpenGL i duszki
  • Gra izometryczna cz.3 – Kolizje
  • Gra izometryczna cz.2 – Duszki
  • Gra izometryczna cz.1 – Wstęp do pygame
  • Witam na blogu!


Kategorie

  • news
  • python


Ostatnie komentarze

  • Gra izometryczna cz.11 – animacje
    Udało mi się zrobić pełne sterowanie...
  • Gra izometryczna cz.10 – przesuwanie, przenoszenie i zmiana stanów
    Fajnie, to już działa, ale faktycznie...
  • Gra izometryczna cz.9 – ruch, kolizje i głębia
    Widoczna część na ekranie ma jakieś...
  • Gra izometryczna cz.3 – Kolizje
    Thanks for info, i'll try to...
  • Gra izometryczna cz.8 – wyświetlanie tekstów w OpenGL
    Hey There. I found your blog...


Archiwum

  • Grudzień 2012
  • Listopad 2012
  • Maj 2012
  • Kwiecień 2012
  • Listopad 2011


Inne

  • Zarejestruj się
  • Zaloguj się



© 2011. Wszystkie prawa zastrzeżone. Entries (RSS) and Comments (RSS)