Oto kolejny artykuł na temat szablonu we frameworku "raylib". Mija pierwsza połowa czerwca, a w chwili obecnej jestem na czwartym etapie polegającym na poszerzeniu sterowania o klawiaturę i ekran dotykowy. Jakie obecne są efekty? Zapraszam do czytania!

Przyszedł czerwiec, kończy się rok akademicki, a praca ciągle nie daje spokoju. Tak było cztery miesiące temu, trzy miesiące temu, dwa miesiące temu i w maju. Tak jest w chwili obecnej. Szablon w "raylib" ciągle wymaga wielu godzin badań i wysiłków, żeby wyrównać to do poziomu zerowego, bo to będzie jedynie szkielet dla następnych gier którymi nie mogę zająć się do tej pory. Nie jest już tak najgorzej. Ostatnie dni prac nad trybem pełnoekranowym i skalowalnym renderowaniem spowodowały pewien awans możliwości szablonu i powoli kształtuje się to na aplikację desktopową. Interesuje Was dalszy ciag?

Zaciekawieni obecnym postępem nad tym samym? Etap drugi mam już cały za sobą. Co to oznacza w praktyce oprócz przejścia do następnego? Zajmowanie się poprawkami, ale przede wszystkim, wsparciem sterowania dla kilku urządzeń, czyli klawiatura i dotyk. "raylib" jeszcze przez wiele długich dni będzie przeze mnie otwierany, a ja dopiero w czerwcu będę przechodził do sprawy przenoszenia aplikacji na wyższy poziom. Detale zostawiam w środku.

Przyszedł czas na definitywne podsumowanie efektywności pisania artykułów. Najpierw najważniejsza wiadomość: opłaciła się ta harówka! Z całą stanowczością. Wyświetlenia skoczyły do góry, parę subskrypcji również. Facebook też się odezwał i powiadomił o dodatkowych zainteresowanych, zatem jestem bliżej niż dalej! Artykuły, tak jak sądziłem, są w postaci fundamentów na których położyłem wszystko to, co istnieje już znacznie dłużej. Ponieważ ich nie było, miałem jedynie sam "dach", który był praktycznie niezauważalny. Sięgajcie do środka w celu ujrzenia dokładnych badań i analiz.

Minęło już sporo czasu więc postanowiłem napisać Wam o postępach nad (zbyt) długo oczekiwanym szablonem i nad (zbyt) długo oczekiwaną grą, która miała nadejść miesiąc temu. W języku C idzie mi już znacznie lepiej, "raylib" jak był wcześniej genialny, tak jest do teraz (zwłaszcza jak wyszedł update 3.0), zatem jakoś idzie. Tylko jak konkretnie? Czy są jakieś z mojej strony spekulacje odnośnie daty wydania? Zapraszam!

Udało się! Tak skonany osiągnąłem wyznaczony przez siebie próg i piszę do Was po raz ostatni dzień po dniu. Jason ma na swojej stronie 250 artykułów!!! Nadszedł czas, aby porządnie odpocząć od ich ciągłego pisania. Nie znaczy to oczywiście, że usiądę sobie na tyłku czekając do końca roku na gwiazdkę z nieba. Zapraszam do artykułu w sprawie szczegółów.

Poznamy teraz kolejny zapis dający wygodę przy wywoływaniu konkretnej funkcji danego obiektu dla każdej instancji przebywającej w kolekcji. Gdzie tam zwykła pętla "for" czy nawet pętla rozszerzona. Nawet wyrażenie lambda ukazane całkiem niedawno można jeszcze bardziej skrócić. Niech Wam posłuży referencja do metody!

Myślę, że na ostatnim wątku zakończymy temat biblioteki "Swing" i zerkniemy znowu na obsługę wyjątków. To nie będzie kolejna pogadanka o wyjątkach, a tylko o pewnej metodzie wykorzystywanej nałogowo przez wiele osób w programach, filmach czy poradnikach. Widzicie to tyle razy. Za każdym razem gdy ktoś na szybko pisze "try-catch", zwykle osadza to samo wyrażenie po nazwie instancji klasy "Exception". Bez przerwy w przeważającej większości przypadków ludzie zalecą Wam to samo. W książkach wielkimi wołami również jest o tym wspomnienie, a jednak można nie zdawać sobie sprawy co ta metoda robi takiego ekscytującego, że wszyscy to stosują. "printStackTrace". Co to takiego? Zapraszam do środka.

Druga część o metodzie "paintComponent". Na zakończenie dzisiejszej porcji wiedzy, postanowiłem powrócić do tego samego tematu omawianego wcześniej jednak przybliżę Wam teraz możliwości biblioteki "Swing" i klasy "JPanel" prezentując więcej funkcji rysujących. Konstrukcję podstawową już znacie, zatem nie muszę już dzielić tych tematów na dwie części. Pokażę Wam jak przy pomocy rzutowania instancji typu "Graphics" na "Graphics2D", możecie sobie poszerzyć pole manewrów!

Wznawiam temat serializacji danych w języku Java (radzę zobaczyć poprzednią część jeśli nie wiecie o czym mowa). Wyobraźmy sobie taką sytuację. Mamy naszą klasę, implementujemy interfejs "Serializable" i każemy programowi zapisać wszystkie dane składowe...oprócz jednej! Takiej małej zmiennej, która powinna być pomijana ze względu na wartość unikalną dla konkretnego uruchomienia aplikacji. O Boże! Czy to znaczy, że z powodu takiej błahostki, serializacja obiektów idzie w drzazgi i trzeba od razu przerzucać cały system przechowywania do pliku tekstowego? Niekoniecznie! Twórcy języka i o takiej sytuacji pomyśleli więc mogę ją teraz zaprezentować. Poznajcie kolejne słowo kluczowe związane z wykluczaniem danych składowych do zapisu, "transient"!

