The Candy Crusher

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

The Candy Crusher

 

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

The Candy Crusher Arrow

 

 

 

 

כתיבת תגובה

1509028158

Array ( [wp_version_check] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => twicedaily [args] => Array ( ) [interval] => 43200 ) ) [wp_update_plugins] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => twicedaily [args] => Array ( ) [interval] => 43200 ) ) [wp_update_themes] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => twicedaily [args] => Array ( ) [interval] => 43200 ) ) )

1509028174

Array ( [wp_scheduled_delete] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => daily [args] => Array ( ) [interval] => 86400 ) ) )

1509037150

Array ( [wp_scheduled_auto_draft_delete] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => daily [args] => Array ( ) [interval] => 86400 ) ) )

1509050890

Array ( [onp_check_upadates_clipboard-images] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => twicedaily [args] => Array ( ) [interval] => 43200 ) ) )

1515187171

Array ( [do_pings] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => [args] => Array ( ) ) ) )

1516274072

Array ( [delete_expired_transients] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => daily [args] => Array ( ) [interval] => 86400 ) ) )

1516274121

Array ( [wp_split_shared_term_batch] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => [args] => Array ( ) ) ) )

1516274123

Array ( [woocommerce_cleanup_sessions] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => twicedaily [args] => Array ( ) [interval] => 43200 ) ) [woocommerce_tracker_send_event] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => daily [args] => Array ( ) [interval] => 86400 ) ) )

1516274322

Array ( [jk_cron_hook_example] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => five-minitue [args] => Array ( ) [interval] => 30 ) ) )

1516277723

Array ( [woocommerce_cancel_unpaid_orders] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => [args] => Array ( ) ) ) )

1516281424

Array ( [upgrader_scheduled_cleanup] => Array ( [3902b919e98dd921aec7904cfc02506e] => Array ( [schedule] => [args] => Array ( [0] => 3134 ) ) ) )

1516283128

Array ( [woocommerce_flush_rewrite_rules] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => [args] => Array ( ) ) ) )

1516320000

Array ( [woocommerce_scheduled_sales] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => daily [args] => Array ( ) [interval] => 86400 ) ) )

1517875200

Array ( [woocommerce_geoip_updater] => Array ( [40cd750bba9870f18aada2478b24840a] => Array ( [schedule] => monthly [args] => Array ( ) [interval] => 2635200 ) ) )