การสร้างเกมกระดาน AI


9

ฉันต้องการโค้ดเกมกระดานที่ชื่อ Okey และเป็นที่นิยมในตุรกีเป็นส่วนใหญ่ http://en.wikipedia.org/wiki/Okey

แต่ฉันมีปัญหาเกี่ยวกับ AI

Firslty ให้ฉันอธิบายเกม ..

เกมนี้เล่นโดยผู้เล่น 4 คน

ในเกมนี้มีไพ่ 106 ใบโดย 2 ในนั้นเป็นโจ๊กปลอม กระเบื้อง 104 ชิ้นแบ่งออกเป็น 4 สีโดยทั่วไปคือสีเขียวสีดำสีน้ำเงินและสีแดง ทุกสีมีสองชุดของไพ่ ชุด ise ประกอบด้วย 13 แผ่นที่เรียงตามลำดับหมายเลข 1 ถึง 13

ผู้เล่นแต่ละคนเริ่มต้น 14 แผ่น (หนึ่งเริ่มต้นที่ 15 และเริ่มต้นก่อน) และโยนหนึ่งในไพ่ที่ไม่ต้องการมากที่สุดในผู้เล่นถัดไป ผู้เล่นคนต่อไปสามารถรับไทล์นี้หรือสามารถรับไทล์อีกอันจากสแต็คตรงกลางโต๊ะ เกมที่เล่นในทวนเข็มนาฬิกา ..

เป้าหมายของเกมนี้คือการหาลำดับที่ถูกต้องของ 14 แผ่นโดยเร็วที่สุด ผู้เล่นสามารถจัดเรียงไพ่เรียงตามหมายเลขตามลำดับในสีเดียวกันจนถึง 13 สำหรับการสอบสีเขียว 1, เขียว 2, เขียว 3 มีข้อยกเว้นที่นี่ 1 สามารถติดตามได้ถึง 13 ตัวอย่างเช่น Red 12, Red 13 และ Red 1 คือ a ชุดที่ถูกต้อง แต่ Red 13, Red 1 และ Red 2 ไม่ถูกต้อง

หรือผู้เล่นสามารถจัดแนวกระเบื้องตามสีในหมายเลขเดียวกัน สำหรับสอบสีเขียว 1, ดำ 1, แดง 1, น้ำเงิน 1

แต่ละชุดจะต้องมีไพ่อย่างน้อย 3 แผ่นขึ้นไปจึงจะใช้ได้และแต่ละชุดนี้มีชื่อว่า "ต่อ" น้อยกว่า 3 แผ่นไม่ถูกต้องสำหรับการเสร็จสิ้น ชุดเสร็จที่ถูกต้องสามารถเป็นเช่นนี้ G: เขียว, B: สีน้ำเงิน, R: แดง, BL: ดำ G1 | G2 | G3 B2 | R2 | BL2 R9 | R10 | R11 | R12 BL13 | R13 | G13

สิ่งสุดท้ายเมื่อเริ่มเกมไพ่ที่เลือกเพื่อกำหนดโจ๊กเกอร์ (okey) ตัวอย่างเช่นหากคุณเลือก Blue 3; บลู 4 จะเป็นตัวโจ๊กเกอร์ (โอเค) และผู้เล่นสามารถใช้ไทล์นี้แทนไทล์ใดก็ได้ที่ผู้เล่นต้องการที่จะชนะหรือจบเซ็ต (ต่อ)

แน่นอนว่ากฎเหล่านี้เป็นกฎทั่วไปและสรุปเพื่ออธิบายคำถาม หากคุณสามารถอ่านภาษาอังกฤษคุณสามารถตรวจสอบลิงค์นี้สำหรับข้อมูลเพิ่มเติมhttp://tr.wikipedia.org/wiki/Okeyหรือหน้าแปลโดย Google Translate http://translate.google.com/translate?js=n&prev=_t&hl= th & เช่น = UTF-8 และรูปแบบ = 2 & eotf = 1 & SL = TR & TL = th & U = http: //tr.wikipedia.org/wiki/Okey

ดังนั้นอัลกอริทึม AI ที่ฉันสามารถใช้ได้? ฉันค้นหาทฤษฎี minimax และการตัดแต่งกิ่งเบต้า แต่ทฤษฎีเหล่านี้มักจะมีผู้เล่น 2 คนเช่นหมากรุกหรือโอเอกซ์

คำถามเดิมอยู่ที่ stackoverflow: /programming/4419628/creating-a-board-game-ai


1
คุณสามารถใช้อัลกอริธึม AI ได้มากมายดังนั้น "อันที่หนึ่ง" คือการแลกเปลี่ยน (หรือวิศวกรรมที่อาจเป็นไปได้) คุณต้องการ AI ที่สมบูรณ์แบบที่สามารถ "แก้ปัญหา" เกม (เช่นเล่นได้อย่างดีที่สุด) หรือคุณต้องการเกม "AI" ที่เล่นได้ดีพอที่จะไม่ทำให้เกิดปัญหา แต่ก็อ่อนแอพอที่จะเอาชนะได้ (โดยเฉพาะถ้าคุณต้องการระดับความยากหลายระดับ)? หรือคุณแค่อยากให้ AI "โง่" ที่เล่นโดยไม่มีตรรกะเพื่อให้คุณสามารถทดสอบเกมได้? มีตัวเลือกมากมายไม่มีทางที่ถูกหรือผิด
Ian Schreiber

