Cubiq
engineering.mdپیاده‌سازی

پیاده‌سازی

درون Cubiq

هر چرخش مکعب بر یک سامانهٔ اختصاصی تکیه دارد: مدل ریاضی، موتور 3D و حل‌کننده‌ای که اهداف درس را در نظر می‌گیرد. برنامهٔ Android با Kotlin و Jetpack Compose نوشته شده است.

نمای لحظه‌ای پروژه

خط منبع و منابع متنی
740 244
ماژول برنامه
39
خط فیزیکی Kotlin خارج از آزمون‌ها
136 019
گونهٔ زبانی
42
اعلان آزمونtest* / androidTest* · @Test
1 624

stack.kt

پشتهٔ مدرن Android

نمای لحظه‌ای پروژه
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 و Material 3 مؤلفه‌ها و پوسته‌های رابط را تعیین می‌کنند. Adaptive چیدمان را بر اساس اندازهٔ پنجره مدیریت می‌کند و Navigation 3 ناوبری و بازیابی صفحه‌ها را بر عهده دارد. وضعیت از طریق Coroutines و Flow می‌رسد؛ Hilt ماژول‌های برنامه را به هم متصل می‌کند.

architecture.kt

لایه‌های مستقل برنامه

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%

رابط، قراردادهای دامنه و داده‌ها در ماژول‌های جدا قرار دارند؛ Hilt پیاده‌سازی‌ها را متصل می‌کند. Compose وضعیت تغییرناپذیر و رویدادهای صریح دریافت می‌کند. Room تاریخچه و پیشرفت یادگیری، DataStore تنظیمات را ذخیره می‌کند و Navigation 3 پشته‌های بخش‌ها را بازیابی می‌کند.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX بر اساس توصیه‌های Android

در Cubiq رویکردهایی پیاده شده‌اند که Google در Apps Experience Program بر آن‌ها تأکید می‌کند: Compose، چیدمان تطبیقی و edge-to-edge.

بر اساس اندازهٔ پنجره
در صفحهٔ عریض، مباحث نظری و تمرین کنار هم قرار می‌گیرند. در صفحهٔ کوچک، محتوا و ناوبری با فضای موجود سازگار می‌شوند؛ اندازهٔ پنجره چیدمان را تعیین می‌کند.
ناوبری بومی
Edge-to-edge نوارهای سیستم و صفحه‌کلید را در نظر می‌گیرد. Navigation 3 پشته‌های بخش‌ها را حفظ می‌کند و از Predictive Back با پیش‌نمایش گذار بازگشت پشتیبانی می‌کند.
خوانایی و دسترس‌پذیری
پوسته‌های روشن و تیره، تغییر اندازهٔ متن و برچسب‌های معنایی در ناوبری به استفاده از برنامه با TalkBack و صفحه‌کلید کمک می‌کنند. با قلم درشت، نام بخش‌ها همچنان برای صفحه‌خوان در دسترس می‌مانند.
توصیه‌های Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

هندسه‌ای مطابق با ریاضیات

moving cubies
26
facelets
54
meshes
8
triangles
2 964

شیدرهای GLSL مواد PBR، زبری و نور محیط را محاسبه می‌کنند. مدل و پویانمایی هماهنگ‌اند: یک گام به عقب، حرکت معکوس را اعمال می‌کند و دوربین فضای خالی میان پنل‌ها را در نظر می‌گیرد.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

وضعیت مکعب / پخش فرمول

نمادگذاری نوع‌دار به حرکت‌ها و وضعیت‌های سازگار مکعب تبدیل می‌شود. صف رندرر چرخش لایه‌ها را پویانمایی می‌کند و هویت قطعه‌ها و faceletها را حفظ می‌کند. فرمول به‌صورت توالی حرکت‌های واقعی پخش می‌شود، با پخش، مکث و تنظیم سرعت.

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

گام به جلو حرکت تازه را پویانمایی می‌کند؛ گام به عقب حرکت معکوس را اعمال می‌کند. رفتن به موقعیت، صحنهٔ پایه و توالی هدف را بازیابی می‌کند. لغو، ارسال حرکت‌های بعدی را متوقف می‌کند؛ چرخش آغازشده کامل می‌شود. چرخهٔ عمر EGL عملیات pause/release را مدیریت می‌کند؛ اگر GL در دسترس نباشد، مسیر یادگیری بدون 3D باقی می‌ماند.

solver.kt

راه‌حل متناسب با اهداف درس

  • BFS
  • Beam search
  • F2L

