NEED HELP דחוף

marcelob

New member
NEED HELP דחוף

שלום ! במסגרת קורס תכנות ב VISUAL PROLOG קיבלנו משימה (פרויקט לא רציני) לממש משחק כדורעף את חלקו פיתחנו במסגרת הקורס והשאר צריך להמשיך לבד בקיצור הבעייה שלי היא כיצד לחשב את תנועת הכדור לאחר שפוגעת בשחקן אני אפרט קצת יותר שני השחקנים הם בעצם שני עיגולים שנמצאים בתחתית והם זזים ימינה שמאלה הכדור הוא עיגול קטן יותר שזז מצד לצד התנועה שלו מושפעת גם מכוח המשיכה את כל זה כמובן כבר מימשתי הבעייה היא כיצד לחשב את תנועת הכדור לאחר הפגיעה בשחקן הדרישות הן כדלקמן: ידוע מיקום מרכז הכדור בכל רגע ורגע כלומר יש לי את הX ו הY שלו כמו כן ידוע גם מיקום מרכז השחקן מתוך זה אני אמור לחשב וקטור אנך למשטח (כלומר קו המחבר בין שני העיגולים) לאחר מכן יש לחשב את זוית הכניסה שהיא מכפלה פנימית של שני וקטורים וזוית היציאה היא 180 מינוס זוית הכניסה בקיצור הסתבכתי לגמרי מישהוא יכול לעזור ולתת לי נוסחאות לחישוב כל הדרישות וכיצד לשלב זאת בכל העסק ממתין לעזרה
 

somebodddy

New member
לא צריך להסתבך עם זויות

מכיוון שאני כותב מהסלולארי אני לא יכול לתת לך נוסחאות ממש, אז אני נאלץ להניח שיש לך ידע בסיסי בוקטורים. גם אם לא, הערך בוויקיפדיה אמור להספיק בשבילנו. דבר ראשון אתה מחשב וקטור ממרכז הכדור למרכז השחקן והופך אותו לוקטור יחידה(מחלק אותו באורך של עצמו). נקרא לוקטור הזה D. עכשיו אתה עושה מכפלה סקאלרית של D בוקטור המהירות של הכדור, ושומר אותה במשתנה N. אם N גדול מ0 אתה מכפיל אותו ב2, מכפיל את התוצאה בוקטור D, ומוסיף את הוקטור שקיבלת למהירות.
 

marcelob

New member
לגבי המשחק המשך דיון

אוקיי הבנתי פחות או יותר אבל לפי מה שאתה מציע אני בעצם משנה רק את וקטור המהירות איך אני אמור לחשב את X,Y של הכדור רגע אחר הפגיעה כלומר לאיזה כיוון ממשיך הכדור עוד משהוא בקשר לשחקן הממוחשב הצלחתי למצא דרך כיצד הוא אמור להתחקות אחר הכדור אני פשוט מעלה דגל שמציין שהכדור נמצא בצד של השחקן הממוחשב ובאותו רגע השחקן הממוחשב מתחיל לנוע בציר הX לפי קורדינאטת X של הכדור זה נראה שעובד אבל זה לא נראה מי יודע מה מתוחכם האם אתה יכול לכוון אותי כיצד לפתח מנגנון של AI או בעצם לפי איזה קריטריונים אמור המחשב להניע את השחקן בכל אופן אני מודה לך על התייחסותך
 

somebodddy

New member
מיקום הוא אינטגרל של מהירות

וקטור המהירות מתווסף לוקטור המיקום בכל פריים, לכן שינוי במהירות יגרור שינוי במיקום. לגבי הAI, אתה תמיד יכול לקבוע נקודת מטרה ולהזיז את המחשב ככה שהכדור יקפוץ ממנו אל אותה מטרה...
 

somebodddy

New member
רק עכשיו שמתי לב

Visual Progol?! נשמע קצת כמו שפת תכנות אזוטרית... לא במובן של הפארודיה כמובן, אלא במובן של לעשות דברים בדרך מסובכת סתם בשביל האתגר. לדעתי(לא התעמקתי מספיק בנושא כדי לבדוק אם זה באמת ככה) פרולוג אמורה להיות כמו SQL - כלומר אתה לא אמור לכתוב תוכנית שלמה בפרולוג, אלא להריץ שאילתות פרולוג מתוך שפת תכנות אחרת.
 

marcelob

New member
visual prolog מי צריך את זה

בעצם פרולוג היא שפת תכנות לוגית שכל הרעיון הוא לבנות עולם כלשהוא ולבסס עליו סידרת שאילתות ולכן יש דימיון רב לכל מיני בסיסי נתונים כמו SQL כמו כן פרולוג פותחה כשפה לכתיבת תוכניות של בינה מלאכותית אבל בעצם ניתן לממש כל דבר האמת שאנו הסטודנטים שאלנו בישביל מה צריך את זה אבל מה לעשות זה חלק מתוכנית הלימודים ולכן בעצם פרולוג מוגדרת כיום כשפה אקדמית בלבד ומעט מאוד משתמשים בה מחוץ למוסדות אקדמים דרך אגב בקשר לשאלה ששאלתי לגבי מנגנון AI לא הבנתי בדיוק למה התכוונת לגבי נקודה שתמיד אוכל לקפוץ ממנה האם הנקודה הזאת אמורה להיות קבועה או רנדומלית בתחום מסויים (הכוונה לשחקן הממוחשב) האם יש אלגוריתמים ידועים או בעצם כיצד אני אמור לגרום למחשב כיביכול להתחקות אחר הכדור אבל בצורה טבעית כי מה שניסיתי זה עובד אבל לא נראה אלגנטי מה השחקן הממוחשב אמור לעשות ברגע שהכדור נמצא בחצי המגרש הנגדי האם הוא אמור לעמוד ללא תנועה ולחקות שהכדור יגיע בחזרה למגרש שלו או סתם לזוז בצורה רנדומלית ולתת תחושה שכאילו הוא באמת חושב ?? אחי בכל מקרה תודה רבה על הזמן שאתה מקדיש אני מקווה שאני לא מפריע בכל אופן סיפקת לי כמה רעיונות נחמדים
 

somebodddy

New member
אני לא מתפלא שאתם לומדים את זה

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