2023-08-29 Math App Task 5 - CandyCrush

 

Implementēt /mathapp_2023_q1/frontend Jaunu spēles skatu https://github.com/asya-ai/mathapp-algo

 

Designs (invites sent) https://www.figma.com/file/cEcBpfXCgl0e7IBqI4bAnX/Algo-Adventures?type=design&node-id=514-67556&mode=design&t=E71YlTcZlTkvxIqy-0

image-20230829143149615

 

Spēles gaita:

  1. Pašā sākumā ScreenGameCandyCrushIntro (atceries, ka jābūt strings localization)

  2. Parādās ScreenGameCandyCrush, kur fornā ir šūnas un pa virsu ar animāciju parādās elementi pēc kārtas, šakotnēji randomly. ControllerGameCandyCrush.initialize(…) vēlāk pārrakstīsim gudrāku algoritmu, lai nebūtu random izvietojums. Novērst to, ka uzreiz kādi no elementiem savā starpā notīrās rindā. Spēles sarežģītība arī mainīsies no skolēna vecuma (max_turn_count, max_score, min_element_count, cell_points)

  3. Sākumā 0 punkti un dāvaniņa ir aizslēgta

  4. Atkarībā no grūtības tiek iedots gājienu skaits līdz spēle tiek zaudēta, piemēram 10 gājieni (max_turn_count = 10)

  5. Katru reizi, kad tiek veikts gājiens tas tiek atskaitīts

  6. Katru reizi, kad notiek sprādziens, kad viena veida elementi ir rindā salikti, sākot no minimālā skaita elementu (piemēram min_element_count = 3) rinda uzsprāgst, TAD tiek pieskaitīts papildus gājiens, līdz (max_turn_count = 10, nevar to pārsniegt)

  7. Pēc sprādziena ieliek random jaunus elementus, BET nedrīkst ielikt tā, ka uzreiz atkal notiek sprādziens. Aizliegts izmanto while loop meklēšanu, ir jau iepriekš jāaaprēķina kādus elementus drīkst ielikt un tos arī jāieliek no atļautajiem ar

     

  8. Kad sasniegts max_score = 1000, tad spēle beidzas un atveras dāvaniņas poga ar nelielu animāciju - var turpināt spēli vai arī uzspiest uz dāvaniņas un saņemt to un beigt spēli

  9. Vēl spēli var beigt, ja beidzas gājieni

  10. Uzspiežot uz dāvaniņas pogu pārādas popup ComponentGameCandyCrushGiftPopup

  11. Atverot dāvaniņu parādās kāds no GameCandyCrushCell vizuāļiem, velāk ieliksim citus items (tie nonāks lāča inventory)

 

Jāparedz, ka vizual elements, kuri ir GameCandyCrushCell nākotnē būs kustīgi / animēti, lūdzu taisīt atsevišķās componenets katru

 

Selected state nomainās fons un palileinās ar transform mazliet šūna

 

Šajā spēlē nevāc medus punktus, bet tos tērē! tā ir izklaidējoša spēle tikai, kur beigās var dabūt dāvaniņu. Medus punktus vāks aritmētiskajās spēlēs

 

Models classes (atrodas backend)

EnumGameType
..
CANDYCRUSH
Game
...
game_type: GameCandyCrushCell
GameCandyCrush
max_score: int
score: int
max_turn_count: int
turn_count: int
min_element_count: int
game_state: EnumGameCandyCrushState
cells: GameCandyCrushCell[,]
gift: EnumGameCandyCrushCellType
EnumGameCandyCrushState
BEFORE_START,
RUNNING,
WON,
LOST
GameCandyCrushCell
cell_type: EnumGameCandyCrushCellType,
cell_state: EnumGameCandyCrushCellState
cell_points: int
EnumGameCandyCrushCellState
NONE
SELECTED
MOVING
EXPLODING
AFTER_EXPLOSION

Vispirms izveidot datu struktūru, pēc tam loģiku, Nelikt nekādus aprēķinus un pašu spēles loģiku iekš ScreenGameCandyCrush, tikai ControllerGameCandyCrush (static class)