Hex — מלוח ריק למשחק אופליין מול מחשב


שבעה שלבים ניתנים להרצה ב־Java, XML ו־View Binding

כל פרק מתחיל מן האפליקציה שנבנתה בפרק הקודם ומסתיים בתוצאה שאפשר להריץ.

נקודת ההתחלה

hexT הוא Empty Views Activity בשפת Java עם XML ו־View Binding פעיל. שם החבילה הוא com.example.hex; המודל המאומן מסופק על ידי המורה. אין במסלול משימת אימון ב־Python או ב־Colab.

פרק נושא מה עובד בסיום
01 — הלוח ושפות היעד Canvas, משושים, גאומטריית מרכזים ושפות יעד לוח 7×7 ריק, עם סימון אדום מלמעלה ומלמטה וסימון כחול משמאל ומימין.
02 — מהלכים ותורות מערך של 49 תאים, callback, מגע וחוקיות שני אנשים מניחים אבנים בתור; נגיעה מחוץ ללוח או בתא תפוס אינה משנה את התור.
03 — חיבור מנצח ששת השכנים, חיפוש רוחב וסיום משחק חיבור אדום מלמעלה למטה או כחול משמאל לימין מוכרז כניצחון, ומשחק נוסף נחסם.
04 — משחק מקומי שלם Restart, משאבי מסך ו־View Binding משחק מקומי מלא עם תור, תוצאה, כפתור Restart ומסך בסגנון יישום הייחוס.
05 — מכינים את המחשב העתקי מצב, מהלכים חוקיים וקידוד 7×7×3 המשחק המקומי עדיין עובד, וקוד הכנת המצבים והמודל המסופק נבנים בפרויקט.
06 — מחשב שעובד ברקע בחירת מהלך, TFLite ו־Executor האדם משחק אדום מול תשובת מחשב כחולה; Restart או שינוי מצב פוסלים תשובה ישנה.
07 — שחקני RL מסופקים קטלוג JSON, בחירת שחקן ומטא־דאטה ששת השחקנים המסופקים נבחרים מן הקטלוג. בחירה מחליפה מודל ומתחילה משחק חדש.

מי עושה מה?

חלק אחריות
לוח, מגע, חוקים, תורות, ניצחון וחיבור מסך התלמיד כותב ומסביר
TfliteValueModel וקובצי המודלים המאומנים המורה מספק; התלמיד לומד את החוזה ומשלב
model_catalog.json התלמיד מוסיף שורה לזוג נכסים שסופק
אימון JAX,‏ Colab וייצוא checkpoints מחוץ למסלול

בסוף פרק 4 אפשר לשחק משחק מקומי שלם. בפרק 5 נכין את מצבי המשחק והמודל המסופק, בפרק 6 נבדוק יריב באמצעות מודל לא מאומן, ובפרק 7 נבחר בין השחקנים שסופקו. מספר איטרציות מאוחר יותר אינו מבטיח מודל חזק יותר.

בכל פרק ממשיכים מהמצב שבניתם בפרק הקודם, ושינויי הקוד מוסברים בגוף המדריך. חבילת המורה לפרק 5 וחבילת השחקנים לפרק 7 זמינות בקישורים שבפרקים. הגרסה המאוחדת הישנה של פרק 5 נשמרה כפרק 5old לעיון בלבד.

בקטעי שינוי של מילה, תנאי קצר או אופרטור בתוך שורה קיימת משתמשים ב־code_diff המשותף: לפני משמאל, אחרי מימין והדגשה של החלק שהשתנה. בהוספה של מתודה או מבנה שלם משתמשים ב־diff רגיל. בכל העמודים מופעל full-width: true כדי שההשוואות יישארו זו לצד זו.