Struktury danych w JavaScripcie – Zbiór

W dzisiejszym wpisie pokazuję kolejną strukturę danych. Zaczynam powoli zbliżać się do końca tej serii postów 🙂

Tym razem na tapetę idzie zbiór. Jest to struktura, która powinna być wszystkim znana, choćby z lekcji matematyki w podstawówce 🙂 Według mnie to jedna z prostszych struktur danych do opisania, więc powinno być lekko.

Struktury danych w JavaScripcie – Zbiór Czytaj dalej Struktury danych w JavaScripcie – Zbiór

Struktury danych w JavaScripcie – Kolejka

Odstawiam na razie tematykę gier i wracam do serii artykułów o strukturach danych. Pewien czas temu przedstawiłem javascriptowa implementacje stosu, teraz przyszła pora na kolejna strukturę – kolejkę.

Kolejka jest używana w bardzo wielu sytuacjach jeśli chodzi o działanie komputera, od bardzo nisko poziomowej obsługi procesów, po zarządzanie takimi sprawami jak kolejność drukowania stron przez drukarkę.

Kolejka Czytaj dalej Struktury danych w JavaScripcie – Kolejka

Wariacja o space invaders w JavaScripcie cz. 3 (Ostatnia, wersja niekompletna)

Aż cztery posty o jednym prostym projekcie 🙂 Ale ten post jest (na szczęście?) już ostatni, obiecuję.

W moim początkowym zamyśle, gra ta miała działać w następujący sposób: gracz widzi tylko ten input, który aktualnie musi wpisać, potwierdza przyciskiem, gra reaguje a gracz widzi kolejny.

Długo dłubałem przy tym projekcie (dwie poprzednie wersje to potwierdzają), co rusz dodając coś nowego. Ostatnim dodanym tworem jest prosty system kontrolowania stanów. O tym będzie dzisiejszy post.

space invaders w Javascripcie Czytaj dalej Wariacja o space invaders w JavaScripcie cz. 3 (Ostatnia, wersja niekompletna)

Samowywołujące się anonimowe funkcje

Jako uzupełnienie poprzedniego posta chciałem opisać zjawisko samowywołujących się, anonimowych funkcji. Nie jest to do końca taka sama kategoria tworzenia funkcji, jak te o których pisałem wcześniej, ale myślę że mogę ją tu wepchnąć 🙂 Temat jest dość zaawansowany, szczególnie to jak możemy takie funkcje wykorzystać. Nie oznacza to jednak, że są to rzeczy niezrozumiałe.

Postaram się, jak zawsze, opisać wszystko w miarę przystępnie i podać jasne przykłady.

Samo-wywołujące się anonimowe funkcje Czytaj dalej Samowywołujące się anonimowe funkcje

Funkcje: Tworzenie funkcji w JavaScripcie

W mojej karierze pracy z JavaScriptem nic, nie było dla mnie tak mgliste i mylące jak mnogość sposobów na stworzenie nowej funkcji. Najgorsze było to, że żadna z książek, które czytałem, nie wyjaśniała definitywnie tego tematu. Internet, też nie był zbyt pomocny, zresztą, nie wiedziałem nawet jak pytać o ten problem googla.

Teraz już wiem na co zwracać uwagę i rozumiem, że wiedza ta jest bardzo ważna. W tym poście opiszę sposoby na tworzenie funkcji w JavaScripcie. Czym różnią się między sobą i które są dobre, a które niekoniecznie. Jak zawsze wszystko zilustrujemy przykładami.

Tworzenie funkcji w JavaScripcie Czytaj dalej Funkcje: Tworzenie funkcji w JavaScripcie

Wykorzystanie implementacji stosu w JavaScripcie

W dzisiejszym wpisie, przedstawię sposoby na wykorzystanie implementacji stosu do zmiany zapisu liczb z dziesiętnych na dwójkowy oraz na sprawdzanie poprawności zapisu nawiasów. Użyję klasę Stack, którą przedstawiłem, w poprzednim poście.

stosss
Czytaj dalej Wykorzystanie implementacji stosu w JavaScripcie

Struktury danych w JavaScripcie – Stos

Chociaż pisanie gier to świetna zabawa i dobry sposób na naukę programowania, to nie samymi grami człowiek żyje. Aby utrwalić wiedzę zdobytą na studiach postanowiłem napisać na blogu serię artykułów. Przedstawię w nich struktury danych w JavaScripcie – stos, to pierwsza opisana struktura. Jest to bardzo popularny, a zarazem prosty system reprezentowania danych. Opiszę na jakich zasadach działa jakie ma możliwości. Oczywiście pokażę też implementacje stosu w JavaScripcie.

Struktury danych w JavaScripcie - Stos Czytaj dalej Struktury danych w JavaScripcie – Stos

Pisanie gier w języku JavaScript – Game Loop

Ok, pisałem, że niedługo w przedstawię pełny kod pierwszej gry. Niestety nie dziś. Postanowiłem najpierw opisać bardzo ważny aspekt programowania gier, nie tylko w języku JavaScript – Game Loop.

petla
Czytaj dalej Pisanie gier w języku JavaScript – Game Loop

Wariacja o space invaders w JavaScripcie cz. 1

space invaders w Javascripcie

Nie będę pokazywał jak napisać ten klasyk gier komputerowych, ale postaram się zaprezentować coś podobnego do space invaders w JavaScripcie 🙂 Często spotykam się z opinią, że aby tworzyć gry, należy znać bardzo zaawansowane techniki programowania lub skomplikowane biblioteki / frameworki. Do tego trzeba mieć zespół grafików, dźwiękowców i cholera wie co jeszcze.

Otóż nie. Chcę udowodnić wam, że można stworzyć grę, bez tego wszystkiego. Wystarczy mieć fajny pomysł i bardzo prostymi technikami programistycznymi możemy sami napisać ciekawą grę. Nie będzie to może następca wiedźmina, ale uwierzcie mi, wciąga (na jakieś 15 minut :P) Czytaj dalej Wariacja o space invaders w JavaScripcie cz. 1

Głębokie kopie tablic

Dziś krótki wpis. Uzupełnienie poprzedniego posta, opisującego podstawowe różnice pomiędzy typami prostymi a referencyjnymi.

Wyjaśniłem tam dlaczego nie możemy skopiować tablicy przy użyciu operatora ‚=’. Taka operacja przypisuje do zmiennej po lewej stronie operatora referencje do której prowadzi zmienna po prawej stronie. Nie kopiuje tablicy tak jak w przypadku zmiennych typu prostego, jak ‚number’ czy ‚boolean’.

Zamiast tego otrzymamy tak zwaną „płytką kopię” (shallow copy). Wszelkie zmiany, które program wykona w użyciu nowej płytkiej kopii, będą też odzwierciedlone w oryginale. Obie zmienne tak naprawdę wskazują na ten sam obiekt.

Dzieje się tak dlatego, że wszystkie obiekty w JavaScripcie (tablica też jest obiektem) są typami referencyjnymi. Jak się nad tym zastanowimy, ma to sens, ponieważ zamiast kopiować obiekt, lepiej jest stworzyć jego nową instancję za pomoc operatora ‚new’.

Z doświadczenia wiem jednak, że czasem przydaje się zrobić ‚głęboką kopię’ istniejącej już tablicy z całą jej zawartością. Skoro nie mamy takiej możliwości, to możemy stworzyć ją sobie sami!
Czytaj dalej Głębokie kopie tablic