Kontenery w C++ – std::array, czyli ładniejsza tablica.

W standardowych i popularnych kursach języka C++ zazwyczaj nikt nie rusza tematów poświęconych szczegółom takim jak kontenery, czy też inne pierdoły z referencji języka – mogą one się wydać rozpraszające lub po prostu trudne dla początkującego, lub komuś po prostu się nie chce. Dlatego postanowiłem napisać serię poradników poświęconych właśnie takim szczegółom, które potrafią bardzo ułatwić życie a o których rzadko kiedy się pisze. Zakładam oczywiście, że czytelnik posiada podstawową wiedzę na temat C++’a, bo bez tego może być mu ciężko ugryźć ten poradnik.

Czytaj dalej →

Jak programować gry? Najważniejsze elementy w grach 2D

1. Wstęp

Tworzenie gier to coś o czym marzyłem od początku mojej przygody z programowaniem. Przez czas nauki wiele razy błądziłem, próbowałem różnych technik programowania gier, często bardzo prymitywnych… byłem wtedy po prostu średniaczkiem a i mój młody wiek też na to wpłynął bo nie do końca rozumiałem co ja w ogóle piszę. Ale próbowałem. Przez moje samozaparcie i dociekliwość przebyłem całkiem spory kawałek programistycznej drogi i wylądowałem tutaj. Dlaczego tu jestem?

Już od jakiegoś czasu planowałem podzielić się swoim doświadczeniem w kwestii gier jednak zawsze coś mnie zatrzymywało i nie mogłem się zabrać do tego. Tym razem dzięki tej grupie czuję, że mi się to uda. Zapraszam na lekturę. Czytaj dalej →

Boost.SIMD, co tak naprawdę potrafi jeden rdzeń?

Wolny program? Hurr durr, zrób wątki.

Brzmi znajomo? Jeśli program działa wolniej niż się chce inni programiści dają z reguły dwie rady: pierwsza, bardzo dobra – poprawić algorytm, druga, zwykle fatalna – użyć wielu wątków / procesów. Prawda jest taka, że czego by nam nie pchali producenci 12–rdzeniowych procesorów w telefonach wiele wątków ma tyle zalet co wad. Sama synchronizacja pochłania tyle mocy obliczeniowej, że o jednym rdzeniu można zapomnieć (drobna przesada nikogo nie zabiła :P), pełno miejsca na świeżutkie wycieki pamięci czy niezdefiniowane wyścigi po dane, jednym słowem – chaos. Czytaj dalej →

Qt – Pierwszy projekt – Fake blue screen

Okej, wstęp już za nami, wypadałoby zrobić jakiś mały programik. W tym poradniku pokażę, jak napisać program, który bardzo przypomina blue screena. Zastosowanie? Można wkręcać znajomych/nauczycieli, u mnie w szkole 4/4 informatyków się nabrało, w tym poradniku wykorzystamy część wiedzy z poprzedniego poradnika, wykorzystamy Qt Quick Controls 2, Qt 5.7.

Dobra, jak się za to zabrać? Zróbmy niebieski ekran, w tym celu do ApplicationWindow podpinamy właściwość, jaką jest kolor i ustawiamy na „blue”, teraz trzeba zrobić, aby nasza aplikacja nie wyglądała jak aplikacja, w tym celu dodajemy właściwość flags i wartość Qt.FramelessWindowHint, kod powinien wyglądać tak: Czytaj dalej →

Synchronizacja wątków w C# i C++ (Spinlock)

Wielowątkowość, synchronizacja… Ale po co to komu?

Przytoczę pewne bardzo obrazowe porównanie. Wyobraź sobie, że jesteś w restauracji. Podnosisz menu, wybierasz potrawę i czekasz na kelnera. Widzisz, że tymczasowo obsługuje innego klienta. Mija kilka, kilkanaście minut, a kelner wciąż stoi przy stoliku innego klienta, obsługuje tylko jego. Dopiero, gdy klient płaci i wychodzi z restauracji, kelner podchodzi do Ciebie i zaczyna cię obsługiwać. W tym czasie przychodzi inny klient, ale kelner jest zajęty tylko tobą. Mniej więcej tak działa aplikacja jednowątkowa (nasz kelner). W oczywisty sposób jest to nieefektywne.

Wtedy niczym superbohater, przybywa wielowątkowość.
Czytaj dalej →