2024-01-11 Meeting #5

 

 

Repo, un notes: https://github.com/Arthur-Arthur-Arthur/bsc-de-uq-tab

 

TODO:

  1. Klasifikācija uz kādām klasēm un datu balanss?

  2. SOTA rezultāti? Vai tiešām nav citu publikāciju, kas izmanto?

image-20240111170710989

  1. Uzlabot un sarakstīt SLR tabulas

  2. SLR tabulās numurēt pētījumus, pirmajā tabulā ar cite keys, bet pēc tam tikai ar numerāciju

  3. Ja tabulas platas uzstādīt konkrētām lapām latex landscape

  4. Izmantot Excel2Latex plugin korekti

  5. RTU jaunais cite stils pieejams šeit:

     

  6. Sagatavot torch dataset un vismaz vienu metodi github, ar pandas sagatavot plots un datus (histogrammas, mean, std etc) priekš datu kopas nodaļas, salikt jau tajā http://share.yellowrobot.xyz/quick/2024-1-11-8B9BCDD6-C883-4FC5-B546-E36C65EA6850.html

  7. Teorētiskajā daļā izmantot materiālus no šiem http://share.yellowrobot.xyz/quick/2024-1-11-B76D7A48-E41E-405A-BA90-6E6DAE2BC169.html

  8. Zemāk Python design_patterns kurss, tos darbus lūdzu pievieno folderos GIT piemēram ./design_patterns_1 utt, tas būtu nozīmīgi tālākai sadarbībai un arī esošā koda kvalitātes celšānai


 

2023-Q4-DesignPatterns 1. Ievads, Python, Object-Oriented Programming (OOP), UML

 

1.1. Video / Materiāli

Video: https://youtube.com/live/fY7jVFYhLRs?feature=share

Jamboard: https://jamboard.google.com/d/1wCSNI5tJVJ60jbTSeoE7BsCry-MdfmtpeSnb5CUGk-E/edit?usp=sharing

Design Patterns Book: http://share.yellowrobot.xyz/quick/2023-9-6-9D54BEEF-ECEB-4C37-AC3E-2B2EF475ED31.pdf

 

1.2. Sagatavot vidi darbam

