Cubiq
engineering.mdImplementasyon

Implementasyon

Sa loob ng Cubiq

Bawat ikot ng cube ay umaasa sa sariling sistema: isang modelong matematikal, 3D engine, at solver na isinasaalang-alang ang mga layunin ng aralin. Gumagamit ng Kotlin at Jetpack Compose ang Android app.

Snapshot ng proyekto

linya ng source at mga text resource
740 244
modyul ng app
39
pisikal na linya ng Kotlin sa labas ng mga test
136 019
baryante ng wika
42
deklarasyon ng testtest* / androidTest* · @Test
1 624

stack.kt

Modernong Android stack

Snapshot ng proyekto
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

Itinatakda ng Jetpack Compose at Material 3 ang mga component at tema ng interface. Inaayos ng Adaptive ang layout ayon sa laki ng window, at pinangangasiwaan ng Navigation 3 ang navigation at pagpapanumbalik ng mga screen. Dumarating ang estado sa pamamagitan ng Coroutines at Flow; ikinokonekta ng Hilt ang mga modyul ng app.

architecture.kt

Mga hiwalay na layer ng app

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%

Magkakahiwalay na modyul ang interface, mga domain contract, at data; ikinokonekta ng Hilt ang mga implementasyon. Tumatanggap ang Compose ng hindi nababagong estado at mga tahasang event. Iniimbak ng Room ang kasaysayan at progreso, ng DataStore ang mga setting, at ibinabalik ng Navigation 3 ang mga stack ng seksiyon.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX ayon sa mga rekomendasyon ng Android

Gumagamit ang Cubiq ng mga paraang binibigyang-diin ng Google sa Apps Experience Program: Compose, adaptive na layout, at edge-to-edge.

Ayon sa laki ng window
Sa malapad na screen, magkatabi ang teorya at pagsasanay. Sa compact na screen, umaangkop ang nilalaman at navigation sa available na espasyo; ang laki ng window ang nagtatakda ng layout.
Native na navigation
Isinasaalang-alang ng Edge-to-edge ang mga system bar at keyboard. Pinapanatili ng Navigation 3 ang mga stack ng seksiyon at sinusuportahan ang Predictive Back na may preview ng paglipat pabalik.
Pagiging madaling basahin at accessibility
Nakakatulong ang light at dark na tema, pagbabago ng laki ng teksto, at mga semantic label sa navigation sa paggamit ng app gamit ang TalkBack at keyboard. Kapag malaki ang font, nababasa pa rin ng screen reader ang mga pangalan ng seksiyon.
Mga rekomendasyon ng Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometry na sumusunod sa matematika

moving cubies
26
facelets
54
meshes
8
triangles
2 964

Kinakalkula ng mga GLSL shader ang mga PBR material, gaspang, at ilaw mula sa kapaligiran. Magkatugma ang modelo at animation: inilalapat ang kabaligtarang galaw kapag umaatras ng isang hakbang, at isinasaalang-alang ng camera ang espasyo sa pagitan ng mga panel.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Estado ng cube / pag-play ng formula

Ginagawang mga galaw at magkakatugmang estado ng cube ang typed notation. Ina-animate ng renderer queue ang mga ikot ng layer habang pinapanatili ang identidad ng mga piraso at facelet. Pinapatakbo ang formula bilang sunod-sunod na tunay na galaw, na may play, pause, at pagsasaayos ng tempo.

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

Nag-a-animate ng bagong galaw ang pag-abante; inilalapat ang kabaligtarang galaw sa pag-atras. Ibinabalik ng pagtalon sa posisyon ang base scene at target na pagkakasunod-sunod. Pinatitigil ng pagkansela ang pagpapadala ng susunod na galaw; natatapos ang ikot na nagsimula na. Pinangangasiwaan ng EGL lifecycle ang pause/release; kung walang GL, magagamit pa rin ang pag-aaral nang walang 3D.

solver.kt

