Zbuduj od podstaw kultowego Tetrisa i poznaj kluczowe koncepcje programowania! W tym kursie przeprowadzimy Cię przez cały proces – od minimalnej wersji gry MVP
Stworzony przez Mariusz Jurczenko
40 % taniej
99.00 zł
To najniższa cena z ostatnich 30 dni!
Masz pytania dotyczące tego szkolenia ?
Zbudujesz Tetrisa krok po kroku, zaczynając od MVP. Uporządkujemy kod w warstwach i od początku będziemy trzymać dobre praktyki. Dzięki temu zobaczysz, jak przeprowadzić projekt od idei do działającej gry.
Nauczysz się testów jednostkowych i iteracyjnego rozwoju. Dodasz różne klocki, rotację i fabrykę obiektów. To praktyczne ćwiczenie, które uczy myślenia o jakości, czytelności i łatwej rozbudowie kodu.
Brak formalnych wymagań wstępnych. W trakcie pracy korzystamy z Visual Studio i WPF, więc przyda się dostęp do tego środowiska oraz chęć systematycznej nauki.
Zbuduj własnego Tetrisa w C#. Przejdziesz pełną ścieżkę tworzenia gry: od minimalnej wersji (MVP) po rozbudowane mechaniki i optymalizację. Projekt uporządkujemy w warstwach Domain, Application, Infrastructure i Presentation (WPF). Po drodze zastosujesz SOLID, SoC, KISS, DRY, YAGNI oraz zadbasz o spójność i niskie sprzężenia. Dodasz testy z xUnit, Moq i FluentAssertions, a następnie rozszerzysz grę o typy klocków, rotacje i wzorzec Factory Method.
Na starcie utworzysz rozwiązanie w Visual Studio i podzielisz kod na warstwy, aby od początku panować nad złożonością. W Tetris.Domain powstanie logika gry i modele. Warstwa Tetris.Application skupi się na zasadach działania i operacjach aplikacji. Tetris.Infrastructure pozostanie miejscem integracji z zewnętrznymi komponentami, gdy będą potrzebne. Interfejs przygotujesz w Tetris.Presentation z użyciem WPF. Taki układ ułatwi rozdział odpowiedzialności, testowanie i dalszą rozbudowę, a każda część będzie miała jasną rolę.
W pierwszym kroku zbudujesz minimalną wersję gry. Planszę zaimplementujesz jako siatkę, a na początek użyjesz jednego prostego klocka. Dodasz mechanikę opadania w dół oraz podstawowy interfejs w WPF do wyświetlania planszy. Nie wprowadzamy na razie różnych kształtów, poziomów trudności ani złożonych interakcji gracza, bo najpierw liczy się poprawne działanie podstaw. Gdy MVP spełni oczekiwania, stanie się solidnym fundamentem do stopniowego rozwijania funkcjonalności i usprawnień.
Po uruchomieniu MVP przeanalizujesz kod pod kątem najlepszych praktyk. Skupisz się na zasadach SOLID: pojedynczej odpowiedzialności, otwartości/zamkniętości, podstawienia Liskov, segregacji interfejsów i odwrócenia zależności. Zadbamy też o Separation of Concerns, prostotę (KISS), brak powtórzeń (DRY) i podejście YAGNI. Ważnym elementem będzie spójność modułów i ograniczanie sprzężeń. Dzięki temu projekt stanie się czytelny, łatwiejszy w utrzymaniu i gotowy na kolejne kroki.
Następnie dodasz testy jednostkowe zgodnie z TDD. Dla planszy, czyli klasy GameBoard, przygotujesz testy konstruktora, sprawdzanie pustych komórek (IsCellEmpty), umieszczanie bloków (PlaceBlock) oraz warunki brzegowe. Dla serwisu gry, klasy GameService, zweryfikujesz tworzenie nowych bloków (SpawnBlock), ruch w dół (MoveBlockDown), zachowanie przy osiągnięciu dna i pobieranie bloków (GetBlocks). Wykorzystasz xUnit jako framework, Moq do mockowania zależności oraz FluentAssertions dla czytelnych asercji.
Kolejny etap to dodanie różnych typów klocków i zastosowanie polimorfizmu. Wprowadzisz wyliczenie GameBlockType dla kształtów I, O, T, S, Z, J, L oraz wydzielisz interfejs IGameBlockFactory, który zdefiniuje sposób tworzenia obiektów. Zaimplementujesz GameBlockFactory z metodami CreateGameBlock oraz CreateRandomGameBlock. Dla porządku przeniesiesz IGameBoard do folderu Interfaces. Taki układ oddziela tworzenie klocków od reszty kodu, poprawia czytelność i ułatwia przyszłe rozszerzenia bez dotykania wielu miejsc.
Na koniec dodasz obracanie klocków z klawiatury z pełną obsługą kolizji. Zmodyfikujesz klasę GameBlock tak, aby metoda Rotate zwracała obrócony kształt. W GameService pojawią się CanRotate do sprawdzania możliwości rotacji oraz RotateCurrentBlock do jej wykonania, a także metody MoveBlockLeft i MoveBlockRight w kontekście obrotów. Wprowadzisz IRotationStrategy i przygotujesz strategie: standardową o 90° w prawo, brak rotacji, obrót o 180°, przeciwnie do wskazówek zegara oraz losową, która wybiera jedną z dostępnych opcji.
Przystąp do szkolenia i oceń go jako pierwszy!
40 % taniej
99.00 zł
To najniższa cena z ostatnich 30 dni!