Tank Busters

Gra online multiplayer dla 2-4 graczy jako przeróbka gry 2D asteroids, której celem jest wyeliminowanie pozostałych graczy w szybkiej, chaotycznej rozgrywce. Gracze mogą poruszać się po niewielkiej planszy, strzelać do siebie pociskami i unikać lub niszczyć nadlatujące asteroidy. Projekt podzielony jest na klienta i serwer, które to procesy komunikują się za sobą po TCP za pomocą POSIX sockets przekazując sobie wiadomości zakodowane w BSON. Cały projekt napisany jest w C++ i korzysta z CMake jako build systemu oraz bibliotek: raylib i nlohmann/json. Jednym z ciekawszych aspektów programu, poza samą rozgrywką, jest implementacja współbieżności obsługi klientów i pokoi na serwerze. Odbywa się ona poprzez linuxowy system epoll oraz dedykowane wątki dla klientów, które komunikują się ze sobą za pomocą synchronizowanych systemem eventfd kolejek zawierających wyrażenia funkcyjne (lambdy). ...

Smart Chessboard

Inteligentna szachownica na Raspberry Pi 5 z wykorzystaniem kontaktronów oraz magnesów przymocowanych do bierek, za pomocą których, wykrywane jest położenie figur na planszy. Program następnie analizuje dostępne warianty możliwych do wykonania ruchów oraz pokazuje zalecany ruch w danym momencie na wyświetlaczu LCD oraz na lichess.org. Projekt zaliczeniowy na Systemy Wbudowane. Celem projektu było stworzenie inteligentnej szachownicy, która jest w stanie, analizować obecną pozycję figur na planszy. Szachownica wspiera gracza przy wyborze optymalnych ruchów i wyborze odpowiedniej strategii w celu pokonania drugiego gracza. Dodatkowym atutem jest możliwość podłączenia urządzenia do monitora i wyświetlenia aktualnego stanu szachownicy za pomocą internetowej platformy lichess.org. Wykrywanie pozycji bierek jest możliwe dzięki wykorzystaniu 64 kontaktronów, które znajdują się pod każdym polem na planszy. Do każdej figury przymocowany jest magnes neodymowy, dzięki czemu po zbliżeniu go na odpowiednią odległość, możemy wykryć, że dane pole jest okupowane przez daną bierkę. Kontaktrony zostały połączone w macierz za pomocą pięciu multiplekserów wejścia, które są podłączone do multipleksera I2C. Komponent ten łączy odbiera sygnał ze wszystkich pól szachownicy, a następnie przekazuje je do Raspberry Pi 5, która z wykorzystaniem języka python analizuje otrzymane dane. Wykorzystane biblioteki: board, adafruit_tca9548a, time, busio, digitalio, adafruit_mcp230xx, socket, adafruit_ssd1306, PIL, chess, selenium, stockfish. Program podzielony jest na dwie części. Pierwsza, przetwarza obecną sytuację na planszy, iterując po wszystkich polach na planszy i wysyła wykryte zmiany za pomocą protokołu TCP do drugiego procesu, który z wykorzystaniem darmowego silnika szachowego Stockfish analizuje dostępne warianty możliwych do wykonania ruchów i zwraca zalecany ruch w danym momencie. Informacja ta wysyłana jest ponownie (z wykorzystaniem TCP) do pierwszego procesu, który otrzymane dane pokazuje na wyświetlaczu lcd, który również połączony jest do multipleksera I2C. Całość została zamknięta w wykonanej z drewna skrzyni, z której wychodzą 4 przewody: SCK, SDA oraz wspólna masa, które następnie można podłączyć do Raspberry Pi 5 oraz przewód zasilający USB. ...

IPC Publish Subscribe

Projekt zaliczeniowy - Programowanie Systemowe i Współbieżne. Celem projektu jest implementacja systemu przekazywania (rozgłaszania) wiadomości do wszystkich procesów, które zasubskrybowały dany typ wiadomości (zarejestrowały się na ich odbiór). Aplikacja wykorzystuje mechanizm kolejek komunikatów (Message Queues). Projekt zawiera w sobie 2 podprogramy: klienta i serwera. Każdy klient może wysyłać i otrzymywać wiadomości do/od pozostałych użytkowników systemu. W wymianie wiadomości pomiędzy klientami zawsze pośredniczy serwer. Otrzymywane wiadomości wyświetlane są na ekranie. Programy są zaimplementowane zgodnie ze specyfikacją opisaną w protokole https://github.com/NiebieskiRekin/IPC-Publish-Subscribe/blob/main/PROTOCOL.md ...

Bash Word Histogram

A simple word counter written in Bash that can read text from multiple .txt, .pdf or .ps files, and export to .csv or plaintext. Final project for Operating Systems. Repository https://github.com/NiebieskiRekin/histogram.sh

28 maja 2023 · Tomasz Pawłowski · Bash, Linux