Cubiq
engineering.mdTriển khai

Triển khai

Bên trong Cubiq

Mỗi lần xoay khối lập phương dựa trên một hệ thống tự xây dựng: mô hình toán học, bộ máy 3D và bộ giải tính đến mục tiêu bài học. Ứng dụng Android được viết bằng Kotlin và Jetpack Compose.

Ảnh chụp trạng thái dự án

dòng mã nguồn và tài nguyên văn bản
740 244
mô-đun ứng dụng
39
dòng vật lý Kotlin ngoài phần kiểm thử
136 019
biến thể ngôn ngữ
42
khai báo kiểm thửtest* / androidTest* · @Test
1 624

stack.kt

Bộ công nghệ Android hiện đại

Ảnh chụp trạng thái dự án
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 và Material 3 định nghĩa thành phần và chủ đề giao diện. Adaptive xử lý bố cục theo kích thước cửa sổ, còn Navigation 3 xử lý điều hướng và khôi phục màn hình. Trạng thái được truyền qua Coroutines và Flow; Hilt kết nối các mô-đun ứng dụng.

architecture.kt

Các lớp ứng dụng độc lập

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%

Giao diện, hợp đồng miền và dữ liệu được chia thành các mô-đun riêng; Hilt kết nối các phần triển khai. Compose nhận trạng thái bất biến và sự kiện tường minh. Room lưu lịch sử và tiến độ học, DataStore lưu cài đặt, còn Navigation 3 khôi phục ngăn xếp của từng phần.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX theo khuyến nghị Android

Cubiq triển khai các cách tiếp cận được Google nhấn mạnh trong Apps Experience Program: Compose, bố cục thích ứng và edge-to-edge.

Theo kích thước cửa sổ
Trên màn hình rộng, lý thuyết và luyện tập nằm cạnh nhau. Trên màn hình nhỏ gọn, nội dung và điều hướng thích ứng với không gian sẵn có; kích thước cửa sổ quyết định bố cục.
Điều hướng thuần Android
Edge-to-edge tính đến thanh hệ thống và bàn phím. Navigation 3 giữ ngăn xếp của từng phần và hỗ trợ Predictive Back với bản xem trước chuyển cảnh quay lại.
Dễ đọc và khả năng tiếp cận
Chủ đề sáng và tối, thay đổi cỡ chữ và nhãn ngữ nghĩa trong điều hướng giúp dùng ứng dụng với TalkBack và bàn phím. Khi cỡ chữ lớn, tên các phần vẫn có sẵn cho trình đọc màn hình.
Khuyến nghị của Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Hình học tuân theo toán học

moving cubies
26
facelets
54
meshes
8
triangles
2 964

Shader GLSL tính vật liệu PBR, độ nhám và ánh sáng môi trường. Mô hình và hoạt ảnh đồng bộ: lùi một bước áp dụng nước đi đảo ngược, còn camera tính đến khoảng trống giữa các bảng.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Trạng thái khối lập phương / phát công thức

Ký hiệu có kiểu được chuyển thành nước đi và trạng thái khối lập phương nhất quán. Hàng đợi renderer tạo hoạt ảnh xoay tầng, giữ nguyên danh tính của mảnh và facelet. Công thức phát thành chuỗi nước đi thực, với phát, tạm dừng và chỉnh tốc độ.

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

Tiến một bước tạo hoạt ảnh nước đi mới; lùi một bước áp dụng nước đi đảo ngược. Chuyển đến vị trí khôi phục cảnh cơ sở và chuỗi đích. Hủy dừng việc gửi nước đi tiếp theo; lượt xoay đã bắt đầu sẽ hoàn tất. Vòng đời EGL xử lý pause/release; khi không có GL, lộ trình học vẫn dùng được mà không cần 3D.

solver.kt

Lời giải theo mục tiêu bài học

  • BFS
  • Beam search
  • F2L

Bộ giải tự xây dựng tạo lời giải từ công thức và nước đi phụ của bài học hiện tại. SolverRequest gồm trạng thái khối lập phương, mảnh đích, mục tiêu khóa, công thức được phép, trường hợp và hướng. Bộ lập kế hoạch tuân theo thứ tự mục tiêu học và bảo vệ mảnh đã giải.

Lập kế hoạch theo giai đoạn dùng BFS có giới hạn, tìm kiếm chùm và nhận diện trường hợp F2L. Kiểm tra xác minh thành phần mảnh, lật, xoắn và tính chẵn lẻ của hoán vị. Chính sách tìm kiếm giới hạn độ sâu và độ rộng chùm. Đổi bài học hủy tìm kiếm và ngăn kết quả lỗi thời.

Kết quả là PracticePlan: bước, tham chiếu công thức, dòng thời gian hiển thị và dòng thời gian thực thi. Giải thích giữ định hướng học tập; bộ máy nhận toàn bộ chuỗi thực thi. Kết quả: plan / solved / invalid input / no constrained path.

  1. Trạng thái khối lập phương
  2. Kiểm tra mô hình
  3. Kế hoạch học tập
  4. Luyện tập 3D

content.md

Nội dung đi qua quy trình build

Lý thuyết được lưu trong 756 tài liệu Markdown, phần luyện tập được định nghĩa trong 336 kịch bản bản địa hóa. Gradle kiểm tra cấu trúc bản dịch và tham chiếu đến 316 hình minh họa tự tạo. Đồ họa được chuẩn bị bằng Blender/Cycles; bộ máy Android dùng hình học thủ tục riêng.

workflow.md

Tài liệu như mã / quy trình tác nhân

AGENTS.md
48
README.md
16

Kho mã được tổ chức để phát triển với tác nhân: phân cấp AGENTS.md xác định quyền sở hữu, giới hạn kiến trúc và cổng kiểm tra; README.md mô tả hợp đồng mô-đun, KDoc mô tả API và bất biến.

Hợp đồng kiến trúc, thiết kế và bản địa hóa được quản lý phiên bản cùng mã. PLAN.md ghi phạm vi và bàn giao; thay đổi hợp đồng cập nhật tài liệu chịu trách nhiệm. Kiểm tra và sinh mã đi qua Gradle; CI build cả hai biến thể cửa hàng.

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%
Chất lượng và phương pháp đếm

Kiểm thử bao gồm trạng thái khối lập phương không thể tồn tại, giữ nguyên các tầng đã giải, kế hoạch học, hủy yêu cầu lỗi thời, khôi phục phiên và nhập dữ liệu. CI build cả hai biến thể cửa hàng; kiểm tra phát hành gồm R8, APK/AAB, tổng kiểm tra và căn chỉnh thư viện native cho trang 16 KB.

Quy mô Kotlin được đếm theo dòng vật lý, gồm chú thích, dòng trống, buildSrc và mã benchmark, không gồm thư mục kiểm thử. Số kiểm thử là 1 343 khai báo JVM và 281 khai báo Android, không phải số lần chạy. Tài liệu gồm văn bản dự phòng; có kịch bản không có nghĩa mọi bài học đều có luyện tập.

baselineprofile · @Test
3

Tổng văn bản đếm dòng vật lý trong tệp UTF-8 được theo dõi: mã nguồn, kiểm thử, tài nguyên XML/JSON, nội dung Markdown, bản địa hóa, tài liệu, công cụ build và nguồn web. Bao gồm chú thích, dòng trống và bản sao ngôn ngữ. Loại trừ media, đầu ra sinh tự động/build, mã bên cung cấp, cấu hình dịch vụ và PLAN.md tạm thời. Đây là quy mô đầu vào văn bản của dự án, không phải LOC thực thi.

Khám phá Cubiq