โปรแกรมนี้เป็นโปรแกรมแข่งวิ่งของกระต่ายกับเต่า โดยจะเปรียบสนามแข่งเป็นตาราง 8x8 จุดเริ่มต้นอยู่ที่ 0, 0 และจุดสิ้นสุดอยู่ที่ 0, 7 เพื่อให้กระต่ายและเต่าอย่างละ 3 ตัววิ่งไปตามตารางให้ถึงเส้นชัย (ทุกตัวอยู่ทับช่องกันได้) โดยแต่ละช่องของตารางเดินทาง อาจมีกับดักที่วางไว้ ซึ่งกระต่ายและเต่าจะต้องทำตามกับดักนั้น เช่น อาจให้เดินหน้า-ถอยหลัง หรือหยุดเดิน เป็นต้น
1. รายละเอียดของ Class ต่างๆที่ต้องใช้ในโปรแกรมมีดังนี้
Class Animal : class นี้จะเป็น abstract class เพื่อให้ Rabbit และ turtle extends ต่อไป มีนิยาม attribute และ function ต่างๆดังนี้
• attribute
x และ y ซึ่งเป็นค่าพิกัดปัจจุบันว่าเดินถึงตำแหน่งใดแล้ว
status สถานะว่าขณะนี้กำลังนอนหรือเดินอยู่
number หมายเลขของสัตว์
• function: function เหล่านี้จะถูก implement ใน inherited class ให้กระทำฟังก์ชั่นในรูปแบบที่ต่างๆกัน แต่ใน class นี้แค่กำหนดว่ามี function อะไรบ้างเท่านั้น
sleep()
walk(int) int เป็นค่าที่โยนลูกเต๋าได้
Class Rabbit: class นี้ให้ extends class animal โดยมี function ต่างๆดังนี้
sleep() ให้หยุดเดินไป 2 ตา แล้วพิมพ์ว่า I feel a bit lazy, I will sleep a bit. แล้วตามด้วย number ของมัน
walk(int) ให้เพิ่มช่องการเดินไปอีก 2 ( กระต่ายต้องเดินเร็วกว่าเต่า ) เช่น ถ้าโยนลูกเต๋าแล้วได้ 4 เดินจริงๆให้เดินไป 6 ช่อง parameter ที่ให้มาคือตัวเลขที่โยนลูกเต๋าได้
Class Turtle: class นี้ให้ extends class animal เช่นเดียวกับ Rabbit โดยต้อง implement function ต่างๆดั้งนี้
sleep() ไม่ต้อง sleep ให้ print ออกมาว่า I will not sleep, I am going on! แล้วตามด้วย number ของมัน
walk(int) เดินตามที่โยนลูกเต๋าได้
ส่วน class อื่นๆหรือฟังก์ชั่นต่างๆสามารถเพิ่มได้ตามใจชอบค่ะ และเวลาเขียน code ให้ทุกคนเขียน java doc อธิบายด้วยนะคะ
ตัวอย่างการเขียน java doc ในคลาส Animal
(ใช้ export ใน eclipse สร้างหน้าเว็บของมันขึ้นมาดูสิ)
หลังจากที่นิสิตเขียน java doc กันเรียบร้อยแล้ว ลอง เรียกใช้ฟังก์ชั่นหรือคลาสที่เขียน java doc กันดูนะคะ เช่น
จะเห็นว่ามีคำอธิบายอยู่ในฟังก์ชั่นที่เราเขียน javadoc ไว้
หากคนที่นำคลาสของเราไปพัฒนาต่อได้อ่าน comment นี้
ก็จะทำให้เค้าเข้าใจและพัฒนาโปรแกรมได้เร็วขึ้นมาก เพราะฉะนั้น
อย่าละเลยการเขียน comment หรือ javadoc นะคะ
2. สำหรับการเดินของแต่ละช่องเดิน มีข้อกำหนดดังนี้
2.1. การเดินให้เดินสลับซ้ายขวาดังรูป โดย
i. ณ y=0 ให้เดินจาก x=0 ไป x=7
ii. ใน y=1 ถัดมา ให้เดินจาก x=7 ไป x=0
iii. Y=2 ให้เดินจาก x=0 ไป x=7 ให้เดินสลับแบบนี้ไปเรื่อยๆ
2.2. หากช่องที่ (x+y) mod 3 = 2 กระต่ายและเต่าให้ sleep
2.3. หากเดินมาตกช่องที่อยู่ริมซ้ายหรือขวาของกระดาน (x=0 หรือ x=7)
X=0 ให้ y เพิ่มขึ้นหนึ่ง และ x เพิ่มขึ้นอีก 3 ( สามเลย ไม่จำเป็นต้องดูว่าเดินจากขวาไปซ้ายหรือซ้ายไปขวา ) เช่น ถ้าเดินมาตกที่จุด 0,2 ให้เพิ่ม y อีกหนึ่งเป็น 0,3 จากนั้นเพิ่ม x อีก 3 เป็น 3,3 ดังภาพ ถ้า x หรือ y ไม่สามารถเพิ่มค่าได้อีก ให้กำหนดเป็น 7
สำหรับกระต่ายนั้น พอทราบว่าตัวเองได้ช่องการเดินเพิ่ม เลยวางใจไปนอน หยุดเล่นไปอีก 5 ตา ส่วนเต่าเดินต่อไป
X=7 ให้ y เพิ่มลดลงหนึ่ง แล้วลด x อีก 3 ( ลบสามเลย ไม่จำเป็นต้องดูว่าเดินจากขวาไปซ้ายหรือซ้ายไปขวา ) เช่น ถ้าเดินมาตกที่จุด 7,3 ให้ลด y อีกหนึ่งเป็น 7,2 จากนั้นลด x อีก 3 เป็น 4,2 ถ้า x หรือ y ไม่สามารถลดค่าลงได้อีก ให้กำหนดเป็น 0
3. Main โปรแกรม ให้ initiate กระต่าย 3 ตัว เต่า 3 ตัวให้แข่งวิ่งกันัเมื่อถึงตำแหน่ง 0,7 ( เส้นชัย หรือเกินจากตารางไปก็ได้ค่ะ เช่น y>=7) ให้พิมพ์หมายเลขตัวที่ชนะ และเป็นกระต่ายหรือเต่า (ให้ถือว่าตัวที่ถึงเส้นชัยตัวแรกเป็นตัวที่ชนะเลย แม้ว่าตัวที่ได้เดินก่อนจะได้เปรียบก็ตาม)
4. หน้าตาของ Main Program เป็นดังนี้ค่ะ
หากทำโปรแกรมเสร็จแล้ว จะเห็นว่า เราสามารถให้ Object ของ Turtle หรือ Rabbit walk หรือ sleepในแบบของตัวเองได้ โดยไม่ต้องสร้าง Instance ของตัวมันเองโดยตรง แต่ใช้ผ่าน Instance ของคลาสแม่(superclass)่มันแทน ให้อธิบายว่า โปรแกรมนี้ใช้หลักการใดจึงสามารถประพฤติตัวตามที่กล่าวมาข้างต้น ด้วยค่ะ ใส่ text file แยกมาแล้ว zip รวมกับ .jar ค่ะ
การส่ง
export ไฟล์เป็น jar file ( ต้องมีซอร์สโค้ด ตรวจทานให้ดี) แล้วส่งมาที่
progmethcp@gmail.com ภายในวันจันทร์ที่ 9 กรกฎาคม เวลา 24.00 น.
ไฟล์จะต้องตั้งชื่อว่า lab05_xxxxxxxxxx.jar โดย xxxxxxxxxx
นั้นเป็นเลขประจำตัวนิสิต ส่วนใน subject ของเมล์ ให้ใส่ lab05_
xxxxxxxxxx_Time โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต และ Time
เป็นเวลา (หน่วยเป็นชั่วโมง:นาที) ที่นิสิตใช้ในการทำแล็บนี้