Cubiq
engineering.mdToteutus

Toteutus

Cubiq sisältä

Jokainen kuution käännös perustuu omaan järjestelmään: matemaattiseen malliin, 3D-moottoriin ja ratkaisijaan, joka huomioi oppitunnin tavoitteet. Android-sovellus käyttää Kotlin-kieltä ja Jetpack Compose -kirjastoa.

Projektin tilannekuva

lähdekoodin ja tekstiresurssien riviä
740 244
sovellusmoduulia
39
fyysistä Kotlin-riviä testien ulkopuolella
136 019
kielivarianttia
42
testimäärittelyätest* / androidTest* · @Test
1 624

stack.kt

Moderni Android-teknologiapino

Projektin tilannekuva
Kotlin2.4.21
Compose BOM2026.09.00
Material 31.5.0-beta01
Adaptive1.3.0
Navigation 31.2.0
AGP9.4.1
KSP2.3.12
Gradle9.7.0
  • Kotlin
  • Jetpack Compose
  • Material 3
  • Adaptive
  • Navigation 3

Jetpack Compose ja Material 3 määrittävät käyttöliittymän komponentit ja teemat. Adaptive huolehtii asettelusta ikkunan koon mukaan ja Navigation 3 navigoinnista sekä näyttöjen palautuksesta. Tila välittyy Coroutines- ja Flow-tekniikoilla; Hilt yhdistää sovellusmoduulit.

architecture.kt

Sovelluksen riippumattomat kerrokset

app01Hilt / DI
feature07Compose / ViewModel
  • onboarding
  • learning
  • lesson
  • practice
  • progress
  • settings
  • events
domain07contracts / use cases
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
data09repositories / storage
  • content
  • storage
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
core14UI kit / cube / solver
  • common
  • model
  • designsystem
  • uikit
  • navigation
  • analytics
  • crashlytics
  • ads
  • billing
  • push
  • hardware
  • cube
  • scrambleimage
  • solver
baselineprofile01startup / frame timing

feature → domain ← data

modulesΣ 39
  • app1
  • baselineprofile1
  • core14
  • data9
  • domain7
  • feature7
Kotlin · physical LOCΣ 136 019
feature
82 86360.9%
core
21 16715.6%
data
14 34110.5%
app
9 5147.0%
domain
6 7595.0%
buildSrc
9610.7%
baselineprofile
4140.3%

Käyttöliittymä, domain-sopimukset ja tiedot on jaettu eri moduuleihin; Hilt yhdistää toteutukset. Compose saa muuttumattoman tilan ja eksplisiittiset tapahtumat. Room tallentaa historian ja oppimisen edistymisen, DataStore asetukset ja Navigation 3 palauttaa osioiden pinot.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX Androidin suositusten mukaan

Cubiq toteuttaa Googlen Apps Experience Program -ohjelmassa esiin nostamia ratkaisuja: Compose, mukautuva asettelu ja edge-to-edge.

Ikkunan koon mukaan
Leveällä näytöllä teoria ja harjoittelu näkyvät vierekkäin. Kompaktilla näytöllä sisältö ja navigointi mukautuvat käytettävissä olevaan tilaan; ikkunan koko määrää asettelun.
Natiivi navigointi
Edge-to-edge huomioi järjestelmäpalkit ja näppäimistön. Navigation 3 säilyttää osioiden pinot ja tukee Predictive Back -toimintoa paluusiirtymän esikatselulla.
Luettavuus ja saavutettavuus
Vaalea ja tumma teema, tekstin skaalaus sekä navigoinnin semanttiset tunnisteet auttavat käyttämään sovellusta TalkBack-toiminnolla ja näppäimistöllä. Suurella fontilla osioiden nimet pysyvät ruudunlukijan saatavilla.
Googlen suositukset · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Matematiikkaa seuraava geometria

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL-varjostimet laskevat PBR-materiaalit, karheuden ja ympäristövalaistuksen. Malli ja animaatio toimivat yhdessä: askel taaksepäin tekee käänteisen siirron, ja kamera huomioi paneelien välisen vapaan tilan.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Kuution tila / algoritmin toisto

Tyypitetty merkintätapa muunnetaan siirroiksi ja yhtenäisiksi kuutiotiloiksi. Rendererin jono animoi kerrosten käännökset säilyttäen palojen ja faceletien identiteetit. Algoritmi toistetaan todellisena siirtosarjana toiston, tauon ja temponsäädön kanssa.

  1. Notation
  2. Cube state
  3. Move queue
  4. OpenGL ES 3.0

