Kolizje ciąg dalszy
14, sierpień 2007
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; 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 &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?
Ja vs kolizje runda pierwsza
12, sierpień 2007
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.
Moduł okna V1.1 gotowy
7, sierpień 2007
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
Timer v1.1
5, sierpień 2007
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
Moduły v1.0 skończone
4, sierpień 2007
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
).
Do końca wakacji muszę przeczytać 3 lektury – iliadę, króla edypa i mitologię – póki co czytam pierwszy tom perełek programowania gier…