שאלה ב JAVA APPLET

ahillel

New member
שאלה ב JAVA APPLET

מה הבעיה כאן?:
Box[] boxArr = new Box[64]; public void paint(Graphics g){ setSize(400,400); Image image; for (int i=0; i < boxArr.length; i++){ image = getImage(getCodeBase(), "0.gif"); g.drawImage(image, boxArr.getX(), boxArr.getY(), 50, 50, this); } } public void run() { for (int i=0; i < boxArr.length; i++) { boxArr.setType(0); boxArr.setX((int) Math.random()*8); boxArr.setY((int) Math.random()*8); }

הבעיה היא איפשהו במערך ובפקודה לצייר אותו. אם אני מציב בפקודת הציור מספרים רגילים במקום ערכי המערך זה עובד.
 

somebodddy

New member
תשנה את

(int) Math.random()*8​
ל
(int)(Math.random()*8)​
איך שאתה כתבת, ההפיכה לint מתבצעת לפני ההכפלה ב8, ולכן הערך שהופכים לint יהיה קטן מאחד, ותמיד יהפוך ל0, ואז אתה מכפיל את ה0 בשמונה והוא נשאר 0. הוספת סוגריים תדאג לכך שההכפלה ב8 תבוצע לפני ההפיכה לint.
 

Darakan

New member
בג'אווה random מחזיר מספר בין 0 ל-1

פונקציה חסרת פרמטרים
 

ahillel

New member
ידוע. ככה זה גם בC# ובVB

זו היתה הכוונה שלי. להגריל מספר בין 0 ל7. הרנדום זה לא הבעיה. הבעיה קשורה למערך. אבל אני לא מבין מה.
 

IdleThought

New member
הממפ

קצת קשה לדעת בלי טבלת הרצה/חלקים מהקוד
אולי הבעיה היא במימוש SETX ו SETYו במחלקת BOX ?
 

ahillel

New member
already tried ../images/Emo10.gif

אני חושב אולי שRUN מופעלת אחרי PAINT.
 

ahillel

New member
no can do

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

ahillel

New member
באופן תאורטי ניתן לעשות העמסה לפו' הציור, אבל

אני חושש שפונקצית הציור מופעלת לפני שRUN מסתיימת. או לפני שהיא בכלל מתחילה לעבוד.
 

adiel666

New member
לא הבנתי בכלל מה אתה מנסה לעשות

run בApplets היא הפונקציה שרוצים שתבצע את העדכונים כל הזמן ובסופה בא הrepaint()...בדרך כלל אתה שם בrun סוג של while(true) שבתוכו כל העדכונים, ובסוף הלולאה thread.sleep(x seconds)- בשביל 50 FPS - צריך 20 מילישניות, בסוף הלולאה עושים repaint() עוד לפני הsleep. אתה מנסה סה"כ לצייר פעם יחידה על המסך מבלי עדכון, אז למה שמת את זה בRUN? פשוט בפונקציה start של הApplet תעשה: public void start() { //all your code for populating the array repaint(); } בשביל מה אתה צריך בכלל run??
 

adiel666

New member
אה ושכחתי להוסיף

שRun לא יקרה בכלל אם לא תיצור Thread ותעשה לו start()... ברגע שתעשה לו start, הפרוצדורה Run תתחיל ב"מקביל" לשאר הקוד שאחרי הstart() בבלוק הקוד הראשי.
 

adiel666

New member
אתה יכול פשוט לשלוח לי את הפרוייקט במייל

ואם זה משהו קטן אני כבר אתקן אותו...
 

Darakan

New member
אוי

הייתי בטוח שלזה התכוונת מלכתחילה, ולכן לא פתחתי את הלינק בכלל. מצטער :)
 

voguemaster

New member
אולי תעלה תמונה של התוצאה כרגע ?

ותגיד לנו מה ניסית לעשות ? ד"א, 50 זה הגודל של התמונה ? אם 0 עד 7 מייצגות קואורדינטות על לוח (כמו של שחמט) אתה צריך להכפיל את ה-X ו-Y ב-50 לא ?
 
למעלה