ค้นหาหมายเลขเวทย์มนตร์สำหรับ bitboards


9

ฉันกำลังเขียน c ++ หมากรุกเครื่องยนต์และฉันกำลังมองหาหมายเลขมายากลสำหรับเล็กน้อย Endian แมปตำแหน่งไฟล์ bitboards ในการสร้างการเคลื่อนไหวสำหรับชิ้นเลื่อน

เว็บไซต์หมากรุกคู่ต่อสู้ให้หมายเลขเวทย์มนตร์ แต่ไม่ใช่สำหรับแผนที่กระดานเดียวกัน

วิกิการเขียนโปรแกรมหมากรุกให้หมายเลขมายากลที่ดีที่สุดจนถึงตอนนี้แต่ไม่ครบถ้วนสมบูรณ์

ในตอนท้ายฉันกำลังมองหาสี่สิ่ง:

  • หน้ากากพักสำหรับแต่ละตาราง
  • จำนวนเวทมนตร์สำหรับแต่ละตาราง
  • เวทย์มนตร์เปลี่ยนสำหรับแต่ละตาราง
  • ย้ายอาร์เรย์ฐานข้อมูลสำหรับแต่ละตาราง

ดังนั้นฉันสามารถใช้รหัสต่อไปนี้เพื่อค้นหาการเคลื่อนไหวของ Rook บน C3 (ตัวอย่าง):

bbBlockers = bbAllPieces & occupancyMaskRook[C3]

databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])

bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces

ผมเชื่อว่าคำถามนี้จะเหมาะดีขึ้นและตอบที่programmers.stackexchange.comหรือstackoverflow.com
Pavan Nadig

1
ไม่ได้จริงๆ นี่ยังตอบได้ที่นี่ BTW โปรแกรมเมอร์ให้ความสำคัญกับนามธรรมสูง stackoverflow.com คงจะดีกว่านี้
SmallChess

@PeteBecker คุณพูดถูกฉันเปลี่ยนแล้ว
Romain

คำตอบ:


6

นี่เป็นปัญหาที่รู้จักกันดีในการเขียนโปรแกรมหมากรุก คุณควรพิจารณาใช้ตัวเลขที่สร้างโดย Pradyumna Kannan ดร. กันนันได้สร้างตัวเลขเวทย์มนตร์โอเพนซอร์สอย่างเปิดเผย มันถูกใช้โดย Crafty และเอ็นจิ้นหมากรุกอื่น ๆ รวมถึงตัวฉันเองด้วย

คุณสามารถอ่านเพิ่มเติมโดย google "เวทมนตร์เลข"

ผมเตรียมไฟล์บีบอัดสำหรับคุณที่นี่ ไฟล์นี้เป็นไฟล์เดียวกับที่ใช้ในแอป SmallChess Chess engine โปรดอ่านเอกสารประกอบ โดยทั่วไปคุณจะต้องโทรหาRmagic (สี่เหลี่ยมจัตุรัสการเข้าพัก)สำหรับมือใหม่และBmagic (สี่เหลี่ยมจัตุรัสการเข้าพัก)สำหรับบาทหลวง คุณสามารถแฮคเกอร์ให้เป็นหน้ากากราชินีได้


ขอบคุณมันใช้งานได้ดี ฉันสามารถใช้ / แก้ไขรหัสนี้ได้อย่างอิสระในโปรแกรมหมากรุกของฉัน
Romain

ไม่มีข้อ จำกัด สิทธิ์การใช้งาน ใช้ตามที่คุณพอใจ ไม่ใช่ฉันที่ทำมัน แต่ได้รับการสนับสนุนจากดร. กันนัน โปรดยอมรับคำตอบของฉันหากมันช่วยได้!
SmallChess

สวัสดีคุณสามารถอัปโหลดไฟล์ MagicMoves.zip ไปยัง GoogleDrive ได้หรือไม่ ฉันไม่สามารถดาวน์โหลดได้ที่ smallchess (ฉันพบข้อผิดพลาดบางอย่าง) ขอบคุณ
123iamking

@ 123iamking ลิงก์ยังใช้งานได้ ฉันจะไม่ลบมัน
SmallChess

@SmallChess - ฉันไม่ถามเกี่ยวกับการลบคุณสามารถให้มิเรอร์กับ Google Drive ได้หรือไม่ ขอบคุณ
123 เมื่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.