wtorek, 14 sierpnia 2007

Kolizje ciąg dalszy

Tak jak wspominałem, kolizje napisałem od nowa (a właściwie to skopiowałem z posta regedita z Warsztatu). Jednak nie o tym będę pisał, pokażę różnicę między dwoma sposobami sprawdzania
kolizji pomiędzy dwoma prostokątami.

Mój stary sposób:
bool KolizjaPilkaLewaPaletka()
{
if(det(paletka.rozmiar.right, paletka.rozmiar.top, paletka.rozmiar.right, paletka.rozmiar.bottom, pilka.rozmiar.left, pilka.rozmiar.top) == 0)
{
if(det(paletka.rozmiar.right, paletka.rozmiar.top, paletka.rozmiar.right, paletka.rozmiar.bottom, pilka.rozmiar.left, pilka.rozmiar.bottom) == 0)
{
if(min(paletka.rozmiar.right, paletka.rozmiar.right) <= pilka.rozmiar.left &&amp;amp;amp; pilka.rozmiar.left <= max(paletka.rozmiar.right, paletka.rozmiar.right)) { if(min(paletka.rozmiar.top, paletka.rozmiar.bottom) <= pilka.rozmiar.top && pilka.rozmiar.top <= max(paletka.rozmiar.top, paletka.rozmiar.bottom) || min(paletka.rozmiar.top, paletka.rozmiar.bottom) <= pilka.rozmiar.bottom && pilka.rozmiar.bottom <= max(paletka.rozmiar.top, paletka.rozmiar.bottom)) { return true; } } } } }



I to jest kod tylko dla kolizji lewa paletka - piłka. Niezłe co? Na początku sprawdza
współliniowość lewego boku piłki i prawego boku paletki, potem sprawdza czy punkty leżą na odcinkach itd... Podsumowując, wycudowane w chuj.

A to kod sposobu regedita (funkcja przyjmujaca 2 prostokaty dla ktorych ma byc sprawdzana kolizja):

inline bool OverlapRect(const RECT &a_rect1, const RECT &amp;amp;a_rect2)
{
return (a_rect1.left < a_rect2.right) &&
(a_rect1.right > a_rect2.left) &&
(a_rect1.top < a_rect2.bottom) &&
(a_rect1.bottom > a_rect2.top);
}

Jest różnica, prawda?

niedziela, 12 sierpnia 2007

Ja vs kolizje runda pierwsza

Po kilkunastu nieskończonych projektach postanowiłem wziąć się za coś prostego, co w końcu mógłym skończyć. Wybór padł na klon ponga. Do tej pory napisałem wyświetlanie paletek, pilki, kolizje piłki ze ścianami oraz paletkami.  I w tych ostatnich jest problem, chyba będę je musiał napisać od nowa, innym sposobem. Gra będzie prawdopodobnie open source więc jeśli ją skończe to dam link do ściągnięcia.

Kilka dni temu odbyło się też spotkanie programistów z teamu - aktualnie jest nas 3 i jedna osoba 'w fazie testów'. Planujemy pierwszą betę silnika na koniec sierpnia - zapewne zaliczymy mały poślizg ale cóż, tak bywa.

wtorek, 7 sierpnia 2007

Moduł okna V1.1 gotowy

Skodzone dzisiaj:

- okno V1.1 POL + dokumentacja
- okno V1.1 ANG

Jak widać do skończenia modułu okna zostało jeszcze przepisanie dokumentacji na język angielski. Dlaczego piszę dwie wersje? Ano właśnie, jedna (po polsku) na potrzeby tworzonego silnika (nie ja to niestety ustaliłem, siła wyższa) a druga (po angielsku) dla siebie.

W najbliższym czasie do napisania:
- moduł czcionek V1.1 POL + dokumentacja
- moduł czcionek V1.1 ANG + dokumentacja

I na tym skończy się (póki co) kodzenie modułów do silnika - zrobie sobie małą przerwe (zwłaszcza, że reszta teamu sie opierdala ;)) a zacznie pisanie jakiegoś malutkiego własnego projektu - może będzie to pseudosnake, może coś innego równie prostego, zobaczymy. Jutro zedytuje tego posta i wrzuce link do ściągnięcia modułu.

Do zobaczenia!

// edycja 8 sierpnia 2007: zgodnie z zapowiedzią przetłumaczyłem (kulawą angielszczyzną, trochę na szybko) moduł i dokumentację okna. Do ściągnięcia STĄD

niedziela, 5 sierpnia 2007

Timer v1.1

Jeszcze wczoraj udało mi się skończyć pisanie nowej wersji timera - oznaczonej 1.1. Dostępna w dwóch wersjach językowych - polskim oraz angielskim. Część kodu (metoda obliczania klatek na sekunde) jest z ogólnodostępnych tutoriali z internetu.

Krótki changelog (z wersji 1.0 na 1.1):

- poprawienie obliczania fps
- napisanie metod dostepowych
- mala reorganizacja kodu
- zmiana nazw metod i klasy
- calkowite przerobienie kodu na jezyk angielski + napisanie dokumentacji po angielsku
- czytelniejsze komentarze

Timer możesz pobrać stąd

Może się komuś przyda, prośby skargi zażalenia kierować na gamer.cpp[at]gmail[dot]com

sobota, 4 sierpnia 2007

Moduły v1.0 skończone

Pare dni temu skończyłem 3 moduly do silniczka - timer, czcionki i obsluge okna. Wyszło jak wyszło ale już jestem w trakcie pisania nowych wersji (moze nie beda duzo lepsze ale na pewno mniej rozczarowujace :P). Możesz ściągnąć moduły stąd: POBIERZ

Do końca wakacji muszę przeczytać 3 lektury - iliadę, króla edypa i mitologię - póki co czytam pierwszy tom perełek programowania gier...

Następnym razem postaram się dać nowe wersje modułów.