פורסם 2008 בפברואר 1817 שנים קצת רקע ואחרי ההסבר.אני כרגע בשלבים מאוד מתקדמים בפרוייקט שלי, שעוסק במשחק תוך שימוש בAI.נתקלתי כרגע בבעיה מאוד מאוד מוזרה ומשונה(וכרגע נראה בלתי אפשרית).אני עובר בDEBUG על הקוד שלי כדי לזהות בעיה עכשיו אני מגיע לשורה כלשהי שהיא הכי גדולה ומורכבת.היא קוראת למלא פונקציות ומלא שטויות, עכשיו נגיד אני עובר עליה ב STEP OVER אחד מהמשתנים שאמורים להשתנות לא משתנים.אבל אם אני עובר על השורה הזו ב STEP INTO ואז STEP OVER על מה שרשום בפונקציה המשתנה שאני עוקב אחריו כן משתנה.אני יודע שזה הסבר באוויר כזה ובלי קוד, אבל להביא פה את כל הקוד שקשור לשורה הזו רק יסבך מאוד.מקווה שהבנתם ותוכלו לעזור. אם זה משנה אני עובד בJAVA.
פורסם 2008 בפברואר 1817 שנים כנראה השורה מתבצעת לא לפי הסדר שאתה מצפה שהיא תתבצע (בגלל סדר פעולות, סוגריים וכד').הצעה שלי - תפריד את השורה הזו לכמה שורות נפרדות, ותנסה לדבג ככה. (אגב, רושמים debug)
פורסם 2008 בפברואר 1817 שנים יכול להיות שבתוך הפונקציה יש משתנה באותו שם ואתה מסתכל על המשתנה ה"לא נכון"?יכול להיות שאתה עושה watch שקורא לפונקציה שמשנה את ה- data שלך? (אני לא יודע אם זה בכלל אפשרי ב- java, בדלפי היה אפשר לעשות דבר כזה).
פורסם 2008 בפברואר 1817 שנים מחבר כנראה השורה מתבצעת לא לפי הסדר שאתה מצפה שהיא תתבצע (בגלל סדר פעולות, סוגריים וכד').הצעה שלי - תפריד את השורה הזו לכמה שורות נפרדות, ותנסה לדבג ככה. (אגב, רושמים debug)אין מה להפריד.מתבצעת בשורה זו יצירה של אובייקט חדש מאובייקט שמתקבל לאחר הקריאה לרפונקציה. משהו כזה:x= new Game(m.ai());למשל.. כאשר הפונקציה ai() מחזירה אובייקט מסוג GAMEיכול להיות שבתוך הפונקציה יש משתנה באותו שם ואתה מסתכל על המשתנה ה"לא נכון"?יכול להיות שאתה עושה watch שקורא לפונקציה שמשנה את ה- data שלך? (אני לא יודע אם זה בכלל אפשרי ב- java, בדלפי היה אפשר לעשות דבר כזה).אממ, לא נראה לי. וידאתי כמה וכמה פעמים. בגדול אני עושה WATCH רק על משתנים ולא על פונקציות. לא נראה לי שזה אפשרי בJAVA מה שאמרת..
פורסם 2008 בפברואר 1817 שנים אפשרות נוספת - יכול להיות שהתוכנית שלך תלויה בתזמון בין threads? (ובגלל שאתה מעכב את ה- thread הראשי ע"י step דברים קורים בסדר שונה)
פורסם 2008 בפברואר 1817 שנים אין מה להפריד.מתבצעת בשורה זו יצירה של אובייקט חדש מאובייקט שמתקבל לאחר הקריאה לרפונקציה. משהו כזה:x= new Game(m.ai());למשל.. כאשר הפונקציה ai() מחזירה אובייקט מסוג GAMEאז יש מה להפריד.נסה ככה:Game tmp = m.ai();x = new Game(tmp);
פורסם 2008 בפברואר 1817 שנים מחבר אמממ בגדול נראה לי שפתרתי את זה, אבל זה בכלל לא קשור לקטע של הSTEP OVER/INTOהיה לי שימוש באחד מהמשתנים הגלובלים במקום שימוש בפרמטר ששלחתי. מוזר ביותר איך הדברים קשורים.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.