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 וקוד benchmark, ללא תיקיות הבדיקות. מספר הבדיקות הוא 1 343 הצהרות JVM ו־281 הצהרות Android, ולא מספר הרצות. המסמכים כוללים טקסט חלופי; קיום תרחיש אינו אומר שבכל שיעור יש תרגול.

baselineprofile · @Test
3

סך הטקסט סופר שורות פיזיות בקובצי UTF-8 שבמעקב: מקורות, בדיקות, משאבי XML/JSON, תוכן Markdown, התאמה לשפות, תיעוד, כלי build ומקורות web. הערות, שורות ריקות והעתקי שפות נכללים. מדיה, פלט שנוצר או נבנה, קוד ספקים, הגדרות שירות ו־PLAN.md זמני אינם נכללים. זה היקף קלט הטקסט של הפרויקט, לא LOC שניתן להריץ.

היכרות עם Cubiq