เอาชนะเกม Minesweeper ของ Google โดยใช้สคริปต์นี้ ไลบรารีที่จำเป็น: numpy , opencv2 , pyautogui
ดาวน์โหลดโปรเจ็กต์นี้โดยใช้คำสั่งนี้:
https://github.com/EnriqueMoran/google-minesweeper-bot.git
ถัดไป ติดตั้งไลบรารีที่จำเป็นโดยใช้คำสั่งต่อไปนี้:
pip install pyautogui opencv-python numpy
เมื่อการติดตั้งเสร็จสมบูรณ์ ให้คลิกขวาที่ไฟล์ minesweeper.py และแก้ไขด้วย IDLE เปิดเกมเรือกวาดทุ่นระเบิดของ Google และตรวจสอบให้แน่ใจว่าหน้าต่างเกมมองเห็นได้ชัดเจน จากนั้นคลิกที่ python IDLE แล้วกด F5
หมายเหตุ: ครั้งแรกที่คุณรันสคริปต์จะเปิดหน้าต่างใหม่ที่อาจวางอยู่เหนือหน้าต่างเกม เพียงแค่ย้ายออกและปรับขนาด
สิ่งสำคัญ: หากคุณต้องการยกเลิกการเรียกใช้สคริปต์ ให้วางเมาส์ที่มุมซ้ายบนของหน้าจอ
ในแต่ละการเคลื่อนไหวจะมีการจับภาพหน้าจอและแต่ละเซลล์ที่ไม่ใช่สีเขียวจะถูกจดจำ (ไม่ใช่เซลล์ที่ไม่รู้จัก)
ถัดไป แต่ละเซลล์จะถูกตรวจสอบเพื่อวางธงบนเซลล์ที่อยู่ติดกัน อัลกอริทึมที่ใช้มีดังต่อไปนี้:
หากจำนวนเซลล์ที่อยู่ติดกันที่ถูกแฟล็กน้อยกว่าคะแนนของเซลล์ที่เลือก และจำนวนเซลล์ที่อยู่ติดกันที่ไม่รู้จักบวกกับเซลล์ที่ถูกแฟล็กน้อยกว่าคะแนน ให้วางแฟล็กบนเซลล์ที่อยู่ติดกันที่ไม่รู้จักเซลล์ใดก็ได้
หากจำนวนเซลล์ที่อยู่ติดกันที่ถูกตั้งค่าสถานะเท่ากับคะแนน และจำนวนเซลล์ที่อยู่ติดกันที่ไม่รู้จักสูงกว่า 0 ให้คลิกที่เซลล์ใดเซลล์หนึ่ง
หากไม่มีเซลล์ใดที่ถูกต้องสำหรับการดำเนินการใดๆ เซลล์ที่ไม่รู้จักแบบสุ่มจะถูกคลิก
เมื่อไม่มีธงเหลือแล้ว เกมจะถูกยกเลิกและสคริปต์จะหยุดลง หากเกมหายไปเมื่อคลิกเซลล์สุ่ม หากทราบหน้าต่างคะแนน สคริปต์จะหยุดเช่นกัน
ประสิทธิภาพของเวอร์ชัน 1.0 ขึ้นอยู่กับพารามิเตอร์ความเร็วที่กำหนดเวลาที่สคริปต์จะรอหลังจากคลิกเซลล์เพื่อจับภาพหน้าจอใหม่
ความเร็ว | เกมส์หมายเลข | ชนะ/แพ้ง่าย | ชนะ/แพ้ปกติ | ชนะ/แพ้อย่างหนัก | เฉลี่ยง่าย เวลา | เฉลี่ยปกติ เวลา | ฮาร์ดเฉลี่ย เวลา |
---|---|---|---|---|---|---|---|
0.05 | 10 | 9/1 | 5/5 | 3/7 | 27.55 | 258.6 | 854 |
0.10 | 10 | 8/2 | 8/2 | 0/10 | 28.875 | 235.83 | - |
0.15 | 10 | 9/1 | 10/0 | 2/8 | 27.2 | 214.66 | 812.5 |
ในเวอร์ชัน 1.2 จะไม่มีการใช้การจับคู่เทมเพลต opencv2 อีกต่อไป คะแนนได้มาจากสีพิกเซล ประสิทธิภาพความเร็วได้รับการปรับปรุงในระดับความยากที่ง่ายและปกติ การเพิ่มกฎเพื่อใช้เมื่อต้องสุ่มคลิกเป็นสิ่งจำเป็น
ความเร็ว | เกมส์หมายเลข | ชนะ/แพ้ง่าย | ชนะ/แพ้ปกติ | ชนะ/แพ้อย่างหนัก | เฉลี่ยง่าย เวลา | เฉลี่ยปกติ เวลา | ฮาร์ดเฉลี่ย เวลา |
---|---|---|---|---|---|---|---|
0.015 | 10 | 8/2 | 4/6 | 0/10 | 11.25 | 42 | - |
0.05 | 10 | 7/3 | 5/5 | 1/9 | 11.28 | 44.6 | 113 |
เพิ่มกฎสำหรับการคลิกแบบสุ่ม