Odczepimy się od technicznych rzeczy, a zajmiemy się artystycznymi. Być może nie wiecie, że "Swing" oferuje również komponent klasy "JPanel", który może posłużyć Wam do rysowania dowolnych kształtów geometrycznych na ekranie. Czy to linia, czy to kółko, okrąg, prostokąt, obrazek pobrany z pliku. Dzięki poznaniu metody "paintComponent", to wszystko staje się możliwe! Trzeba jednak obchodzić się z nią inaczej niż przy całej reszcie innych funkcji. Dalszy ciąg zostawiam w środku.

Idziemy dalej z biblioteką "Swing" i językiem Java! Podczas omawiania poprzednich tematów padło już wielokrotnie hasło "BorderLayout". I jak zdążyłem wspomnieć, jest to jeden z "układów" dla rozmieszczania mniejszych komponentów na "ramce" o nazwie "JFrame". Ale co to jest "układ"? Co to jest "BorderLayout"? I jakie mogą być jeszcze inne układy jeśli twierdzę, że ten przytoczony to tylko jeden z nich? Niech zawartość artykułu rozwieje te wątpliwości raz na zawsze!

Ponownie zmierzamy w stronę dylematu "podpinania" zdarzeń do przycisków w Javie przy pomocy biblioteki "Swing". Mamy klasy wewnętrzne, a teraz wyrażenie lambda przybliży nas do celu. Gdy zobaczycie jak je zastosować do przycisku, nie będę musiał się nawet pytać która z metod wydaje się Wam przyjemniejsza. Bez ceregieli. Obsługa zdarzeń za pomocą wyrażenia lambda!

Przystępujemy do następnego artykułu po zapowiedzianej dłuższej przerwie. Przyznajcie szczerze, niezbyt piękny był ten zapis z klasami, prawda? Tak trzeba było pisać zanim pojawiła się Java 8. OK, teraz przystąpimy do bardziej nowoczesnego sformułowania. Ono istnieje już od sześciu lat więc o nim też mogliście już nieraz usłyszeć. Przedstawiam Państwu "wyrażenie lambda" (ang. "lambda expression")!

I to już będzie ostatnia część na dzisiejszy dzień, zatem powracamy do tego samego pytania: "jak zaprogramować zdarzenie do przycisku tak, aby po jego naciśnięciu coś się wydarzyło?". Dłuży się to niemiłosiernie, natomiast trzeba aż tak wielu wyjaśnień, aby korzystać z tego świadomie i rozsądnie. Znamy już klasy wewnętrzne, ich budowę, dowiemy się teraz jak mogą nam pomóc w rozwiązaniu problemu. Samo tworzenie zdarzeń w Javie określane jest jako "obsługa zdarzeń" tak jak to mieliśmy z wyjątkami, co nie? Przechodzimy do tematu.

Nie możemy dalej iść z biblioteką "Swing" dopóki nie zapoznamy się ze sposobami "podpinania" zdarzeń. Istnieją dwie metody: starsza istniejąca od Javy 5.0 (2004) i nowsza od Javy 8 (2014). Pokażę Wam obie i podzielę to na dwie części. Najpierw struktura sama w sobie, a potem jak ją wykorzystać i "podstawić" do przycisku, aby coś się wydarzyło po jego naciśnięciu. Oto pierwsza metoda: klasa wewnętrzna. Szczegóły w środku!

Kontynuujemy pisanie o bibliotece "Swing" języka Java. Aby w ogóle robić coś porządnego, trzeba najpierw zapoznać się ze wszystkimi podstawowymi komponentami jakie oferuje "Swing". Jeśli zainteresowałem Was tym tematem mającym za sobą ponad 20 lat (i co z tego?), przechodzimy od razu do konkretów. To będzie na razie sama lista z wyjaśnieniami co do czego służy i jak prezentuje się w oknie.

4 maja, zaczynamy kolejną serię! Będę miał przyjemność pisać Wam na temat biblioteki "Swing" należącej do Javy, która pozwala na tworzenie graficznych interfejsów użytkownika. Nie będzie o "JavaFX"! Wiem o jej istnieniu, ale mam swoje powody aby o niej teraz nie pisać. Jak utworzyć pierwsze okno i dlaczego w Swing zapraszam do artykułu.

Ostatnia wypowiedź na dzisiaj (dotycząca Javy oczywiście) sięgać będzie tematu formatowania danych w postaci łańcuchów znaków, czyli typu "String". Nie chodzi tylko o konwertowanie liczb na łańcuchy, ale także ich ładne prezentowanie. Na przykład wypisanie dużej liczby z odstępami, czy też wyświetlenie wyników danej kolumny z tabelki o tej samej szerokości pola, aby kolejne dane się "nie rozjeżdżały". Prezentowana tutaj metoda która nam to umożliwi to "String.format". Zapraszam już po raz ostatni w dniu Konstytucji 3 Maja!

Dosłownie na chwilę odejdziemy od Javy, bo pragnę zabrać głos w sprawie rozwoju własnej działalności. Mamy początek maja i chyba wreszcie coś zaczyna się poprawiać w zakresie widoczności strony na Google. Kursy online otrzymują od dłuższego czasu większe zainteresowanie na YouTube! Zostało mi już bardzo niewiele, aby dojść do końca i zrównać się z pewną konkurencją. Zobaczymy wówczas czy będę miał argument by się wściec...