Pirms kursa uzsākšanas nepieciešams:

  1. Uzinstalēt pycharm izstrādes vidi: https://www.jetbrains.com/pycharm/

  2. Uzinstalēt Anaconda 3.9 Python package vidi: https://www.anaconda.com/products/individual

  3. Uzinstalēt pytorch bibliotēku, izmantojot conda packager (mājaslapā tiek ģenerēta attiecīgā komanda katrai OS: https://pytorch.org). Komanda bez CUDA compatible GPU būs: conda install pytorch torchvision -c pytorch

  4. Uzinstalēt SkLearn ar komandu: conda install scikit-learn un matplotlib ar: conda install matplotlib

  5. Palaist hello_world.py piemēru (pielikumā), izmantojot PyCharm programmu (veiksmīgas palaišanas gadījumā varēsiet pārliecināties, ka bibliotēkas strādā)

Vairāk par Anaconda environments / vidēm:

  1. Izveido vidi: conda create --name tavs_vards

  2. Aktivizē vidi: conda activate tavs_vards

  3. Tad instalē bibliotēkas. PyCharm arī tev kā python interpreter ir jāizvēlas vide tavs_vards Vairāk par conda envs var palasīt: https://towardsdatascience.com/getting-started-with-python-environments-using-conda-32e9f2779307

  4. Nepieciešams uzinstalēt pygame un numpy bibliotēkas

Sagatave: http://share.yellowrobot.xyz/quick/2023-9-7-C879F887-7302-4A7F-8C5B-39B7BAAEE3AB.zip

%

1.3. Implementēt funkciju python un iesniegt failu

Implementēt funkciju f(x,b) Nedrīkst izmantot, jau gatavu funkciju (onliner). Nedrīkst izmantot numpy vai citas bibliotēkas, tikai tīru python kodu.

Iesniegt pirmkodu un screenshot, papildus bonus, ja izmanto rekursiju

Izveidotot kodu sekojošam vienādojumam: http://share.yellowrobot.xyz/upic/df7e6c9b6b8f880de6ee2d3e5b740e75_1673883820.png

(1)f(x,b)=(xb+b)(xb1+b1)(xb2+b2)(x0+0)

 

 

1.4. Implementēt Python doto UML klašu diagrammu

Implementēt UML diagramā doto shēmu Python valodā un vienā failā iesniegt līdz ar uzdevumu. Papildus punkti, implementējot PyGame balstītu spēli balstoties uz resursiem: http://share.yellowrobot.xyz/upic/3e0d221ee88cc879353110c263eae6c4_1694030991.png

Shēma: http://share.yellowrobot.xyz/upic/46175827e374b23b19f988e61f2b1ba2_1694030930.png

Interface Python valodā implementē ar ABCMeta un @abstractmethod. Implementēt tikai getters un setters, pārējās funkcijas atstāt tukšas ar pass,

piemēram. class Game: def new_game(self): pass


 

2023-Q4-DesignPatterns 2. Model View Controller, PyGame

 

2.1. Video / Materiāli

Video: https://youtube.com/live/EqL5HCE1a-E?feature=share

Jamboard: https://jamboard.google.com/d/1mAAy9bDMLUsyoQ7FJTlrwiRN3baemz624tCgaxoq4gI/edit?usp=sharing

Materials: https://realpython.com/pygame-a-primer/

https://www.tutorialspoint.com/python_design_patterns/python_design_patterns_model_view_controller.htm

 

  1. Check mājasdarbus

  2. Instalēt pygame, dataclasses-json

  3. Parādīt Enums

  4. Parādīt piemēru kā serializēt dataclass temp.py

  5. Parādīt piemēru pygame

  6. Implementēt 2.2

  7. Kamēr viņi implementē, implementēt pašam 2.3

 

 

2.2. Implementēt MVC balstītu spēles truktūru

Implementēt TODO un UML shēmu: http://share.yellowrobot.xyz/upic/8734c0d130fd735370f25b7f6dd6e1d0_1694639166.png

Iegūt sekojošu rezultātu: http://share.yellowrobot.xyz/upic/522c87cb595310c6495273b1aea5283e_1694638538.png

Sagatave: http://share.yellowrobot.xyz/quick/2023-9-13-06471100-6D2C-4ABA-97FA-7AAEBE39AB35.zip

Iesniegt pirmkodu un screenshots ZIP formātā

 

uses
Game
map_size: Tuple[int,int]
game_objects: List[GameObject]
level: int
score: int
GameObject
position: Tuple[int, int]
game_object_type: EnumGameObjectType
animation_frame: int
animation_frame_max: int
animation_frame_duration: float
animation_frame_duration_max: float
animation_is_animating: bool
«enumeration»
EnumGameObjectType
NotSet
Player
Forest
Water
Brick
Steel
ControllerGame
static new_game() : Game
static update_player_movement(game: Game, move_direction: Tuple[int, int])
WindowMain
game_components: List[ComponentGameObject]
ComponentGameObject
game_object: GameObject

 

2.3. Implementēt spēlētāja tanka vadību

  1. Impementēt jaunu klasi ComponentTank, kas pārmantota no ComponentGameObject, UML shēma:

    http://share.yellowrobot.xyz/upic/ef642379019e6be4b1b2e44870d3a1fd_1695277114.png

  2. Pievienot dzelteno tanku no pozīcijas (0,0) un (1,0), (0,2) un (0,3) un pārējos virzienos, battle_city_sprites.png.

  3. Implementēt, ka ar bultiņām var braukt pa karti.

  4. Kamēr tanks brauc animācija strāda starp 2 kadriem, kad tanks apstājies animācija arī apstājas

  5. Neļaut uzbraukt uz citiem šķēršļiem

  6. Neļaut izbraukt ārā no kartes

Rezultātam aptuveni jāizskatās šādi (ievērot, ka braucot tanks animējas, bet atlaižot pogas stāv) http://share.yellowrobot.xyz/quick/2023-9-14-6FBC9587-66CD-42AC-803A-AD86EE337955.mp4

Iesniegt pirmkodu un screenshots ZIP formātā

image-20230921091833603

Model
View
Controller
uses
uses
Game
map_size: Tuple[int,int]
game_objects: List[GameObject]
level: int
score: int
GameObject
position: List[float]
game_object_type: EnumGameObjectType
direction: EnumGameObjectDirection
movement_speed: float = 1e-3
animation_frame: int
animation_frame_max: int
animation_frame_duration: float
animation_frame_duration_max: float
animation_is_animating: bool
«enumeration»
EnumGameObjectType
NotSet
Player
Forest
Water
Brick
Steel
Player
«enumeration»
EnumGameObjectDirection
NotSet
Up
Down
Left
Right
ComponentGameObject
game_object: GameObject
update(delta_milisec:float)
render(screen: Surface)
WindowMain
game_components: List[ComponentGameObject]
ComponentTank
update(delta_milisec:float)
ControllerGame
static new_game() : Game
static update(game: Game, delta_time: float)
ControllerTank
static update(tank: GameObject, delta_time: float)
static set_direction(tank: GameObject, direction: EnumGameObjectDirection)

 


 

2023-Q4-DesignPatterns 3. Observer

 

3.1. Video / Materiāli

Video: https://youtube.com/live/PdjImgpEhV8?feature=share

Jamboard: https://jamboard.google.com/d/1O6tMHlys491hx0Jqlt985Yv9r0M-RZy9Rjc7IUWJhCU/edit?usp=sharing

 

3.2. Implementēt observer pattern un izveidot WindowMenu ar pogām

Implementēt observer pattern un izveidot WindowMenu ar funkcionējošu pogu start game

Iesniegt pirmkodu un screenshots.

Sagatave: http://share.yellowrobot.xyz/quick/2023-9-21-3FEBF5F5-DF5C-4706-97B1-7393695DAF0A.zip

 

WindowMenu
ui_components: List[ComponentButton]
on_click_start_game()
on_click_load_game()
on_click_save_game()
on_click_quit_game()
ComponentButton
listeners_on_click: List[callable]
add_listener_click(callback: callable)
remove_listener_click(callback: callable)
remove_all_listeners()

 

 

3.3 Pabeigt Observer implementāciju

Balstoties uz 2.2. pirmkodu:

  1. Implementēt līdz galam UML diagrammu http://share.yellowrobot.xyz/upic/a2748ba86d7d051e818b585d6a05c622_1695315692.png

  2. Implementēt, ka uzpsiežot “Quit game” tiek noņemti nost notikumu klausītāji no visām pogām (izmantojot remove_listener_click)

  3. Implementēt, ka ar pogu “Save game”, lai spēles saturs WindowMain game tiktu saglabāts JSON formātā https://pypi.org/project/dataclasses-json/ game.json

  4. Extra punkti, implementējot “Load game”, ka spēli var atjaunot no stāvkoļa, kurā tā tika saglabāta

Iesniegt pirmkodu un serializēto JSON failu.