Solusyon para sa mga layunin ng aralin

  • BFS
  • Beam search
  • F2L

Bumubuo ang sariling solver ng solusyon mula sa mga formula at pantulong na galaw ng kasalukuyang aralin. Kasama sa SolverRequest ang estado ng cube, target na piraso, naka-lock na target, pinapayagang formula, mga case, at oryentasyon. Sinusunod ng planner ang pagkakasunod-sunod ng mga layunin at pinoprotektahan ang mga pirasong nalutas na.

Gumagamit ang pagpaplano ayon sa phase ng bounded BFS, beam search, at pagkilala sa mga F2L case. Sinusuri ng validation ang komposisyon ng mga piraso, flips, twists, at permutation parity. Nililimitahan ng search policy ang depth at beam width. Kinakansela ng pagpapalit ng aralin ang paghahanap at hinahadlangan ang lumang resulta.

PracticePlan ang resulta: mga hakbang, formula reference, display timeline, at execution timeline. Pinapanatili ng paliwanag ang oryentasyon sa pag-aaral; natatanggap ng engine ang buong pagkakasunod-sunod ng execution. Mga kinalabasan: plan / solved / invalid input / no constrained path.

  1. Estado ng cube
  2. Pagsusuri ng modelo
  3. Plano ng pag-aaral
  4. 3D na pagsasanay

content.md

Dumadaan sa build ang nilalaman

Nakaimbak ang teorya sa 756 dokumentong Markdown, at nakatakda ang pagsasanay sa 336 senaryong isinalin sa iba't ibang wika. Sinusuri ng Gradle ang istruktura ng mga salin at mga sanggunian sa 316 orihinal na ilustrasyon. Inihanda ang graphics sa Blender/Cycles; gumagamit ang Android engine ng hiwalay na procedural geometry.

workflow.md

Dokumentasyon bilang code / daloy ng agent

AGENTS.md
48
README.md
16

Nakaayos ang repository para sa pagde-develop gamit ang mga agent: itinatakda ng hierarchy ng AGENTS.md ang mga responsibilidad, limitasyon sa architecture, at validation gate; inilalarawan ng README.md ang mga kontrata ng modyul, ng KDoc ang API at mga invariant.

Naka-version kasama ng code ang mga kontrata ng architecture, design, at localization. Itinatala ng PLAN.md ang saklaw at handoff; ina-update ng pagbabago sa kontrata ang dokumentasyon ng may-ari nito. Dumadaan sa Gradle ang mga check at generation; binu-build ng CI ang parehong store variant.

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%
Kalidad at paraan ng pagbibilang

Saklaw ng mga test ang imposibleng estado ng cube, pagpapanatili ng mga nalutas na layer, mga plano sa pag-aaral, pagkansela ng mga lumang request, pagpapanumbalik ng session, at pag-import ng data. Binu-build ng CI ang parehong store variant; kasama sa pagsusuri ng release ang R8, APK/AAB, checksum, at pag-align ng mga native library para sa 16 KB na page.

Binibilang ang Kotlin sa pisikal na linya, kasama ang mga komento, blankong linya, buildSrc, at benchmark code, maliban sa mga direktoryo ng test. Ang bilang ng test ay 1 343 deklarasyon sa JVM at 281 deklarasyon sa Android, hindi dami ng pagpapatakbo. Kasama sa mga dokumento ang fallback text; hindi nangangahulugang may pagsasanay sa bawat aralin ang pagkakaroon ng senaryo.

baselineprofile · @Test
3

Binibilang ng kabuuang teksto ang pisikal na linya sa sinusubaybayang UTF-8 na file: source, test, XML/JSON resource, Markdown content, localization, dokumentasyon, build tooling, at web source. Kasama ang mga komento, blankong linya, at kopya ng mga wika. Hindi kasama ang media, generated/build output, vendor code, service config, at pansamantalang PLAN.md. Sukat ito ng mga text input ng proyekto, hindi executable LOC.

Kilalanin ang Cubiq