นี่คือราชาแห่งความท้าทายของ Dots and Boxes (aka Pen the Pig) เกมนี้เล่นง่ายเมื่อถึงคราวคุณแค่ลากเส้นบนรั้วที่ว่างเปล่า ทุกครั้งที่คุณทำตารางให้เสร็จ นอกจากนี้เนื่องจากเรากำลังเล่นตามกฎการแข่งขันชิงแชมป์หากคุณทำอย่างน้อยหนึ่งตารางในตาคุณคุณจะได้รับเทิร์นเพิ่มเติม นี่คือทัวร์นาเมนต์ Round robin ที่แต่ละ bot เล่น bot อื่น ๆสองครั้ง 12 ครั้งในตาราง 9x9 ตรวจสอบการแข่งขันนี้ระหว่างยักษ์ใหญ่สองรุ่นที่ ChainCollector สร้างเนื้อสับเพื่อครองแชมป์ Asdf:
กฎระเบียบ
- 0.5 วินาทีเวลา จำกัด ต่อการเคลื่อนไหว
- ไม่มีการรบกวนบอทอื่น ๆ
- ใช้ PigPen.random () และ PigPen.random (int) เพื่อการสุ่ม
- ไม่มีการเขียนลงไฟล์
- บอทและข้อมูลถาวรทั้งหมดจะถูกรีเซ็ตทุกครั้งที่มีการเปลี่ยนแปลงคู่ต่อสู้ (ทุก 12 รอบ)
บอท
บอททุกอันขยาย Player.java:
package pigpen;
public abstract class Player {
public abstract int[] pick(Board board, int id, int round);
}
Board
เป็นกระดานเกมซึ่งส่วนใหญ่ทำหน้าที่ให้คุณเข้าถึงPen
ชั้นเรียนและid
เป็น playerID ของคุณ (บอกคุณว่าคุณเป็นคนแรกหรือคนที่สอง)round
บอกคุณว่าคุณเล่นรอบไหนกับคู่ต่อสู้คนเดียวกัน (1 หรือ 2) ค่าส่งคืนคือint[]
ที่ซึ่งองค์ประกอบแรกคือ penID (1 ดัชนี) และองค์ประกอบที่สองคือ fenceID (ดัชนี 0) ดูPen.pick(int)
วิธีง่ายๆในการสร้างมูลค่าส่งคืนนี้ ดูหน้าGithubสำหรับผู้เล่นตัวอย่างและ JavaDoc เนื่องจากเราใช้ตารางสี่เหลี่ยมเท่านั้นจึงไม่สนใจฟังก์ชันและฟิลด์ใด ๆ ที่เกี่ยวข้องกับรูปหกเหลี่ยม
วิธีการวิ่ง
- แหล่งดาวน์โหลดจาก Github
- เขียนบอควบคุมของคุณ (ตรวจสอบให้แน่ใจว่าจะรวม
package pigpen.players
) และใส่ไว้ในsrc/
โฟลเดอร์ javac -cp src/* -d . src/*.java
คอมไพล์ด้วย ทำงานด้วยjava pigpen.Tournament 4 9 9 false
(สามารถเปลี่ยนตัวเลขสองตัวสุดท้ายเพื่อปรับขนาดกริดตัวแปรสุดท้ายควรถูกตั้งค่าเป็นtrue
หากคุณต้องการใช้ซอฟต์แวร์ pp_record เท่านั้น)
คะแนน
- ChainCollector: 72
- Asdf: 57
- Lazybones: 51
- Finisher: 36
- = LinearPlayer: 18
- = BackwardPlayer: 18
- RandomPlayer: 0
ดูสิ่งนี้ด้วย:
บันทึก : เกมนี้เป็นความท้าทายในการแข่งขันและไม่สามารถแก้ไขได้อย่างง่ายดายเนื่องจากผู้เล่นมีเทิร์นเพิ่มเติมสำหรับการทำกล่อง
ขอบคุณ Nathan Merrill และ Darrel Hoffman ที่ให้คำปรึกษาเกี่ยวกับความท้าทายนี้!
อัปเดต :
- เพิ่ม
moves(int player)
วิธีในคลาสบอร์ดเพื่อรับรายการการเคลื่อนไหวที่ผู้เล่นทำ
ค่าหัวไม่ จำกัด (100 Rep) :
คนแรกที่โพสต์ทางออกที่ชนะทุกรอบและใช้กลยุทธ์ (ปรับการเล่นโดยดูจากการสังเกตของฝ่ายตรงข้ามที่เล่น)