تمارين

تمرين 5

a. اكتب عملية باسم moveBug تأخذ حشرة كمعامل وتستدعي move. اختبر عمليتك باستدعائها من main.
b. عدل moveBug بحيث تستدعي canMove وتحرك الحشرة فقط في حال كان ذلك ممكناً.
c. عدل moveBug بحيث تأخذ عدداً صحيحاً، n، كمعامل، وتحرك الحشرة n مرة (إذا كان ذلك ممكناً).
d. عدل moveBug بحيث تستدعي turn بدلاً من move إذا لم تكن الحشرة قادرة على الحركة.
تمرين 5.2
a. يوفر صنف Math عملية باسم random تعيد قيمة من نوع double محصورة بين 0.0 و1.0 (1.0 لا تنتمي لمجال القيم الممكن إعادتها).
b. اكتب عملية باسم randomBug تأخذ حشرة كمعامل وتضبط اتجاه الحشرة على 0، أو 90، أو 180 أو 270 باحتمالات متساوية، ثم تحرك الحشرة إذا كانت قادرة على الحركة.
c. عدل randomBug حتى تأخذ عدداً صحيحاً n وتكرر العملية n مرة.
النتيجة هي حركة.1 عشوائية، التي تستطيع القراءة عنها في http://en.wikipedia.org/wiki/Random_walk.
d. لكي تشاهد حركة عشوائية أطول، يمكنك إعطاء ActorWorld منصة أكبر. أضف تعليمة الاستيراد هذه إلى بداية BugRunner.java:
كود:
import info.gridworld.grid.UnboundedGrid;
الآن استبدل السطر الذي ينشئ ActorWorld بهذا:
كود:
ActorWorld world = new ActorWorld(new UnboundedGrid());
يجب أن تكون قادراً على تشغيل حركتك العشوائية لعدة آلاف من الخطوات (قد تحتاج لاستعمال أشرطة التمرير للعثور على الحشرة).
تمرين 5.3 يستعمل GridWorld كائنات الألوان (Color objects)، المعرَّفة في إحدى مكتبات Java. يمكنك قراءة الوثائق على http: // download. oracle.com/ javase/ 6/ docs/ api/ java/ awt/ Color. html.
لعمل حشرات بألوان مختلفة، علينا استيراد Color:
كود:
import java.awt.Color;
ثم نتمكن من الوصول إلى الألوان المعرفة مسبقاً، مثل Color.blue، أو إنشاء لون جديد مثل هذا:
كود:
Color purple = new Color(148, 0, 211);
اصنع بضعة حشرات بألوان مختلفة. ثم اكتب عملية باسم colorBug تأخذ حشرة كمعامل، تقرأ موقعها، وتضبط اللون.
كائن الموقع الذي تحصل عليه من getLocation له عمليات باسم getRow وgetCol تعيد أعداداً صحيحة. بالتالي يمكنك الحصول على إحداثي الفواصل (x-coordinate) لحشرة ما بهذه الطريقة:
كود:
int x = bug.getLocation().getCol();
اكتب عملية باسم makeBugs تأخذ ActorWorld وعدد صحيح n، وتنشئ n حشرة ملونة بحسب مواقعها. استخدم رقم الصف للتحكم بدرجة اللون الأحمر، ورقم العمود للتحكم بدرجة الأزرق.