2025-01-09 Meeting 2

 

TODO

  1. Apgūt SourceTree vai GitKranken

  2. Izveidot kopēju Git Repo visiem uzdevumiem, kur uzdevumi ir kā apakš folderi, nošērot šo jauno kopīgo repo uz evaldsurtans un dot ziņu whatsapp

  3. Izpētīt relāciju datu bāzes un SQL funkcijas saistībā relāciju DB

  4. Izpētīt Flask Session. Implement session_type as filesystem or in sqlite database instead of encrypted cookie

  5. Flask Task 6

    • Pietrūkst tags uzdevums, jāvar pievienot post edit lapā tags (jābūt DB tabulām, ModelTag class utt)

    • Pietrūkst attachment upload uzdevums, jāvar augšupielādēt attēlus un attachements post edit lapā

    • Home un Posta view lapā jārada attēli un attachments katram postam

    • Jāvar edit lapā mainīt attēlus un attachments

  6. AI kurss sāksies no 4. februāra, otrdienās 18:00 - 20:00 RTU klātienē Riga, Zunda krastmala 10, 122

  7. Flask Tutorial 7 - https://www.youtube.com/watch?v=xGvDowhT-Fs&list=PLehOXo4NfxeW9dzK5uDnqcJ6DSNcZMw15&index=8 Template: https://share.yellowrobot.xyz/quick/1629812987-programming-tutorials/session_7.zip

  1. Flask Tutorial 8

https://www.youtube.com/watch?v=swkdOcWqRY0&list=PLehOXo4NfxeW9dzK5uDnqcJ6DSNcZMw15&index=9 Template: https://share.yellowrobot.xyz/quick/1629812987-programming-tutorials/session_8.zip

  1. Flask Tutorial 9

https://www.youtube.com/watch?v=MF9Kv5rUk1I&list=PLehOXo4NfxeW9dzK5uDnqcJ6DSNcZMw15&index=10 Template: https://share.yellowrobot.xyz/quick/1629812987-programming-tutorials/session_9.zip

  1. Flask Tutorial 10

https://www.youtube.com/watch?v=YFV9fwWBtgM&list=PLehOXo4NfxeW9dzK5uDnqcJ6DSNcZMw15&index=11

  1. Design Patterns Task 5

    Template: https://share.yellowrobot.xyz/quick/2025-1-9-48E5F85A-8FAB-4284-B934-108D78F99F77.zip

 

Code Review

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

Abstrakcija virs factory

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

image-20250109162726359

Task - Duck Hunt

Izveidot GIT repo (nosharot un atsūtīt https://github.com/evaldsurtans)

Atsūtīt ar uz Whatsapp repo link

Regulāri veikt commits un pushes visām izmaiņām nevis tikai pēdējām

Spēles piemērs:

https://www.youtube.com/watch?v=J3sfsP9W048

image-20220427000551953

Vizuālajam izmantot šīs game sprites - pašam nekas nav jāzīmē:

http://share.yellowrobot.xyz/quick/2022-4-27-EC93CA0E-DB91-475A-B230-156BBC8E3614.zip

TODO

  1. 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). Kad diagrammas ir sagatavotas, iepushot uz evaldsurtans un dot ziņu whatsapp.

  2. Izmanot Python un PyGame vidi

  3. Implementēt spēli OOP (Object Oriented Programming) veidā

    1. 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ē

    2. 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.

    3. Encapsulation - izveidot getters/ setters visām klasēm, member mainīgajiem nepiekļūstam pa no ārpuses

  4. Izmantot design patterns

    1. MVC - Model View Controller

      1. Model - dažādas klases nevis vnk Model - Game state glabājās dataclasses un nesatur funkcijas!

      2. 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

      3. View - PyGame applikācija, saņem UI/IO inputs, klausās controller events un zīmē spēli

    2. 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ā.

    3. 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!)

    4. Factory - pēc izkārtojuma struktūras ģenerēt aliens objektus

  5. Visām python funkcijām und atiem izmantot Typing (definēt tipus)

  6. Kodā visām funkcijām viens input - viens output - nedrīkst būt daudzi return kodā

  7. Visi mainīgie vienā stilā un angļu valodā

  8. Nerakstīt kodu makaronos - pēc iespējas vairāk sadalīt vairākos atsevišķos funkciju izsaukumos

  9. Spēlei fiksēta izmēra logs (nav nepieciešams full-screen)

  10. 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

  11. ⚠️ Spēlē jābūt dažādiem putnu tipiem, kurus šaut

  12. Izmantot environment.yaml failu, lai iestatītu Python vidi ar micromamba, micromamba vai anaconda nevis pip

  13. Izmantojiet konstantes ar aprakstošiem nosaukumiem (piemēram, DUCK_SPEED, MAX_BULLETS) tā vietā, lai izkaisītu “maģiskās” vērtības pa kodu.

  14. Jāpanāk, ka spēle neatkarīgi no datora ātruma strādā vienā atrumā (clock.tick(60) vai delta_time starp kadriem)

  15. Errors jāloggo ar loguru logger.exception() un paziņojums jāizvada konsolē ar logger.info() logger.warning(), logger.error() un logger.debug()

Projekta failu struktūrai jābūt

Piemērs MVC

Model daļa

Actor
position: int
lives: int
Opponent
Player

Controller daļa

ControllerActors
execure_move(actors: List[Actor])
ControllerGame
generate_level(level)

View daļa

UIWindow
sprites_player: Something
sprites_opponent: Something
capture_keyboard_inputs()
main_loop()

Kodam jābūt PEP8 stilā