python-arcade-oo/plan.md

136 lines
9 KiB
Markdown
Raw Permalink Normal View History

# Plan 5-dniowy (intensywny): OOP w Pythonie + Arcade
Dla ucznia znającego proceduralnego Pythona na poziomie Olimpiady Informatycznej Juniorów • ok. 68 h dziennie
Zasada: teoria OOP w małych dawkach rano, resztę dnia kodowanie w Arcade. Arcade jest obiektowe od podstaw, więc każdy dzień praktyki utrwala klasy, dziedziczenie i metody w naturalnym kontekście. Przed startem: `pip install arcade` (Python 3.9+).
## Dzień 1 — Podstawy OOP + pierwsze okno
**Rano (23 h): teoria**
* Corey Schafer — Python OOP Tutorials, odcinki 13 (klasy i instancje, zmienne klasowe, classmethod/staticmethod). Oglądać z pauzami i przepisywać kod samodzielnie.
[https://www.youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc](https://www.youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc)
**Po południu (45 h): praktyka**
* Real Python — „Arcade: A Primer on the Python Game Framework”: okno, rysowanie, sprite'y, pętla gry, klawiatura. Przejść cały tutorial, potem zmodyfikować grę po swojemu (inne prędkości, nowy typ obiektu).
[https://realpython.com/arcade-python-game-framework/](https://realpython.com/arcade-python-game-framework/)
**Wieczorem, do poduszki:**
* PyCon 2018, Paul Craven — „Easy 2D Game Creation With Arcade” (~30 min) — przegląd możliwości biblioteki od jej autora.
[https://www.youtube.com/watch?v=DAWHMHMPVHU](https://www.youtube.com/watch?v=DAWHMHMPVHU)
---
## Dzień 2 — Dziedziczenie + sprite'y, kolizje, zdarzenia
**Rano (1,52 h): teoria**
* Corey Schafer, odcinki 45 (dziedziczenie i klasy pochodne, dunder methods).
**Po południu (56 h): praktyka**
* Wybrane rozdziały kursu autora biblioteki Arcade Academy — Learn Python: sprite'y, kolizje, poruszanie się, dźwięki. Rozdziały czysto wstępne (zmienne, pętle) pominąć — to poziom dawno opanowany.
[https://learn.arcade.academy/](https://learn.arcade.academy/)
* Ćwiczenie na koniec dnia: własna mini-gra typu „zbieraj monety, unikaj wrogów” z klasą bazową Enemy i dwoma typami przeciwników dziedziczącymi po niej.
---
## Dzień 3 — Platformówka, część 1
* Oficjalny tutorial platformówki (dokumentacja Arcade, zgodny z aktualnym API): gracz, fizyka, grawitacja, skoki, kamera, mapa poziomu. Przejść mniej więcej pierwszą połowę kroków.
[https://api.arcade.academy/en/latest/tutorials/platform_tutorial/index.html](https://api.arcade.academy/en/latest/tutorials/platform_tutorial/index.html)
* Równolegle jako wideo-wsparcie: PyCon 2019, Paul Craven — „Build Your Own 2D Platformer Game”.
[https://www.youtube.com/watch?v=Djtm1DzWSvo](https://www.youtube.com/watch?v=Djtm1DzWSvo)
* Darmowe assety (grafiki, dźwięki): [kenney.nl/assets](https://kenney.nl/assets)
---
## Dzień 4 — Platformówka, część 2 + szlify OOP
* Dokończyć tutorial platformówki: wrogowie, punkty, wiele poziomów, ekran końca gry.
* Corey Schafer, odcinek 6 (property, gettery/settery) — 20 min teorii i zastosować w kodzie platformówki (np. property „health” z ograniczeniem 0100).
* Alternatywne ujęcie platformówki (tekst): Real Python — „Build a Platform Game in Python With Arcade” — uwaga: pisany pod starsze API, przy rozbieżnościach wygrywa oficjalna dokumentacja.
[https://realpython.com/platformer-python-arcade/](https://realpython.com/platformer-python-arcade/)
---
## Dzień 5 — Własny projekt
* Cały dzień na grę własnego pomysłu od zera: remake Tetrisa / Snake'a / Flappy Birda albo coś autorskiego. Wymóg projektowy: minimum 3 własne klasy, w tym jedna hierarchia dziedziczenia — tu OOP naprawdę „klika”.
* Kopalnia gotowych przykładów do podglądania (kod źródłowy dziesiątek mini-gier):
[https://api.arcade.academy/en/latest/example_code/index.html](https://api.arcade.academy/en/latest/example_code/index.html)
* Na koniec: wrzucić projekt na GitHuba — dobre domkniecie tygodnia.
---
## Uwagi
* Arcade 3.x zmieniło część API względem starszych tutoriali (np. `arcade.start_render()``self.clear()`). Przy rozbieżnościach zawsze wygrywa aktualna dokumentacja: [api.arcade.academy](https://api.arcade.academy).
* Materiały są po angielsku — przy poziomie olimpijskim to dobra okazja do angielskiego technicznego.
* Jeśli tempo okaże się za szybkie, dzień 5 można poświęcić na dokończenie platformówki, a własny projekt przenieść na później.
* Skill Tree w dokumentacji ([api.arcade.academy](https://api.arcade.academy)) pokazuje, co zgłębiać po tych 5 dniach: shadery, GUI, sieć itd.
---
---
# Wersja PL: Plan 5-dniowy (intensywny)
Teoria OOP po polsku • praktyka w Arcade po angielsku (z tłumaczeniem przeglądarki) • ok. 68 h dziennie
Zasada: teoria OOP w małych dawkach rano — po polsku. Resztę dnia kodowanie w Arcade — tutoriale są po angielsku, ale tekstowe strony świetnie działają z tłumaczeniem przeglądarki. Przed startem: `pip install arcade` (Python 3.9+).
## Dzień 1 — Podstawy OOP (PL) + pierwsze okno
**Rano (23 h): teoria po polsku**
* Kacper Sieradziński — „Kurs programowania obiektowego: Podstawy, Metody specjalne, Dziedziczenie w Pythonie” (YouTube, PL): obejrzeć część o podstawach — klasy, obiekty, atrybuty, metody, konstruktor, self. Oglądać z pauzami i przepisywać kod.
[https://www.youtube.com/watch?v=XYmt6foUCFI](https://www.youtube.com/watch?v=XYmt6foUCFI)
* Kodologia — „Python. Programowanie obiektowe” (PL, interaktywny, kodowanie w przeglądarce, 22 automatycznie sprawdzane zadania): zrobić pierwsze rozdziały jako ćwiczenia.
[https://kodologia.pl/kursy/python-programowanie-obiektowe](https://kodologia.pl/kursy/python-programowanie-obiektowe)
**Po południu (45 h): praktyka w Arcade**
* Real Python — „Arcade: A Primer on the Python Game Framework” (ang., czytać z tłumaczeniem przeglądarki): okno, rysowanie, sprite'y, pętla gry, klawiatura. Przejść całość, potem zmodyfikować grę po swojemu.
[https://realpython.com/arcade-python-game-framework/](https://realpython.com/arcade-python-game-framework/)
* Alternatywnie/pomocniczo: polska (maszynowo tłumaczona) wersja tego primera:
[https://pl.python-3.com/?p=333](https://pl.python-3.com/?p=333)
## Dzień 2 — Dziedziczenie (PL) + sprite'y, kolizje, zdarzenia
**Rano (1,52 h): teoria po polsku**
* Sieradziński — część o dziedziczeniu i metodach specjalnych (dunder methods) z tego samego filmu; do tego odpowiednie rozdziały Kodologii (dziedziczenie) jako zadania.
**Po południu (56 h): praktyka w Arcade**
* Wybrane rozdziały kursu autora biblioteki Arcade Academy — Learn Python (ang., dobrze działa z tłumaczeniem przeglądarki): sprite'y, kolizje, poruszanie, dźwięki.
[https://learn.arcade.academy/](https://learn.arcade.academy/)
* Ćwiczenie na koniec dnia: mini-gra „zbieraj monety, unikaj wrogów” z klasą bazową Enemy i dwoma typami przeciwników dziedziczącymi po niej.
## Dzień 3 — Platformówka, część 1
* Oficjalny tutorial platformówki (dokumentacja Arcade, ang. + tłumaczenie przeglądarki; zgodny z aktualnym API): gracz, fizyka, grawitacja, skoki, kamera, mapa poziomu. Pierwsza połowa kroków.
[https://api.arcade.academy/en/latest/tutorials/platform_tutorial/index.html](https://api.arcade.academy/en/latest/tutorials/platform_tutorial/index.html)
* Wideo-wsparcie: PyCon 2019, Paul Craven — „Build Your Own 2D Platformer Game” (YouTube; włączyć automatyczne polskie napisy).
[https://www.youtube.com/watch?v=Djtm1DzWSvo](https://www.youtube.com/watch?v=Djtm1DzWSvo)
* Darmowe assety: [kenney.nl/assets](https://kenney.nl/assets)
## Dzień 4 — Platformówka, część 2 + szlify OOP (PL)
* Dokończyć tutorial platformówki: wrogowie, punkty, wiele poziomów, ekran końca gry.
* Teoria PL (3045 min): rozdziały Kodologii o hermetyzacji i property (dekorator @property, gettery/settery) — i od razu zastosować w platformówce.
* Alternatywne ujęcie platformówki (ang., tekst): Real Python — „Build a Platform Game in Python With Arcade” — pisany pod starsze API.
[https://realpython.com/platformer-python-arcade/](https://realpython.com/platformer-python-arcade/)
## Dzień 5 — Własny projekt
* Cały dzień na grę własnego pomysłu od zera. Wymóg projektowy: minimum 3 własne klasy, w tym jedna hierarchia dziedziczenia.
* Kopalnia przykładów: [https://api.arcade.academy/en/latest/example_code/index.html](https://api.arcade.academy/en/latest/example_code/index.html)
* Na koniec: wrzucić projekt na GitHuba.
## Uwagi (PL)
* Płatna alternatywa PL dla teorii: „Programowanie obiektowe w Python” (strefakursow.pl) albo kurs Karola Kurka „50 zadań praktycznych z programowania obiektowego” (Videopoint/Helion).
* Arcade 3.x API różni się od wersji 2.x. Zawsze sprawdzaj [api.arcade.academy](https://api.arcade.academy).
---
---
# Inne dokumenty
## Wypowiedzenie umowy ubezpieczenia OC (z wyop.pdf)
*Uwaga: Ten dokument zawiera dane osobowe i dotyczy wypowiedzenia polisy OC dla pojazdu Mazda 6 (GA431JA) w InterRisk TU S.A. z dnia 07.06.2026.*