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

Οι shaders GLSL υπολογίζουν υλικά PBR, τραχύτητα και φωτισμό περιβάλλοντος. Μοντέλο και κίνηση είναι συγχρονισμένα: ένα βήμα πίσω εφαρμόζει την αντίστροφη κίνηση και η κάμερα λαμβάνει υπόψη τον χώρο ανάμεσα στα πάνελ.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Κατάσταση κύβου / αναπαραγωγή τύπων

Η σημειογραφία με τύπους μετατρέπεται σε κινήσεις και συνεπείς καταστάσεις κύβου. Η ουρά του renderer κινεί τις περιστροφές στρωμάτων, διατηρώντας την ταυτότητα κομματιών και 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

Το περιεχόμενο περνά από τη διαδικασία build

Η θεωρία βρίσκεται σε 756 έγγραφα Markdown και η πρακτική ορίζεται σε 336 τοπικοποιημένα σενάρια. Το Gradle ελέγχει τη δομή των μεταφράσεων και τις αναφορές σε 316 πρωτότυπες εικονογραφήσεις. Τα γραφικά προετοιμάστηκαν στο Blender/Cycles· η μηχανή Android χρησιμοποιεί ξεχωριστή διαδικαστική γεωμετρία.

workflow.md

Τεκμηρίωση ως κώδικας / εργασία με agents

AGENTS.md
48
README.md
16

Το αποθετήριο οργανώνεται για ανάπτυξη με agents: η ιεραρχία 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. Περιλαμβάνει σχόλια, κενές γραμμές και γλωσσικά αντίγραφα. Εξαιρεί μέσα, παραγόμενα και build αποτελέσματα, κώδικα τρίτων, ρυθμίσεις υπηρεσιών και το προσωρινό PLAN.md. Μετρά τις εισόδους κειμένου του έργου, όχι εκτελέσιμες LOC.

Γνώρισε το Cubiq