السابقالفهرسالتالي

الفصل 5

GridWorld: الجزء الأول

 

5.1 البدء بالعمل

الآن هو وقت مناسب لبدء العمل مع GridWorld، وهو برنامج يستخدم للتدريب على اختبار AP لعلوم الحاسوب. لتبدأ العمل، قم بتنصيب GridWorld، الذي تستطيع تنزيله من الموقع:
http://www.collegeboard.com/student/testing/ap/compsci_a/case.html.

عندما تفك الضغط عن الشفرة، يجب أن تحصل على مجلد اسمه GridWorldCode يحتوي على المجلد projects/firstProject، الذي يحتوي على BugRunner.java.

انسخ BugRunner.java إلى مجلد آخر ثم استورده إلى بيئة برمجتك. توجد هنا تعليمات قد تساعدك:
http://www.collegeboard.com/prod_downloads/student/testing/ap/compsci_a/ap07_gridworld_installation_guide.pdf

(توجد نسخة مترجمة من هذه التعليمات على:
http://thinklikecs.webs.com/book/resources/gridworld_installation_guide.pdf)

بعد تشغيل BugRunner.java، نزِّل دليل الطالب لبرنامج GridWorld من
http://www.collegeboard.com/prod_downloads/student/testing/ap/compsci_a/ap07_gridworld_studmanual_appends_v3.pdf

يستخدم دليل الطالب مفردات لم أشرحها بعد، لذا سأقدم لك شرحاً سريعاً حتى تستطيع البدء:

الآن يجب أن تكون قادراً على قراءة الجزء الأول من دليل الطالب وأن تحل التمارين.

5.2 BugRunner

يحتوي BugRunner.java على هذه الشفرة:

import info.gridworld.actor.ActorWorld;
import info.gridworld.actor.Bug;
import info.gridworld.actor.Rock;

public class BugRunner
{
   public static void main(String[] args)
   {
      ActorWorld world = new ActorWorld();
      world.add(new Bug());
      world.add(new Rock());
      world.show();
   }
}
الأسطر الثلاثة الأولى هي تعليمات استيراد (import statements)؛ تستورد هذه الأسطر أصناف GridWorld المستخدمة في هذا البرنامج. يمكنك الحصول على وثائق هذه الأصناف من http://thinklikecs.webs.com/resources/javadoc/gridworld/

مثل البرامج الأخرى التي شاهدناها، يعرف BugRunner صنفاً يوفر عملية main. ينشئ السطر الأول من main كائن ActorWorld. كلمة new هي كلمة مفتاحية في Java تنشئ الكائنات الجديدة.

ينشئ السطران التاليان Bug (حشرة) وRock (صخرة)، ويضيفانهما إلى world. يظهر السطر الأخير world على الشاشة.

افتح BugRunner.java للتحرير واستبدل هذا السطر:

world.add(new Bug());
بهذين السطرين:
Bug redBug = new Bug();
world.add(redBug);
يسند السطر الأول الحشرة إلى متغير اسمه redBug؛ يمكننا استعمال redbug لاستدعاء عمليات الحشرة. جرب هذه:
System.out.println(redBug.getLocation());
ملاحظة: إذا شغلت هذا قبل إضافة الحشرة إلى العالم (world)، فستكون النتيجة null (لا شيء)، ما يعني أن الحشرة لا تملك موقعاً بعد.

استدعي عمليات الوصول الأخرى واطبع صفات الحشرة. استدعي العمليات canMove، وmove وturn وتأكد من أنك تفهم عملها. الآن جرب هذه التمارين:

تمرين 5.1

  1. اكتب عملية باسم moveBug تأخذ حشرة كمعامل وتستدعي move. اختبر عمليتك باستدعائها من main.
  2. عدل moveBug بحيث تستدعي canMove وتحرك الحشرة فقط في حال كان ذلك ممكناً.
  3. عدل moveBug بحيث تأخذ عدداً صحيحاً، n، كمعامل، وتحرك الحشرة n مرة (إذا كان ذلك ممكناً).
  4. عدل moveBug بحيث تستدعي turn بدلاً من move إذا لم تكن الحشرة قادرة على الحركة.

تمرين 5.2

  1. يوفر صنف Math عملية باسم random تعيد قيمة من نوع double محصورة بين 0.0 و1.0 (1.0 لا تنتمي لمجال القيم الممكن إعادتها).
  2. اكتب عملية باسم randomBug تأخذ حشرة كمعامل وتضبط اتجاه الحشرة على 0، أو 90، أو 180 أو 270 باحتمالات متساوية، ثم تحرك الحشرة إذا كانت قادرة على الحركة.
  3. عدل randomBug حتى تأخذ عدداً صحيحاً n وتكرر العملية n مرة. النتيجة هي حركة عشوائية، التي تستطيع القراءة عنها في http://en.wikipedia.org/wiki/Random_walk.
  4. لكي تشاهد حركة عشوائية أطول، يمكنك إعطاء 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 حشرة ملونة بحسب مواقعها. استخدم رقم الصف للتحكم بدرجة اللون الأحمر، ورقم العمود للتحكم بدرجة الأزرق.

السابقالفهرسالتالي