Implement get_all_posts_flattened using recursion Jāuztaisa, ka postiem var izvēlēties parent
Prettier izmantot pycharm plugin nevis nodejs
Pārtaisīt Flask flash message after postback
https://www.perplexity.ai/search/example-of-using-RYJ4ZiXiS.GwjynMK8G_wQ?s=c
https://www.perplexity.ai/search/give-example-python-WMEnGTQLScqsVO2VOkqbng?s=c
4. Implementēt pilnu data structure
Sakārtot variable un function names
Class names: PascalCase variable and function C style: function_variable_name
Noņemt no git liekos failus, izveiodot upload direktoriju
Tikai update/insert izmaiņas
Bug
Pēdējais mācību uzdevums pirms praktiska darba - Flappy Bird
Izveidot GIT repo (nosharot un atsūtīt https://github.com/evaldsurtans)
Atsūtīt ar uz Whatsapp repo link
Spēles piemērs:
https://www.youtube.com/watch?v=fQoJZuBwrkU&t=23s
Vizuālajam izmantot šīs game sprites - pašam nekas nav jāzīmē:
https://www.spriters-resource.com/mobile/flappybird/sheet/59894/ https://github.com/samuelcust/flappy-bird-assets/tree/master/sprites
Pirms sākt programmēt spēli, izmantojot mermaidjs sagatavot UML class diagram par to kāda būs spēles struktūra un UML sequence diagram kāda būs spēles loģika, iepushot šīs diagrammas MD formātā GIT (Var izmantot piemēram Typora, lai sagtavotu)
Izmanot Python un PyGame vidi
Implementēt spēli OOP (Object Oriented Programming) veidā
Izmantot Inheritance / Pārmantošanu tā, ka visiem birds kopīgās funkcijas atrodas bāzes klasē. Tāpat visu šķēršļu kopīgas funkcijas bāzes klasē
Polymorphism - strādāt at bāzes klases funkcijām piemēram bird.action(), kaut arī pati funkcija var būt implementēta tikai child klasēs - pēc iespējas mazāk strādāt ar specifiskām klasēm, izmantot cik vien var bāzes klašu funkcijas, BET kodam jāatrodas child klasēs kur tas ir specifisks. Katram bird tipam jābūt savai loģikai.
Encapsulation - izveidot getters/ setters visām klasēm, member mainīgajiem nepiekļūstam pa no ārpuses
Izmantot design patterns
MVC - Model View Controller
Model - dažādas klases nevis vnk Model - Game state glabājās dataclasses un nesatur funkcijas!
Controller - dažādas klases nevis vnk Controller - strādā ar dataclasess un tiek izsaukti no View, kad kaut kas notiek izsauc event emitters, kurus noķer view
View - PyGame applikācija, saņem UI/IO inputs, klausās controller events un zīmē spēli
Observer - dispatch event un add event listener - veids kā komunicē Controller <-> View un kā saņem user inputs iekš View. Visi aliens savā starpā sazinās izmantojot Events, piemēram, kad viens sasniedz sienu, visiem pārējiem paziņo, ka jālido pretējā virzienā.
Singleton - Pieejama instance no visām vietām kodā - piemēram GameState, kur var apstrādāt punktus, līmeņusutt (atkal klases nosaukums nav Singleton!)
Factory - pēc izkārtojuma struktūras ģenerēt caurules ar dažādu grūtību
Visām python funkcijām und atiem izmantot Typing (definēt tipus)
Kodā visām funkcijām viens input - viens output - nedrīkst būt daudzi return kodā
Visi mainīgie vienā stilā un angļu valodā
Nerakstīt kodu makaronos - pēc iespējas vairāk sadalīt vairākos atsevišķos funkciju izsaukumos
Spēlei fiksēta izmēra logs (nav nepieciešams full-screen), Nedrīks zīmēt visus elementus vienlaicīgi - jāzīmē tikai caurules, kuras ir redzamības lokā
Spēlei nav nepieciešami nekādi MENUS var sākt spēlēt uzreiz un pēc spēles vnk viens paziņojums pēc kura var atsākt spēlēt
⚠️ Spēlē jābūt dažādu grūtību caurulēm, zaļās sarkanās un Monētu bonusiem. Caurulēm jābūt arī ar vairākiem sadalījumiem pa vidu
Piemērs MVC - Neizmantot šādus identiskus nosaukumus!
Model daļa
Controller daļa
View daļa