حل‌کنندهٔ اختصاصی از فرمول‌ها و حرکت‌های کمکی درس کنونی راه‌حل می‌سازد. SolverRequest شامل وضعیت مکعب، قطعه‌های هدف، هدف‌های قفل‌شده، فرمول‌های مجاز، حالت‌ها و جهت است. برنامه‌ریز ترتیب هدف‌های یادگیری را رعایت می‌کند و از قطعه‌های حل‌شده محافظت می‌کند.

برنامه‌ریزی هر مرحله از BFS محدود، جست‌وجوی پرتویی و تشخیص حالت‌های F2L استفاده می‌کند. اعتبارسنجی ترکیب قطعه‌ها، وارونگی‌ها، پیچش‌ها و زوجیت جایگشت را بررسی می‌کند. سیاست جست‌وجو عمق و پهنای پرتو را محدود می‌کند. تغییر درس جست‌وجو را لغو می‌کند و مانع نتیجهٔ قدیمی می‌شود.

نتیجه PracticePlan است: گام‌ها، ارجاع‌های فرمول، خط زمانی نمایش و خط زمانی اجرا. توضیح جهت درس را حفظ می‌کند؛ موتور توالی کامل اجرا را می‌گیرد. نتیجه‌ها: plan / solved / invalid input / no constrained path.

  1. وضعیت مکعب
  2. اعتبارسنجی مدل
  3. برنامهٔ یادگیری
  4. تمرین 3D

content.md

محتوا از فرایند ساخت می‌گذرد

مباحث نظری در 756 سند Markdown نگهداری می‌شوند و تمرین در 336 سناریوی بومی‌سازی‌شده تعریف شده است. Gradle ساختار ترجمه‌ها و ارجاع‌ها به 316 تصویرسازی اختصاصی را اعتبارسنجی می‌کند. گرافیک در Blender/Cycles آماده شده؛ موتور Android از هندسهٔ رویه‌ای جداگانه استفاده می‌کند.

workflow.md

مستندات به‌عنوان کد / گردش کار عامل

AGENTS.md
48
README.md
16

مخزن برای توسعه با عامل‌ها سازمان یافته است: سلسله‌مراتب AGENTS.md مسئولیت، محدودیت‌های معماری و دروازه‌های اعتبارسنجی را تعیین می‌کند؛ README.md قراردادهای ماژول‌ها و KDoc API و شرط‌های همواره برقرار را شرح می‌دهند.

قراردادهای معماری، طراحی و بومی‌سازی در کنار کد نسخه‌بندی می‌شوند. PLAN.md دامنه و تحویل کار را ثبت می‌کند؛ تغییر قراردادها مستندات مسئول آن‌ها را به‌روز می‌کند. بررسی و تولید از طریق Gradle انجام می‌شود؛ CI هر دو گونهٔ فروشگاهی را می‌سازد.

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%
کیفیت و روش شمارش

آزمون‌ها وضعیت‌های ناممکن مکعب، حفظ لایه‌های حل‌شده، برنامه‌های یادگیری، لغو درخواست‌های قدیمی، بازیابی نشست‌ها و ورود داده را پوشش می‌دهند. CI هر دو گونهٔ فروشگاهی را می‌سازد؛ بررسی‌های انتشار شامل R8، APK/AAB، مجموع‌های کنترلی و هم‌ترازی کتابخانه‌های native برای صفحه‌های 16 KB است.

حجم Kotlin بر اساس خط‌های فیزیکی شمرده شده و توضیحات، خط‌های خالی، buildSrc و کد بنچمارک را در بر می‌گیرد، اما پوشه‌های آزمون را نه. تعداد آزمون‌ها یعنی 1 343 اعلان JVM و 281 اعلان Android، نه تعداد اجراها. سندها متن جایگزین را نیز شامل می‌شوند؛ وجود سناریو به معنی وجود تمرین در هر درس نیست.

baselineprofile · @Test
3

کل متن، خط‌های فیزیکی فایل‌های UTF-8 تحت پیگیری را می‌شمارد: منابع، آزمون‌ها، منابع XML/JSON، محتوای Markdown، بومی‌سازی، مستندات، ابزارهای ساخت و منابع وب. توضیحات، خط‌های خالی و نسخه‌های زبان‌ها دربرگرفته می‌شوند. رسانه، خروجی تولیدشده/ساخت، کد عرضه‌کنندگان، تنظیمات سرویس و PLAN.md موقت کنار گذاشته می‌شوند. این حجم ورودی‌های متنی پروژه است، نه LOC قابل اجرا.

با Cubiq آشنا شو