The Candy Crusher

יש לי מספר חברים המכורים למשחק Candy Crush. המשחק אומנם נראה פשוט אבל במבט של מנתח מערכות ומנהל פרוייקטים אני יכול להגיד שהוא בנוי פשוט נפלא. אבל הפוסט הזה לא עוסק בזה. רציתי להוכיח לאותם חברים שלא מדובר במשחק מזל אלא בזיהוי תבניות ובמקרה הזה אין טוב יותר מהמחשב לעשות את זה. בניתי תוכנה קטנה בC# שמזהה תבניות מהמשחק ומציגה חץ ירוק ליד האפשרות המוצלחת ביותר. בעזרת פונקציה פשוטה זאת עברתי כמה עשרות שלבים. בשלבים המתקדמים מתווספים מטרות וסוגים שונים של אובייקטים שהופכים את התוכנה שלי ללא יעילה (לפחות במצבה הנוכחי).

The Candy Crusher

 

אז (לאותם חברים) אני מודה שהיא לא מושלמת. אגב לאלו מכם שמכירים עיבוד תמונה, לא השתמשתי בזיהוי תמונה בתוך תמונה. כלומר חיפוש של תמונת הסוכריה הבודדת בתוך אוסף הסוכריות כי סריקה שכזאת לוקחת יותר מידי זמן. (השוואה של פיקסל לפיקסל) במקום השתמשתי בזיהוי הצורות ע"י התאמת תבניות. כלומר ההשוואה שלי נעשת לא בין הצורות עצמן, אלא בין אוסף המאפיינים המייצגים אותן. אם ההתאמה היא טובה מספיק ניתן לקבוע שבתמונה קיים עצם שצורותו זהה לזו של התבנית. המתאם הזה קרוי המתאם ההדדי (Cross Correlation) בין תבנית הייחוס לקטע התמונה. ככל שההתאמה גבוהה יותר, המתאם ההדדי מקבל ערך גבוהה יותר. צריך להיות זהירים בבחירת המאפיינים בחירה שגויה או לא מספקת תביא ערך גבוה אבל ללא התאמה בפועל.

The Candy Crusher Arrow

 

 

 

 

כתיבת תגובה