Cubiq
engineering.mdMegvalósítás

Megvalósítás

Cubiq belülről

A kocka minden fordítása mögött saját rendszer áll: matematikai modell, 3D-motor és a lecke céljait figyelembe vevő megoldó. Az Android-alkalmazás Kotlin és Jetpack Compose használatával készült.

Projektpillanatkép

forrás- és szöveges erőforrássor
740 244
alkalmazásmodul
39
fizikai Kotlin-sor a teszteken kívül
136 019
nyelvi változat
42
tesztdeklarációtest* / androidTest* · @Test
1 624

stack.kt

Modern Android-eszközkészlet

Projektpillanatkép
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

A Jetpack Compose és a Material 3 határozza meg a felület komponenseit és témáit. Az Adaptive az ablakméret szerinti elrendezést, a Navigation 3 a navigációt és a képernyők helyreállítását kezeli. Az állapot Coroutines és Flow használatával érkezik; a Hilt összeköti az alkalmazás moduljait.

architecture.kt

Az alkalmazás független rétegei

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%

A felület, a doménszerződések és az adatok külön modulokban vannak; a Hilt köti össze a megvalósításokat. A Compose változtathatatlan állapotot és explicit eseményeket kap. A Room tárolja az előzményeket és a tanulási haladást, a DataStore a beállításokat, a Navigation 3 pedig helyreállítja a szakaszok vermét.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX az Android ajánlásai alapján

A Cubiq a Google által az Apps Experience Program keretében kiemelt megközelítéseket alkalmazza: Compose, adaptív elrendezés és edge-to-edge.

Az ablak méretéhez igazítva
Széles képernyőn az elmélet és a gyakorlat egymás mellett jelenik meg. Kompakt képernyőn a tartalom és a navigáció a rendelkezésre álló helyhez igazodik; az elrendezést az ablak mérete határozza meg.
Natív navigáció
Az Edge-to-edge figyelembe veszi a rendszersávokat és a billentyűzetet. A Navigation 3 megőrzi a szakaszok vermét, és támogatja a Predictive Back funkciót a visszalépés előnézetével.
Olvashatóság és akadálymentesség
A világos és sötét témák, a szöveg méretezése és a navigáció szemantikai címkéi segítik a TalkBack és a billentyűzet használatát. Nagy betűméretnél a szakaszok neve továbbra is elérhető a képernyőolvasó számára.
A Google ajánlásai · Apps Experience Program
OpenGL ES 3.0

engine.glsl

A matematikát követő geometria

moving cubies
26
facelets
54
meshes
8
triangles
2 964

A GLSL shaderek PBR-anyagokat, érdességet és környezeti megvilágítást számítanak. A modell és az animáció összhangban van: a visszalépés az inverz lépést alkalmazza, a kamera pedig figyelembe veszi a panelek közötti szabad helyet.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Kockaállapot / algoritmuslejátszás

A típusos jelölés lépésekké és egységes kockaállapotokká alakul. A renderer sora animálja a rétegfordításokat, megőrizve a darabok és faceletek identitását. Az algoritmus valós lépéssorként játszható le, lejátszással, szünettel és tempóbeállítással.

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

Az előrelépés új lépést animál; a visszalépés az inverz lépést alkalmazza. A pozícióra ugrás helyreállítja az alapjelenetet és a célzott lépéssort. Megszakításkor nem indulnak további lépések; a már elkezdett fordítás befejeződik. Az EGL életciklusa kezeli a pause/release műveleteket; ha GL nem érhető el, a tanulási út 3D nélkül megmarad.

solver.kt

A lecke céljához illő megoldás

  • BFS
  • Beam search
  • F2L

A saját megoldó az aktuális lecke algoritmusaiból és segédlépéseiből készít megoldást. A SolverRequest tartalma: kockaállapot, céldarabok, zárolt célok, engedélyezett algoritmusok, esetek és orientáció. A tervező betartja az oktatási célok sorrendjét, és védi a kirakott darabokat.

A fázisspecifikus tervezés korlátozott BFS-t, nyalábkeresést és F2L-esetfelismerést használ. A validáció ellenőrzi a darabok összetételét, az átfordításokat, elcsavarásokat és a permutáció paritását. A keresési szabályzat korlátozza a mélységet és a nyalábszélességet. A leckeváltás megszakítja a keresést, és kizárja az elavult eredményt.

Az eredmény PracticePlan: lépések, algoritmushivatkozások, megjelenítési és végrehajtási idővonal. A magyarázat megőrzi az oktatási orientációt; a motor a teljes végrehajtási lépéssort kapja. Kimenetek: plan / solved / invalid input / no constrained path.

  1. A kocka állapota
  2. Modellellenőrzés
  3. Tanulási terv
  4. 3D-gyakorlás

content.md

A tartalom a builden is áthalad

Az elmélet 756 Markdown-dokumentumban, a gyakorlat 336 lokalizált forgatókönyvben szerepel. A Gradle ellenőrzi a fordítások szerkezetét és a 316 saját illusztrációra mutató hivatkozásokat. A grafika Blender/Cycles használatával készült; az Android-motor külön procedurális geometriát használ.

workflow.md

Dokumentáció kódként / munka ügynökökkel

AGENTS.md
48
README.md
16

A tárház ügynökökkel végzett fejlesztéshez szervezett: az AGENTS.md hierarchiája meghatározza a felelősségeket, architekturális korlátokat és validációs kapukat; a README.md fájlok a modulok szerződéseit, a KDoc az API-t és az invariánsokat írja le.

Az architektúra, a design és a lokalizáció szerződései a kóddal együtt verziózottak. A PLAN.md rögzíti a terjedelmet és az átadást; szerződésmódosításkor a felelős dokumentáció is frissül. Az ellenőrzés és generálás Gradle használatával történik; a CI mindkét áruházi változatot buildeli.

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%
Minőség és számlálási módszer

A tesztek lefedik a lehetetlen kockaállapotokat, a kirakott rétegek megőrzését, a tanulási terveket, az elavult kérések megszakítását, a munkamenetek helyreállítását és az adatimportot. A CI mindkét áruházi változatot buildeli; a kiadási ellenőrzések kiterjednek az R8-ra, az APK/AAB-ra, az ellenőrző összegekre és a natív könyvtárak 16 KB-os lapokhoz igazítására.

A Kotlin-kód mennyiségét fizikai sorokban számították ki, beleértve a megjegyzéseket, az üres sorokat, a buildSrc-t és a benchmarkkódot, de kihagyva a tesztkönyvtárakat. A tesztek száma 1 343 JVM-deklarációt és 281 Android-deklarációt jelent, nem futtatásokat. A dokumentumok tartalmazzák a tartalék szöveget; egy forgatókönyv megléte nem jelent gyakorlatot minden leckében.

baselineprofile · @Test
3

A teljes szöveg a verziókövetett UTF-8 fájlok fizikai sorait számolja: források, tesztek, XML/JSON-erőforrások, Markdown-tartalom, lokalizáció, dokumentáció, buildeszközök és webes források. A megjegyzések, üres sorok és nyelvi másolatok is szerepelnek. A média, generált és buildkimenetek, külső kód, szolgáltatáskonfiguráció és az ideiglenes PLAN.md kimarad. Ez a projekt szöveges bemenetének mennyisége, nem végrehajtható LOC.

Ismerd meg a Cubiq alkalmazást