Lab: Object-Oriented Programming Concept



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

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

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

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

หลังจากเขียนคลาส Card เสร็จแล้ว จงเขียนคลาส Deck ซึ่งหนึ่ง deck หรือสำรับไพ่่นั้นจะประกอบไปด้วยไพ่่ 52 ใบ (เอาจากทุก rank และ suit โดยต้องมีการเรียงด้วย (สำหรับแต่ละ suit ให้เลข 2 เป็นใบแรกและ A เป็นใบสุดท้าย  suit แรกคือ spades  เรียงลำดับตามที่กำหนดไว้ข้างบน)  ระหว่างการเล่นไพ่  อนุญาตให้สามารถเอาไพ่ออกจาก 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 ภายในวันอังคารที่ 5 กรกฎาคม ไฟล์จะต้องตั้งชื่อว่า xxxxxxxxxx_Object.jar โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต ส่วนใน subject ของเมล์ ให้ใส่ xxxxxxxxxx_Object โดย xxxxxxxxxx นั้นเป็นเลขประจำตัวนิสิต 

อย่าลืม การฝึกเท่านั้น ถึงจะทำให้โค้ดได้เก่งขึ้น ตอนนี้โจทย์ยังถือว่าง่ายอยู่ ต้องรีบทำให้เข้าใจ ทำให้ได้เร็วๆ