W porządku. Odejdźmy na moment od samego programowania, języka C i wszystkich dotychczasowo wymienionych trików. Wróćmy w końcu do poprzednio omawianego wątku jak zacząć tworzyć gry. Chcę podzielić się następnymi wskazówkami jednak zaczynając od punktu zero. Od momentu, kiedy ktoś zainteresowany jest w tym kompletnie zielony i nawet nie wie od czego zacząć. Może uda mi się coś na to zaradzić...

Mamy 1 kwietnia! Nieuchronnie zbliża się pewna chwila a właściwie dwie, które dotyczą mojej osoby. Pierwsza z nich będzie pojutrze, zatem spodziewajcie się wtedy wyjątkowo szerokiego artykułu. Przechodząc do tematu właściwego, chciałem napisać o pewnej bardzo ciekawej funkcji umożliwiającej wyświetlanie zawartości pliku w programie, a także możliwość zapisywania wprowadzonej treści do nowego pliku oraz skopiowania zawartości do innego pliku. I to wszystko za pomocą prostego kodu! Co prawda, to nie jest najbardziej optymalne rozwiązanie, natomiast jest dużo prostsze i można je opanować w ciągu kilku godzin. O ile korzystamy z języka C, mamy szansę wykonać tak zwane "przekierowanie strumienia".

Coraz mniej czasu w ciągu dnia więc postanowiłem wziąć na klatę podobny temat, zbliżony do poprzedniego (poprzednio mówiłem o przesunięciach bitowych). Mają ze sobą wiele wspólnego (przesunięcia to jeden z typów) więc postanowiłem "postawić" te wątki obok siebie. Przed Wami, następna opowieść o alternatywnych zapisach. W roli głównej, operatory bitowe, ale nie te, które już dobrze znacie.

Następny zalążek historii programowania. Opowiem dzisiaj o tym, jak w latach .80 trzeba było często stosować inny zapis do wykonywania działań arytmetycznych na liczbach całkowitych. Kolejny temat i kolejny termin: "przesunięcie bitowe".

Ostatnia wzmianka o szablonie do moich gier nad którym pracuję była na początku marca. Nadszedł czas, abym był z Wami szczery. Szablonu w "HaxeFlixel" nie będzie! Zmieniłem narzędzie na "raylib"! Z języka Haxe na język C!!!

Znowu sięgnę do historii i do języka C. Ponad dwa tygodnie temu poświęciłem artykuł na temat funkcji "printf" i jej specyfikatorom formatu. Ze względu na mocno ograniczony czas pozwólcie, że teraz napiszę to samo tylko o funkcji "scanf", która również jest częścią standardowej obsługi wejścia-wyjścia. Jeśli jest jakiś problem z określeniem specyfikatora formatu, po prostu zjedźcie na dół i popatrzcie na tabelkę. Być może, że właśnie w niej znajduje się odpowiedź na Wasze pytanie.

Instrukcja "switch". Coś Wam to mówi? To kolejny ze sposobów czytelniejszego zapisu rozgałęzienia instrukcji warunkowej. W odróżnieniu od poprzednio omawianego operatora trójargumentowego, pozwala to obsłużyć wiele wartości w jednej klauzuli. Nie myślcie tylko, że to jest zapis bez wad bo jak w całej informatyce, wszystko ma swoje plusy i minusy. Zachęcam do lektury.

Kolejny lekki temat dla każdego chcącego się tego programowania nauczyć. Poboczny, ale warto opanować zapis który zaraz pokażę bo potrafi świetnie zredukować treść kodu do jednej linii. Kodu w postaci instrukcji warunkowej. Kodu, który będzie w stanie występować zarówno w wyrażeniu, jak również w miejscu wstawiania parametru do funkcji. Za kolejną wygodą kryje się kolejny zapis i oczywiście kolejny termin: "operator trójargumentowy" ("ternary operator"). Jeżeli to kogoś interesuje, to na pewno nie pożałuje. Nawet na studiach można nie spotkać się z tym zapisem, a jest on prosty i przyjemny.

Raz kolejny zwrócimy się w stronę Javy w celu przedstawienia bardzo przyjemnego i efektywnego zapisu. Umożliwia on zapisanie "rozciągliwej" funkcji, która będzie w stanie pobierać tyle parametrów ile tylko sobie zażyczycie. Jeden, pięć, nawet dwadzieścia. Taka implementacja jest możliwa jeżeli się wie o jej istnieniu i o sposobie zapisu. Pojęciem tym jest "zmienna liczba parametrów" ("variadic function"), sposób zapisu opisano poniżej.

W tę dużo swobodniejszą sobotę mam kolejne zjawisko programistyczne do omówienia. Dotyczy ono liczbowych typów danych, a dokładniej ich minimalnych i maksymalnych zakresów. Ich osiągnięcie może być czasem nieprzewidywalne i spowodować "zapętlenie", które bardziej kulturalnie wypadałoby nazwać "przekroczenie zakresu liczb całkowitych" (tłumaczenie).

