Lab 2: Object-Oriented Programming Concept

แล็บนี้ต้องส่งนะ


สำหรับวันนี้เราจะมาเขียนโปรแกรมรันเกมไพ่อย่างง่ายๆกัน  นิสิตจะได้ฝึก

มาเริ่มกันเลย

จงเขียนคลาส Card ซึ่งเราจะนิยามเป็นไพ่ใบหนึ่งจากสำรับไพ่ที่นิยมใช้เล่นกันทั่วไป ซึ่งไพ่นั้นจะมีตัวแปรสองอย่างต่อไปนี้ 

และต้องมีเมธอดดังต่อไปนี้

หลังจากเขียนคลาส Card เสร็จแล้ว จงเขียนคลาส Deck ซึ่งหนึ่ง deck หรือสำรับไพ่่นั้นจะประกอบไปด้วยไพ่่ 52 ใบ (เอาจากทุก rank และ suit โดยต้องมีการเรียงด้วย เพราะเดี๋ยวต้องสับไพ่ให้ได้) ระหว่างการเล่นไพ่  อนุญาตให้สามารถเอาไพ่ออกจาก deck ได้ (อาจต้องมีการเขียนเมธอดเพิ่มจากที่ระบุไว้)

ให้คลาส Deck มีเมธอดต่างๆดังต่อไปนี้ เราจะมาจำลองเกมไพ่แบบหนึ่ง ในเมธอด main กัน โดยขั้นตอนของการเล่นเกมจะเป็นดังนี้

  1. สร้าง deck ขึ้นมาสองสำรับ สำรับแรกเรียกเป็น ของ player1 สำรับที่สองเป็นของ player2
  2. สับไพ่ทั้งสองสำรับ
  3. ผู้เล่นทั้งสอง ต่างฝ่ายต่างหยิบไพ่สองใบแรกมา ใครได้ rank รวม เข้าใกล้แต่ไม่เกิน 21 มากกว่าคนนั้นจะชนะ (เกิน 21 ถือว่าแพ้ทันที) ตัว rank ที่เป็นอักษร ถือว่ามีค่าเท่ากับสิบ ยกเว้น A ที่มีค่าเท่ากับ 11 ก็ได้ หรือ 1 ก็ได้ (ถ้า rank รวมเท่ากันจะถือว่าเสมอกัน ทำให้เกมไม่จบ ต้องหยิบไพ่สองใบต่อไป) 
  4. เกมจบเมื่อมีคนชนะ หรือ ดูไพ่หมดสำรับแล้วยังไม่แพ้ชนะกัน (อะไรมันจะปานนั้น)
  5. เมื่อเกมจบ จะต้องมีการพิมพ์ว่าใครชนะ หรือออกเกมโดยไม่มีใครชนะ แล้วค่อยออกจากเกม

 

เมธอดที่สามารถนำมาใช้ได้

/**

* Returns a random number between first and last (excluding last)

*/

public static int random(int first, int last) {

    return first + (int)(Math.random()*(last – first))

}

 

/**

* Returns a random number from 0 to N (exclusive N)

*/

public static int random(int n) {

    return random(0, n);

}

การส่ง

export ไฟล์เป็น jar file (ต้องมีซอร์สโค้ด ตรวจทานให้ดี) แล้วส่งมาที่ progmethcp@gmail.com ภายในวันพุธที่ 13 มิถุนายน เวลา 24.00 น. ไฟล์จะต้องตั้งชื่อว่า lab02_xxxxxxxxxx.jar โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต ส่วนใน subject ของเมล์ ให้ใส่ lab02_ xxxxxxxxxx_Time โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต และ Time เป็นเวลา (หน่วยเป็นชั่วโมง:นาที) ที่นิสิตใช้ในการทำแล็บนี้ 

ประเมินตนเอง 

แล็บนี้ถูกออกแบบไว้ให้นิสิตทำเสร็จตามเวลาเลิกแล็บได้ ใครที่ยังทำไม่เสร็จ อาจเป็นเพราะ

ข้อเสนอแนะ
       
ต้องหาโจทย์ทำเพิ่มจากเน็ตอีกซักโจทย์สองโจทย์นะ จับเวลาตนเอง เทียบกับโจทย์ข้อนี้ดู


PART 2:CodeRally This Week
สำหรับคนที่ทำโจทย์แรกเสร็จแล้ว เรามาลองทำอะไรเล่นๆเพิ่มเติมใน CodeRally  กันดีกว่า(อันนี้ไม่ต้องส่ง) ลองทำพวกนี้ดู