Cubiq
engineering.mdImplementering

Implementering

Inde i Cubiq

Hver drejning af terningen bygger på et eget system: en matematisk model, en 3D-motor og en løser, der tager hensyn til lektionens mål. Android-appen bruger Kotlin og Jetpack Compose.

Projektøjebliksbillede

linjer kildekode og tekstressourcer
740 244
appmoduler
39
fysiske Kotlin-linjer uden for tests
136 019
sprogvarianter
42
testdeklarationertest* / androidTest* · @Test
1 624

stack.kt

Moderne Android-stack

Projektøjebliksbillede
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 og Material 3 definerer brugerfladens komponenter og temaer. Adaptive håndterer layout efter vinduesstørrelse, og Navigation 3 håndterer navigation og gendannelse af skærme. Tilstanden kommer via Coroutines og Flow; Hilt forbinder appmodulerne.

architecture.kt

Uafhængige lag i appen

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%

Brugerflade, domænekontrakter og data ligger i separate moduler; Hilt forbinder implementeringerne. Compose modtager uforanderlig tilstand og eksplicitte hændelser. Room gemmer historik og læringsfremskridt, DataStore indstillinger, og Navigation 3 gendanner sektionernes stakke.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX efter Androids anbefalinger

Cubiq bruger tilgange, som Google fremhæver i Apps Experience Program: Compose, adaptivt layout og edge-to-edge.

Efter vinduesstørrelse
På en bred skærm vises teori og praksis side om side. På en kompakt skærm tilpasses indhold og navigation til den tilgængelige plads; vinduesstørrelsen bestemmer layoutet.
Native navigation
Edge-to-edge tager hensyn til systembjælker og tastaturet. Navigation 3 bevarer sektionernes stakke og understøtter Predictive Back med en forhåndsvisning af overgangen tilbage.
Læsbarhed og tilgængelighed
Lyse og mørke temaer, tekstskalering og semantiske navigationsetiketter hjælper ved brug med TalkBack og tastatur. Ved stor skrifttype er sektionernes navne stadig tilgængelige for skærmlæseren.
Googles anbefalinger · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometri, der følger matematikken

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL-shadere beregner PBR-materialer, ruhed og omgivelsesbelysning. Model og animation er synkroniseret: et skridt tilbage udfører det omvendte træk, og kameraet tager hensyn til pladsen mellem panelerne.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Terningtilstand / formelafspilning

Typet notation omdannes til træk og sammenhængende terningtilstande. Rendererens kø animerer lagdrejninger og bevarer identiteten af dele og facelets. Formlen afspilles som en sekvens af virkelige træk med afspilning, pause og tempojustering.

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

Et skridt frem animerer et nyt træk; et skridt tilbage anvender det omvendte træk. Spring til en position gendanner basisscenen og målsekvensen. Annullering stopper udsendelsen af flere træk; en påbegyndt drejning fuldføres. EGL-livscyklussen håndterer pause/release; uden GL forbliver læringsforløbet tilgængeligt uden 3D.

solver.kt

Løsninger til lektionens mål

  • BFS
  • Beam search
  • F2L

Den egenudviklede løser bygger en løsning af den aktuelle lektions formler og hjælpetræk. SolverRequest indeholder terningtilstand, måldele, låste mål, tilladte formler, tilfælde og orientering. Planlæggeren følger læringsmålenes rækkefølge og beskytter løste dele.

Fasespecifik planlægning bruger begrænset BFS, strålesøgning og genkendelse af F2L-tilfælde. Validering kontrollerer delenes sammensætning, vendinger, drejninger og permutationsparitet. Søgepolitikken begrænser dybde og strålebredde. Lektionsskift annullerer søgningen og forhindrer et forældet resultat.

Resultatet er PracticePlan: trin, formelreferencer, en visningstidslinje og en udførelsestidslinje. Forklaringen bevarer læringsorienteringen; motoren modtager hele udførelsessekvensen. Udfald: plan / solved / invalid input / no constrained path.

  1. Terningens tilstand
  2. Modelvalidering
  3. Læringsplan
  4. 3D-øvelse

content.md

Indholdet går gennem buildprocessen

Teorien ligger i 756 Markdown-dokumenter, og øvelserne er defineret i 336 lokaliserede scenarier. Gradle kontrollerer oversættelsernes struktur og henvisninger til 316 originale illustrationer. Grafikken blev forberedt i Blender/Cycles; Android-motoren bruger separat procedurel geometri.

workflow.md

Dokumentation som kode / arbejde med agenter

AGENTS.md
48
README.md
16

Repositoryet er organiseret til udvikling med agenter: AGENTS.md-hierarkiet angiver ansvar, arkitekturbegrænsninger og valideringskontroller; README.md beskriver modulkontrakter, KDoc API og invarianter.

Arkitektur-, design- og lokaliseringskontrakter versionsstyres sammen med koden. PLAN.md registrerer omfang og overdragelse; kontraktændringer opdaterer den ansvarlige dokumentation. Kontroller og generering går gennem Gradle; CI bygger begge butiksvarianter.

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%
Kvalitet og optællingsmetode

Tests dækker umulige terningtilstande, bevarelse af løste lag, læringsplaner, annullering af forældede anmodninger, gendannelse af sessioner og dataimport. CI bygger begge butiksvarianter; udgivelseskontroller omfatter R8, APK/AAB, kontrolsummer og justering af native-biblioteker til sider på 16 KB.

Kotlin-omfanget tæller fysiske linjer, inklusive kommentarer, tomme linjer, buildSrc og benchmarkkode, uden testmapper. Testantallet betyder 1 343 JVM-deklarationer og 281 Android-deklarationer, ikke kørsler. Dokumenterne inkluderer reservetekst; et scenarie betyder ikke, at hver lektion har en øvelse.

baselineprofile · @Test
3

Den samlede tekst tæller fysiske linjer i versionsstyrede UTF-8-filer: kildekode, tests, XML/JSON-ressourcer, Markdown-indhold, lokalisering, dokumentation, buildværktøjer og webkilder. Kommentarer, tomme linjer og sprogkopier er med. Medier, genererede og buildoutput, tredjepartskode, tjenestekonfiguration og midlertidig PLAN.md er udeladt. Dette måler projektets tekstinput, ikke eksekverbare LOC.

Udforsk Cubiq