שאלה לפיליפ

ssavir

New member
שאלה לפיליפ

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

philips

New member
המממ...

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

ssavir

New member
קודם כל תודה על ההתייחסות ....

פיליפ פשוט אני לא יודע איך לבצע את זה הדרישה לעשות זאת בתוך ווקטור היא של המרצה (זה שמלמד אותנו ג´אווה ) התוכנית אמורה להיות פרוייקט סיכום לקורס זה והדרישות בה ניתנו ע"י המרצה אם תשים לב בתוכנית הגדרתי כבר ווקטור ביצעתי את פעולת ה-UNDO והמחיקה -CLEAR הבעיה היחידה והיא העיקרית איך אני מכניס את הצורות שצוירו ע"י מי שמצייר בתוכנה לתוך הווקטור כל צורה במיקום אחר (דוגמא: צורה ראשונה -מיקום 0 ,צורה שניה -מיקום אחד וכו´) פשוט אני לא יודע איך לעשות זאת שאלתי אנשים שמבינים קצת בג´אווה ואמרו לי לממש/לדרוס את המחלקה Shape וכך יהיה לי יותר קל אבל אני לא יודע איך לממש מחלקה זו תודה רבה על ההבנה ועל העזרה זה מאד חשוב לי - תאריך הגשת הפרוייקט מגיע כבר ואני רוצה להצליח בבקשה
 

philips

New member
הממ...רעיון טוב..

זה כעיקרון הרעיון...לרשת מ SHAPE ולשכלל...(כשמדובר על ציור וקטורי) לא ניתן להסביר את זה כאן במלואו ואני מאוד עמוס....אבל.. גם כאן יבוא GOOGLE לעזרתך.. חיפוש על JAVA ו Drawing ו Shape ו Paint ו/או Source... יוציא מספיק קודים של תוכניות ציור וסביר להניח שתוכל למצוא דוגמה.. כעיקרון , אנו מתייחסים לציור כאל רשימה של הצורות הגיאומטריות מהן הוא מורכב...(פוליגונים,עיגולים,מלבנים).. הוספה של פוליגון לציור , צריכה לצור אובייקט מהסוג המתאים (יורש מ SHAPE).... על מנת למחוק אותו יש בעיקרון להשמידו.. זה בקוים כללים , תתחיל לחשוב בכיוון ואם נתקל בבעייה נקודתית אנסה לעזור
 

voguemaster

New member
הממ

המחלקה SHAPE מספקת התנהגות כללית לצורת ווקטוריות ? אם כך זה יכול להיות די פשוט יחסית. אם SHAPE זו צורה כללית, אפשר ליצור מחלקות שיורשות ממנה ויש להן התנהגות ספציפית יותר. בכל מקרה, ניתן להוסיף כל צורה לווקטור אחרי שהיא נוצרת, ולהוריד את האחרונה כאשר לוחצים על UNDO... אלי
 

ssavir

New member
קודם כל תודה על ההתייחסות ...

כל הקטע שאני לא יודע לממש את המחלקה SHAPE במלואה ואם הייתי יודע לא הייתי פונה לבקש עזרה אני די חדש בנושא של הג´אווה איך להכניך לווקטור למחוק ממנו לבצע UNDO ואפילו REDO אני יודע איך עושים וגם לעשות קאסטינג לטיפוס כדי להפוך אותו לאובייקט אני יודע לעשות אני צריך את זה דחוף מאד זה פרוייקט גמר שלי תודה רבה על העזרה
 

voguemaster

New member
הכל כתוב ב-DOC

אם הורדת את ה-JDK, אז מן הראוי שיהיה לך גם כל ה-DOC שלה. כלומר, יש חבילה שבה יש REFERENCE של כל המחלקות ועוד כל מיני אקסטרות. שם צריך להיות רשום על המחלקה SHAPE. מה היא מספקת, מה היא משאירה לך לשנות (ע"י דריסת שיטות) וכו´. פשוט תקרא עליה קצת, וכאשר תרצה להגדיר סוג של צורה (נניח מלבן) שמתבסס עליה, תיצור מחלקה חדשה שיורשת מ-SHAPE ותיישם את מה שאתה צריך. ואז כל פעם שתיצור אובייקט מלבן תוכל להכניס אותו לווקטור שלך. זה לא משנה אם הצורה שלך היא אובייקט שיורש מ-SHAPE או לא, בכל מקרה זה אובייקט. השאלה היא מה אתה צריך אם בכלל מהמחלקה SHAPE.. אלי
 

ssavir

New member
צריך לממש .....

מלבן ריק/מלא אובל ריק/מלא ציור ביד חופשית קוים ומלבן עם קצוות מעוגלות ריק/מלא תוכל ליצור איתי קשר בטלפון ? אם כן אשלח לך את הטלפון שלי במייל
 
למעלה