Cubiq
engineering.mdPelaksanaan

Pelaksanaan

Di dalam Cubiq

Setiap putaran kiub bergantung pada sistem tersendiri: model matematik, enjin 3D dan penyelesai yang mengambil kira matlamat pelajaran. Aplikasi Android ditulis dengan Kotlin dan Jetpack Compose.

Petikan projek

baris sumber dan sumber teks
740 244
modul aplikasi
39
baris fizikal Kotlin di luar ujian
136 019
varian bahasa
42
pengisytiharan ujiantest* / androidTest* · @Test
1 624

stack.kt

Stack Android moden

Petikan projek
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 dan Material 3 menentukan komponen dan tema antara muka. Adaptive mengurus susun atur mengikut saiz tetingkap, manakala Navigation 3 mengurus navigasi dan pemulihan skrin. Keadaan disampaikan melalui Coroutines dan Flow; Hilt menghubungkan modul aplikasi.

architecture.kt

Lapisan aplikasi yang bebas

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%

Antara muka, kontrak domain dan data dipisahkan kepada modul tersendiri; Hilt menghubungkan pelaksanaannya. Compose menerima keadaan tidak berubah dan peristiwa eksplisit. Room menyimpan sejarah dan kemajuan pembelajaran, DataStore menyimpan tetapan, dan Navigation 3 memulihkan tindanan bahagian.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX berdasarkan cadangan Android

Cubiq melaksanakan pendekatan yang diketengahkan oleh Google dalam Apps Experience Program: Compose, susun atur adaptif dan edge-to-edge.

Mengikut saiz tetingkap
Pada skrin lebar, teori dan latihan dipaparkan bersebelahan. Pada skrin kompak, kandungan dan navigasi menyesuaikan diri dengan ruang tersedia; saiz tetingkap menentukan susun atur.
Navigasi natif
Edge-to-edge mengambil kira bar sistem dan papan kekunci. Navigation 3 mengekalkan tindanan bahagian dan menyokong Predictive Back dengan pratonton peralihan kembali.
Kebolehbacaan dan kebolehcapaian
Tema cerah dan gelap, penskalaan teks serta label semantik navigasi membantu penggunaan aplikasi dengan TalkBack dan papan kekunci. Apabila fon dibesarkan, nama bahagian kekal tersedia kepada pembaca skrin.
Cadangan Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometri yang mengikut matematik

moving cubies
26
facelets
54
meshes
8
triangles
2 964

Shader GLSL mengira bahan PBR, kekasaran dan pencahayaan persekitaran. Model dan animasi selaras: mengundur satu langkah menerapkan gerakan songsang, dan kamera mengambil kira ruang antara panel.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Keadaan kiub / main balik formula

Notasi berjenis ditukar menjadi gerakan dan keadaan kiub yang konsisten. Baris gilir renderer menganimasikan putaran lapisan sambil mengekalkan identiti bahagian dan facelet. Formula dimainkan sebagai urutan gerakan sebenar, dengan main, jeda dan pelarasan tempo.

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

Langkah ke hadapan menganimasikan gerakan baharu; langkah ke belakang menerapkan gerakan songsang. Lompat ke kedudukan memulihkan adegan asas dan urutan sasaran. Pembatalan menghentikan penghantaran gerakan seterusnya; putaran yang sudah bermula diselesaikan. Kitar hayat EGL mengendalikan pause/release; tanpa GL, laluan pembelajaran kekal tersedia tanpa 3D.

solver.kt

Penyelesaian mengikut matlamat pelajaran

  • BFS
  • Beam search
  • F2L

Penyelesai tersendiri menyusun penyelesaian daripada formula dan gerakan bantuan pelajaran semasa. SolverRequest merangkumi keadaan kiub, bahagian sasaran, sasaran terkunci, formula dibenarkan, kes dan orientasi. Perancang mengikut turutan matlamat pembelajaran dan melindungi bahagian yang selesai.

Perancangan setiap fasa menggunakan BFS terhad, beam search dan pengecaman kes F2L. Pengesahan menyemak komposisi bahagian, pembalikan, kilasan dan pariti permutasi. Dasar carian mengehadkan kedalaman dan lebar beam. Pertukaran pelajaran membatalkan carian dan mencegah hasil lapuk.

Hasilnya PracticePlan: langkah, rujukan formula, garis masa paparan dan garis masa pelaksanaan. Penjelasan mengekalkan orientasi pembelajaran; enjin menerima urutan pelaksanaan penuh. Hasil: plan / solved / invalid input / no constrained path.

  1. Keadaan kiub
  2. Pengesahan model
  3. Pelan pembelajaran
  4. Latihan 3D

content.md

Kandungan melalui proses binaan

Teori disimpan dalam 756 dokumen Markdown, dan latihan ditakrifkan dalam 336 senario yang disetempatkan. Gradle mengesahkan struktur terjemahan dan rujukan kepada 316 ilustrasi asli. Grafik disediakan dalam Blender/Cycles; enjin Android menggunakan geometri prosedural berasingan.

workflow.md

Dokumentasi sebagai kod / aliran kerja ejen

AGENTS.md
48
README.md
16

Repositori disusun untuk pembangunan dengan ejen: hierarki AGENTS.md menetapkan pemilikan, batasan seni bina dan gerbang pengesahan; README.md menerangkan kontrak modul, KDoc menerangkan API dan invarian.

Kontrak seni bina, reka bentuk dan penyetempatan dikawal versinya bersama kod. PLAN.md mencatat skop dan serahan; perubahan kontrak mengemas kini dokumentasi pemiliknya. Semakan dan penjanaan melalui Gradle; CI membina kedua-dua varian gedung.

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%
Kualiti dan kaedah pengiraan

Ujian merangkumi keadaan kiub yang mustahil, pengekalan lapisan yang selesai, pelan pembelajaran, pembatalan permintaan lapuk, pemulihan sesi dan import data. CI membina kedua-dua varian gedung; semakan keluaran merangkumi R8, APK/AAB, checksum dan penjajaran pustaka native untuk halaman 16 KB.

Jumlah Kotlin mengira baris fizikal, termasuk komen, baris kosong, buildSrc dan kod benchmark, tanpa direktori ujian. Bilangan ujian bermaksud 1 343 pengisytiharan JVM dan 281 pengisytiharan Android, bukan pelaksanaan ujian. Dokumen merangkumi teks sandaran; kewujudan senario tidak bermakna setiap pelajaran mempunyai latihan.

baselineprofile · @Test
3

Jumlah teks mengira baris fizikal dalam fail UTF-8 yang dijejaki: sumber, ujian, sumber XML/JSON, kandungan Markdown, penyetempatan, dokumentasi, alat build dan sumber web. Komen, baris kosong dan salinan bahasa disertakan. Media, keluaran terjana/build, kod vendor, konfigurasi perkhidmatan dan PLAN.md sementara dikecualikan. Ini isi padu input teks projek, bukan LOC yang boleh dilaksanakan.

Kenali Cubiq