ฉันคิดว่าคุณต้องมีอัลกอริทึมที่พัฒนาขึ้นสำหรับปัญหานี้โดยเฉพาะแม้ว่าคุณอาจจะสามารถใช้เทคนิค / อัลกอริทึมต่าง ๆ ที่อยู่ภายในได้ คุณอาจได้รับคำตอบที่ดีในai.stackexchange.com
Matthew อ่าน

@Ian ฉันต้องการให้ AI สามารถเล่นเกมได้เอง อาจเป็นภายหลังฉันสามารถเพิ่มระดับความยากได้ ดังนั้นฉันต้องการจุดเริ่มต้น @ Matewew ฉันจะเพิ่มคำถามของฉันไปที่นั่น ขอบคุณทุกคน.
บาฮาดีร์อาร์ลาน

อุ๊ย! ดูเหมือนว่า ai.stackexchange.com ถูกปิดแม้ว่าจะเป็นสถานที่ที่เหมาะสำหรับการถาม ... เศร้า
bummzack

minmax เวอร์ชันมัลติเพลเยอร์ที่รู้จักกันดีคือ MaxN และ Paranoid Search
Druzil

คำตอบ:


3

หากคุณสลับไพ่เป็นไพ่คำอธิบายของเกมจะฟังดูคล้ายกับเกมไพ่ Gin Rummy อย่างไม่น่าเชื่อ คุณอาจสามารถค้นหาแหล่งข้อมูล AI โดยตรงโดยค้นหาจากแหล่งนั้น

ตัวเลือกหนึ่งสำหรับ AI ที่ไม่เชื่อเรื่องจำนวนผู้เล่นและสามารถใช้ในการสร้างบุคลิกภาพ AI ที่แตกต่างกัน:

  1. เล่นเกมกระดานโดยเฉพาะกับเพื่อน ๆ แม้ว่าคุณสามารถเล่นได้ทุกอย่างด้วยตัวคุณเอง แต่ด้วยคอมพิวเตอร์ที่มีประโยชน์และเปิด Excel
  2. พูดออกมาโหลดว่ากระบวนการคิดของคุณคืออะไร จะมีจำนวนคะแนนไม่ต่อเนื่องที่คุณต้องพิจารณาเมื่อทำการตัดสินใจ สิ่งต่าง ๆ เช่น "ไทล์ที่ไม่ต้องการทำให้ชุดที่เล่นได้" หรือ "ทำให้ฉันใกล้กับชุด" หรือ "เพิ่มไปยังชุดที่เล่นได้"
  3. จากนั้นเมื่อคุณมีรายการสิ่งของทั้งหมดที่คุณต้องพิจารณาเมื่อตัดสินใจว่าจะเลือกไทล์ใดและไทล์ใดที่ควรทิ้งเริ่มสร้างน้ำหนักจำนวนสำหรับพวกเขาโดยพิจารณาจากสิ่งที่สำคัญที่สุดสำหรับคุณ
    1. ตัวอย่าง: อาจมีความสำคัญเป็นสามเท่าสำหรับคุณที่จะได้ไพ่เรียงลำดับที่สามในลำดับเดียวกับที่จะได้ไพ่เรียงลำดับที่ 4 ในลำดับที่มีอยู่
  4. เมื่อคุณมีน้ำหนักทั้งหมดนี้สำหรับทุกสิ่งที่คุณเห็นเมื่อตัดสินใจคุณสามารถใช้ Excel เพื่อคำนวณคะแนนสำหรับการกระทำแต่ละอย่าง ดังนั้นคุณมีแผ่นงานที่แต่ละแถวแสดงถึงตัวเลือกการดำเนินการและแต่ละคอลัมน์แสดงถึงปัจจัยในการตัดสินใจ หากปัจจัยนั้นเป็นจริงสำหรับการกระทำนั้นคุณคูณมันกับน้ำหนักหากปัจจัยนั้นเป็นเท็จคุณให้คะแนนเป็นศูนย์ จากนั้นคุณรวมคะแนนทั้งหมดและหนึ่งที่มีค่าสูงสุดคือสิ่งที่ AI จะเลือกที่จะทำ
  5. เล่นเกมโดยเปิด Excel ตาแต่ละข้างจะดูว่าผลคะแนนตรงกับผลลัพธ์ที่คุณเลือกหรือไม่ หากไม่ปรับน้ำหนักตามความคิดของคุณจนกว่าจะถึงเวลานั้น หลังจากเล่นเกมหลายเกม AI ควรเล่นเกมในลักษณะเดียวกับที่คุณเล่น หากคุณเล่นอย่างสม่ำเสมอกับกลุ่มเพื่อนที่มีน้ำหนักต่างกันคุณจะมี AI ที่มีบุคลิกหลากหลาย

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


นี่คือบทความเกี่ยวกับการสร้าง AI สำหรับ Gin Rummy มันอาจพิสูจน์ความเข้าใจที่เป็นประโยชน์บ้าง aifactory.co.uk/newsletter/2007_02_imperfect_info.htm
Tim Holt

ฉันจะดูสิ่งนี้โดยเร็วที่สุด ขอขอบคุณ @Tim Holt และ @skerslake
bahadir arslan

ฉันจะพิจารณากลยุทธ์ MahJongg ด้วย มันไม่เกี่ยวข้องกันมากนัก แต่ก็ยังปิดอยู่
Loren Pechtel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.