Cubiq
engineering.mdImplementacija

Implementacija

Cubiq od znotraj

Za vsakim zasukom kocke stoji lasten sistem: matematični model, 3D pogon in reševalnik, ki upošteva cilje lekcije. Aplikacija za Android uporablja Kotlin in Jetpack Compose.

Posnetek projekta

vrstic izvorne kode in besedilnih virov
740 244
modulov aplikacije
39
fizičnih vrstic Kotlin zunaj testov
136 019
jezikovne različice
42
deklaracij testovtest* / androidTest* · @Test
1 624

stack.kt

Sodoben nabor tehnologij Android

Posnetek projekta
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 in Material 3 določata komponente in teme vmesnika. Adaptive ureja razporeditev glede na velikost okna, Navigation 3 pa navigacijo in obnovo zaslonov. Stanje prihaja prek Coroutines in Flow; Hilt povezuje module aplikacije.

architecture.kt

Neodvisne plasti aplikacije

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%

Vmesnik, domenske pogodbe in podatki so v ločenih modulih; Hilt poveže implementacije. Compose prejme nespremenljivo stanje in eksplicitne dogodke. Room hrani zgodovino in učni napredek, DataStore nastavitve, Navigation 3 pa obnovi sklade razdelkov.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX po priporočilih za Android

Cubiq uporablja pristope, ki jih Google izpostavlja v Apps Experience Program: Compose, prilagodljiva razporeditev in edge-to-edge.

Glede na velikost okna
Na širokem zaslonu sta teorija in praksa druga ob drugi. Na kompaktnem zaslonu se vsebina in navigacija prilagajata razpoložljivemu prostoru; razporeditev določa velikost okna.
Izvorna navigacija
Edge-to-edge upošteva sistemske vrstice in tipkovnico. Navigation 3 ohranja sklade razdelkov in podpira Predictive Back s predogledom povratnega prehoda.
Berljivost in dostopnost
Svetla in temna tema, spreminjanje velikosti besedila ter semantične oznake v navigaciji pomagajo pri uporabi aplikacije s TalkBack in tipkovnico. Pri veliki pisavi imena razdelkov ostanejo dostopna bralniku zaslona.
Priporočila Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometrija, ki sledi matematiki

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL senčilniki izračunajo materiale PBR, hrapavost in osvetlitev okolja. Model in animacija sta usklajena: korak nazaj izvede obratno potezo, kamera pa upošteva prostor med ploščami.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Stanje kocke / predvajanje formul

Tipiziran zapis se pretvori v poteze in usklajena stanja kocke. Vrsta rendererja animira zasuke plasti ter ohrani identiteto delov in faceletov. Formula se predvaja kot zaporedje dejanskih potez, s predvajanjem, premorom in nastavitvijo tempa.

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

Korak naprej animira novo potezo; korak nazaj uporabi obratno potezo. Premik na položaj obnovi osnovni prizor in ciljno zaporedje. Preklic ustavi izdajanje naslednjih potez; začeti zasuk se dokonča. Življenjski cikel EGL obravnava pause/release; brez GL ostane učna pot dostopna brez 3D.

solver.kt

Rešitev glede na cilje lekcije

  • BFS
  • Beam search
  • F2L

Lasten reševalnik sestavi rešitev iz formul in pomožnih potez trenutne lekcije. SolverRequest vsebuje stanje kocke, ciljne dele, zaklenjene cilje, dovoljene formule, primere in orientacijo. Načrtovalnik upošteva vrstni red učnih ciljev in varuje že sestavljene dele.

Načrtovanje po fazah uporablja omejen BFS, iskanje s snopom in prepoznavanje primerov F2L. Validacija preveri sestavo delov, preobrate, zasuke in pariteto permutacij. Pravila iskanja omejijo globino in širino snopa. Menjava lekcije prekliče iskanje in prepreči zastarel rezultat.

Rezultat je PracticePlan: koraki, sklici na formule, časovnica prikaza in časovnica izvajanja. Razlaga ohrani učno orientacijo; pogon prejme celotno zaporedje izvajanja. Izidi: plan / solved / invalid input / no constrained path.

  1. Stanje kocke
  2. Preverjanje modela
  3. Učni načrt
  4. 3D vaja

content.md

Vsebina gre skozi gradnjo

Teorija je v 756 dokumentih Markdown, praksa pa v 336 lokaliziranih scenarijih. Gradle preveri strukturo prevodov in sklice na 316 avtorskih ilustracij. Grafika je pripravljena v Blender/Cycles; pogon za Android uporablja ločeno proceduralno geometrijo.

workflow.md

Dokumentacija kot koda / delo z agenti

AGENTS.md
48
README.md
16

Repozitorij je organiziran za razvoj z agenti: hierarhija AGENTS.md določa odgovornosti, arhitekturne omejitve in validacijske preglede; README.md opisujejo pogodbe modulov, KDoc API in invariante.

Pogodbe arhitekture, oblikovanja in lokalizacije se verzionirajo ob kodi. PLAN.md beleži obseg in predajo dela; spremembe pogodb posodobijo pristojno dokumentacijo. Preverjanje in generiranje potekata prek Gradle; CI gradi obe različici za trgovini.

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%
Kakovost in metodologija štetja

Testi zajemajo nemogoča stanja kocke, ohranjanje sestavljenih plasti, učne načrte, preklic zastarelih zahtev, obnovo sej in uvoz podatkov. CI gradi obe različici za trgovini; preverjanje izdaje vključuje R8, APK/AAB, kontrolne vsote in poravnavo native knjižnic za strani 16 KB.

Obseg Kotlin se šteje v fizičnih vrsticah, vključno s komentarji, praznimi vrsticami, buildSrc in benchmark kodo, brez testnih imenikov. Število testov pomeni 1 343 deklaracij JVM in 281 deklaracij Android, ne izvedb. Dokumenti vključujejo nadomestno besedilo; prisotnost scenarija ne pomeni vaje v vsaki lekciji.

baselineprofile · @Test
3

Skupno besedilo šteje fizične vrstice v sledenih datotekah UTF-8: izvorni kodi, testih, virih XML/JSON, vsebini Markdown, lokalizaciji, dokumentaciji, gradnih orodjih in spletnih virih. Vključuje komentarje, prazne vrstice in jezikovne kopije. Izključuje medije, generirane in gradne izhode, kodo dobaviteljev, konfiguracije storitev in začasni PLAN.md. To je obseg besedilnih vhodov projekta, ne izvršljivi LOC.

Spoznaj Cubiq