Revision lab: GUI, Events and Thread
มาหัดทำ slot machine กัน
(ข้อนี้เคยเป็นข้อสอบ final ของรุ่นพี่ๆมาก่อน แต่อันนี้เอามาตัดทอน
เราทำแค่ส่วนเขียนโค้ดการทำงาน ไม่ต้องขึ้นรูป และไม่ต้องทำ document และ
unit test - จะได้รู้ภายหลัง)
มี GUI ของ slot machine ให้มาดังรูป
ตัวไฟล์จาร์ อยู่นี่
สำหรับแล็บในครั้งนี้คือการทำให้ Slot Matchine เล่นได้
เงื่อนไขต่างๆ มีดังนี้
- ช่องลงเงินพนัน ต้องพิมพ์ได้แต่ตัวเลข 0-9 เท่านั้น ตัวอักษรอื่นๆ ต้องไม่แสดงออกมา
- ตัวเลข Slot ทั้ง 3 ตัว จะเข้าไปแก้ไขโดยตรงไม่ได้(คือ พิมพ์เปลี่ยนตัวเลขไม่ได้ โปรแกรมจะต้องเป็นตัวหมุน Slot เอง)
- ในสภาพเริ่มต้น ปุ่มหยุด Slot จะกดไม่ได้
- เมื่อ
กดปุ่มเริ่มพนัน ถ้าเงินในช่องลงเงินพนันเป็นศูนย์
หรือมากกว่าเงินที่เหลืออยู่ Slot จะต้องไม่ทำงาน และขึ้น Dialog Box
เตือนว่า "Money not enough!!"
- เมื่อกดปุ่มเริ่มพนัน แล้วเงินในช่องลงพนันน้อยกว่าหรือเท่ากับเงินที่เหลืออยู่ Slot จะทำงานได้โดย
- ปุ่มหยุด Slot จะสามารถกดได้ ปุ่มเริ่มพนันจะกลายเป็นกดไม่ได้(กันการกดซ้ำซ้อน)
- ช่องลงเงินพนันจะเข้าแก้ไขตัวเลขไม่ได้(ป้องกันการโกงเงินระหว่างหมุน Slot)
- จำนวนเงินที่เหลือจะถูกหักลบออกด้วยจำนวนเงินที่ลงพนันไป
- ตัวเลขใน slot จะดูเหมือนเคลื่อนที่่เปลี่ยนค่าไปได้เรื่อยๆ
- เมื่อกดปุ่มหยุด Slot
- สุ่มตัวเลขทั้ง 3 ใน Slot
- ปุ่มหยุด Slot จะกลับเป็นกดไม่ได้ ส่วนปุ่มเริ่มพนัน จะกลับเป็นกดได้
- ถ้า
ตัวเลขในช่อง Slot 3 ช่อง ไม่เหมือนกันเลยหรือเหมือนกันแค่ 2 ตัว ให้แสดง
Dialog Box ว่า "You Lose.. T_T" และจำนวนเงินที่ลงพนันจะสูญไป
- ถ้า
ตัวเลขในช่อง Slot 3 ช่อง เหมือนกัน 3 ตัว(แต่ไม่ใช่ "7 7 7") ให้แสดง
Dialog Box ว่า "Congratulations:x2.. ^_^"
และจำนวนเงินที่เหลือจะถูกบวกเพิ่มด้วยสองเท่าของจำนวนเงินที่ลงพนัน
- ถ้า
ตัวเลขในช่อง Slot 3 ช่อง เป็น "7 7 7" ให้แสดง Dialog Box ว่า
"Jackpot:x10.. o_O"
และจำนวนเงินที่เหลือจะถูกบวกเพิ่มด้วยสิบเท่าของจำนวนเงินที่ลงพนัน
- ช่องลงเงินพนัน จะกลับเข้าไปแก้ไขได้
- เมื่อกดปิดหน้าต่างโปรแกรม โปรแกรมจะต้อง Terminate ตัวเองโดยอัตโนมัติ
วันนี้ไม่มีการบ้านนะ ให้ไปฝึกทำแล็บเก่าๆและแล็บนี้ให้ได้เร็วๆ โดยไม่ต้องดูโค้ดหรือเอกสารประกอบ น่าจะดีที่สุด
หมายเหตุ
ควรลองนั่งทำแล็บนี้ให้ได้ในหนึ่งชั่วโมง หรือหนึ่งชั่วโมงหน่อยๆ
ให้ส่งเที่ยงคืนก็จริง แต่ว่าควรจะลองจับเวลาทำเองด้วยเพื่อให้คล่อง เอาให้คล่องนะ
ถ้าจะลองจับเวลาการขึ้นโครง
user interface ด้วยตัวเองตั้งแต่ต้น
ข้อนี้น่าจะใช้เวลาอย่างมากที่สุดหนึ่งชั่วโมง
ถ้าไม่ได้แสดงว่าเราอาจจะยังไม่คล่องพอ ลองฝึกดูนะ
พอทำเสร็จแล้ว ทำเป็น executable jar ไว้ (เอา source ใส่ด้วย อย่าลืม) ส่งมาที่ progmethcp@gmail.com ภายในเที่ยงคืนวันพุธที่ทำแล็บนี้ โดยในเมล์ subject ต้องเขียนเป็น studentId_lab06_secNumber และชื่อไฟล์จะต้องเป็น studentId_lab06_secNumber.jar ตัวอย่างเช่น 5032117621_lab04_1.jar
studentID คือเลขประจำตัวนิสิต
secNumber คือเบอร์ตอนเรียน