Askel eteenpäin animoi uuden siirron; askel taaksepäin käyttää käänteistä siirtoa. Paikkaan siirtyminen palauttaa pohjakohtauksen ja kohdesarjan. Peruutus lopettaa uusien siirtojen antamisen; aloitettu käännös päättyy. EGL-elinkaari hoitaa pause/release-toiminnot; ilman GL-tukea oppimispolku toimii edelleen ilman 3D-näkymää.

solver.kt

Ratkaisu oppitunnin tavoitteisiin

  • BFS
  • Beam search
  • F2L

Oma ratkaisija rakentaa ratkaisun nykyisen oppitunnin algoritmeista ja apusiirroista. SolverRequest sisältää kuution tilan, kohdepalat, lukitut kohteet, sallitut algoritmit, tapaukset ja orientaation. Suunnittelija noudattaa oppimistavoitteiden järjestystä ja suojaa ratkaistut palat.

Vaihekohtainen suunnittelu käyttää rajattua BFS-hakua, keilahakua ja F2L-tapausten tunnistusta. Validointi tarkistaa palakoostumuksen, käännökset, kiertymät ja permutaatiopariteetin. Hakukäytäntö rajoittaa syvyyttä ja keilan leveyttä. Oppitunnin vaihto peruu haun ja estää vanhentuneen tuloksen.

Tulos on PracticePlan: askeleet, algoritmiviitteet, näyttöaikajana ja suoritusaikajana. Selitys säilyttää oppimisorientaation; moottori saa koko suoritussarjan. Tulokset: plan / solved / invalid input / no constrained path.

  1. Kuution tila
  2. Mallin tarkistus
  3. Oppimissuunnitelma
  4. 3D-harjoitus

content.md

Sisältö kulkee koontiprosessin läpi

Teoria on 756 Markdown-dokumentissa ja harjoittelu on määritelty 336 lokalisoidussa skenaariossa. Gradle tarkistaa käännösten rakenteen ja viittaukset 316 omaan kuvitukseen. Grafiikka valmisteltiin Blender/Cycles-ohjelmistolla; Android-moottori käyttää erillistä proseduraalista geometriaa.

workflow.md

Dokumentaatio koodina / työ agenttien kanssa

AGENTS.md
48
README.md
16

Tietovarasto on järjestetty agenttien kanssa tehtävään kehitykseen: AGENTS.md-hierarkia määrää vastuut, arkkitehtuurirajoitteet ja validointiportit; README.md-tiedostot kuvaavat moduulisopimukset, KDoc API-rajapinnat ja invariantit.

Arkkitehtuuri-, design- ja lokalisointisopimuksia versioidaan koodin rinnalla. PLAN.md kirjaa laajuuden ja työn luovutuksen; sopimusmuutokset päivittävät omistavan tahon dokumentaation. Tarkistukset ja generointi kulkevat Gradle-työkalun kautta; CI kokoaa molemmat kauppaversiot.

physical text linesΣ 740 244
Resources / localization
399 56854.0%
Kotlin · non-test
136 01918.4%
Lesson Markdown
132 64217.9%
Kotlin · JVM tests
46 6456.3%
Kotlin · Android tests
13 6361.8%
Build tooling / web
8 9851.2%
Documentation
2 7490.4%
Laatu ja laskentamenetelmä

Testit kattavat mahdottomat kuutiotilat, ratkaistujen kerrosten säilyttämisen, oppimissuunnitelmat, vanhentuneiden pyyntöjen perumisen, istuntojen palauttamisen ja tietojen tuonnin. CI kokoaa molemmat kauppaversiot; julkaisutarkistuksiin kuuluvat R8, APK/AAB, tarkistussummat ja natiivikirjastojen kohdistus 16 KB:n sivuille.

Kotlin-koodin määrä lasketaan fyysisinä riveinä, mukaan lukien kommentit, tyhjät rivit, buildSrc ja benchmark-koodi, ilman testihakemistoja. Testimäärä tarkoittaa 1 343 JVM-määrittelyä ja 281 Android-määrittelyä, ei suorituskertoja. Dokumentit sisältävät varatekstin; skenaarion olemassaolo ei tarkoita harjoitusta jokaisella oppitunnilla.

baselineprofile · @Test
3

Kokonaisteksti laskee fyysiset rivit versionhallinnan UTF-8-tiedostoista: lähteistä, testeistä, XML/JSON-resursseista, Markdown-sisällöstä, lokalisoinnista, dokumentaatiosta, koontityökaluista ja verkkolähteistä. Kommentit, tyhjät rivit ja kielikopiot sisältyvät. Media, generoidut ja koontitulokset, toimittajakoodi, palveluasetukset ja tilapäinen PLAN.md eivät sisälly. Tämä mittaa projektin tekstisyötteitä, ei suoritettavaa LOC-määrää.

Tutustu Cubiqiin