collision detection במשחק 2d topdown פשוט

amitayh

New member
collision detection במשחק 2d topdown פשוט

שלום,
במסגרת הלימודים אני צריך לכתוב משחק 2d topdown פשוט שבו שחקנים זזים במסך עם קירות (כמו מבוך), יורים חצים ואוספים פריטים. (C++)
זה אמור להיות מאוד בסיסי (בלי גרפיקה ופיזיקה - רק בתוך חלון console שבו כל פריט מיוצג על ידי תו כלשהו)

השאלה שלי היא איך נהוג לממש collision detection - כלומר לזהות מתי היתה "התנגשות" בין שני אובייקטים על המסך (למשל - חץ פגע בשחקן, שחקן אסף פריט, שחקן נתקע בקיר וכו..)
אני יכול לרוץ על כל אובייקט ולבדוק אם יש עוד אובייקטים במיקום שלו, אבל זה נשמע לי כמו סיבוכיות של n^2 (כאשר n הוא מספר האובייקטים במסך)
עוד אופציה שחשבתי היא לרוץ על המיקומים במסך ולבדוק האם יש יותר מאובייקט אחד עליהן (למשל - מערך דו מימדי של ה-grid שלי ולכל נקודה לשמור פוינטר לכל סוג אובייקט ככה שאם אין בנקודה, לדוגמה פריט, אז הפוינטר של הפריט יהיה NULL) אבל גם זה נשמע קצת עקום (מלא פוינטרים שרובם בלי שימוש)

האם יש איזה אלגוריתם מקובל לכזה דבר? מישהו יכול להפנות אותי לחומר בנושא?

תודה מראש לעוזרים!
 
למעלה