Aby się mocno nie przemęczyć, teraz będzie lekki artykuł rozwiewający wątpliwości na temat Javy. Jak to z nią jest, Java jest kompilowana czy interpretowana? Czy może jedno i drugie? Jakby to Wam powiedzieć, działa ona pół na pół. Kompiluje się do kodu pośredniego, aby go potem interpretować. Wyjaśnienia zostawiam poniżej.

Wśród najczęściej wpisywanych fraz w Google, pojawia się między innymi pytanie "jak nauczyć się programować?". Myślałem o tym czy aby nie za wcześnie dla mnie, żeby rzetelnie odpowiedzieć na to pytanie. Ze względu na fakt, iż parę lat się kształcę w tym kierunku bo to masowy dział nauki, zwróciłem uwagę na parę rzeczy co się przyczyniło do znacznego wzrostu szybkości opanowywania materiału. Nie są to żadne wielkie spostrzeżenia, aczkolwiek mogą każdemu z Was dać do myślenia. Miejcie również na uwadze, że każdy z nas ma inne sposoby nabywania wiedzy i nie wszystkie porady mogą okazać się dla Was skuteczne. Oto one.

Finalizujemy wątek związany z konwersją systemów liczbowych i zabieramy się za system heksadecymalny. Zamienimy wspólnie system dziesiętny na szesnastkowy. W drugą stronę również. Nigdy nie wiadomo kiedy to się może przydać. Jeśli to nie ten system liczbowy Was interesuje, sięgajcie tutaj po tłumaczenie jak obchodzić się z liczbą binarną, a tutaj, ósemkową.

Kłopoty przy systemie oktalnym? Po tym artykule (mam nadzieję) będziecie mieli podstawowy zakres w kierunku konwertowania liczb dziesiętnych na ósemkowe i na odwrót. System dziesiętny na ósemkowy i odwrotnie, oto poradnik jak to wykonywać w obie strony. Jeśli interesujecie się systemem dwójkowym, to klikajcie tutaj lub tutaj, jeśli szesnastkowym.

Teraz dużo istotniejszy temat. Skoro zacząłem już pisać o tych konwersjach to pomyślałem, że dociągnę ten temat już do końca i napiszę o sposobach konwersji dowolnej liczby zamieniając system dziesiętny na binarny (tu znajdziecie zamianę na ósemkowy, a tu na szesnastkowy). Nie traćmy czasu na bzdety i przejdźmy do tematu tego artykułu.

Na dzisiaj przygotowałem jeden z tematów pobocznych, które każdy z Was może opanować wedle własnego uznania. Nie jest to ani często widziane, ani szeroko wykorzystywane. Temat ten dotyczy szesnastkowego systemu liczbowego, a posługując się eleganckim słownikiem mogliście zetknąć się z terminem "heksadecymalny literał zmiennoprzecinkowy" ("hex float literal"). Jest to rzadki okaz, praktycznie już w ogóle niestosowany, aczkolwiek ze względów historycznych chciałem przybliżyć Wam ten wątek. Na końcu artykułu pokażę Wam jak zamienić coś takiego na liczbę w systemie dziesiętnym.

Drugim dzisiejszym tematem będzie moje słówko odnośnie rozpoznawania "fuszerki" w grach wszelakiego typu. Niejedna gra ma swoje wady i zalety, aczkolwiek z pewnością u wielu z Was zatarły się w pamięci niektóre tytuły, które wręcz ociekały schrzanioną robotą. Tak na marginesie: nie mam najmniejszego zamiaru nikomu dokuczyć tylko w oparciu o swoją działalność chcę przestrzec przed popełnianiem moich błędów. Oto najczęściej spotykane błędy programistów, które moim zdaniem wpływają niekorzystnie na odbiór gry.

Na dzisiaj przygotowałem kolejny materiał o tworzeniu gier dla początkujących. Rozpatrzymy który język programowania jest najprostszy moim zdaniem i dlaczego. Wątek ten również może rodzić dyskusje, gdyż jest to po części kwestia gustu, ale nie o gustach teraz porozmawiamy.

Drugi artykuł w dniu dzisiejszym poświęcony będzie znowu językowi C. Zamiast prezentowania kodu, zwrócę uwagę teraz na pewien słowniczek pojęć z nim związanych. Usłyszeliście na lekcji czy wykładzie jakiś termin, który wprawił Was w mocne zdezorientowanie? Mam nadzieję, że jeden z nich będzie przedstawiony tutaj, a Wasze kłopoty zostaną zażegnane. Przed Wami, język C i spora garść terminologii!

Kolejne pytanie, które pragnę poddać głębszej analizie: "czy każdy może nauczyć się programować?". Krótka odpowiedź brzmi "tak", chociaż doskonale sobie zdaję sprawę, że taka odpowiedź nikomu z Was nie wystarczy. Nieco dłuższa brzmi: "to zależy jak daleko sięgasz z tym nauczaniem".