Winning SET game with python (part1)
Set with Friends ← สามารถลองเล่นเกมนี้ก่อนได้ที่นี่ (single/ multiplayer)
🥑table of contents
- part 1: introduction + solve set game with python cli
- part 2: using bot to solve set game
🍏preparation
- ***python 3
- selenium + chrome web driver (part2)
PART 1🥦
ช่วงนี้ work from home หลายคนอาจเคยได้เข้าไปทำงานใน gather.io ซึ่งเป็นที่ๆให้เรารู้สึกเหมือนได้ไปทำงานที่ออฟฟิต โดยใน gather นั้นมีเกมหนึ่งที่อาจสร้างความมึนงง ปวดหัวให้กับเพื่อนๆมาแล้วนั่นก็คือ เกม set นั่นเอง😐
ก่อนอื่นเรามาทำความรู้จักเกม set กันซักเล็กน้อยจาก link นี้ how_to_play จากรูปด้านล่างจะเห็นว่า มี 3 รูปแบบ(oval, sprout, diamond), 3 จำนวน(1, 2, 3), 3 สี(red, green, purple) และ 3 ลาย(outline, filled, striped)
โดยวิธีการเล่นคือเราต้องหา 3 การ์ดที่ all unique ต่อกัน หรือ all same ต่อกัน เช่น จากภาพด้านบนเราสามารถหยิบได้ 2 set คือ row 1(same shape, same color, same number, different pattern) และ row 2(different shape, different color, different number, same pattern)
หลังจากเข้าใจกฏเบื้องต้นกันแล้วเรามาเริ่มเขียน code กันเถอะ
source code available here หาก clone code แล้วสามารถลองเล่นได้จากคำสั่ง
python set_sol1.py
Design 🤡
จากภาพจะเห็นว่ามี 12 pieces แต่ละรูปจะมี ลักษณะที่แตกต่างกัน ในที่นี้จะเรียกแต่ละการ์ดว่า piece โดยจะมี attribute ต่างๆกัน 4 แบบดังนี้get pieces → get each pieces attribute → solve problem
Execution 🌶️
จากภาพข้างต้น ตัวเลข 4 เหลืองคือ input โดยเราจะรับจำนวน piece มาก่อน(4) แล้วใส่ค่าของแต่ละ piece ตาม pattern <number shape color shading>
ในส่วนของ logic การคำนวนเราจะสุ่มหยิบแบบ combinations มาเช่น 4 เลือก 3 หลังจากนั้น มาดูว่ามี piece แต่ละแบบแตกต่างกันอย่างไร จากกฏของเกม เราสามารถเลือกได้คือ จำนวน, รูปร่าง, สี , ลาย เหมือนกันหมด หรือ แตกต่างกันทั้งหมด
หลังจากคำนวนเสร็จเราจะได้คำตอบดังนี้ โดยตัวเลขตัวแรกคือ index (เรียงจาก ซ้ายไปขวา บนลงล่าง) 😎
ใน PART ต่อไปเราจะ ใช้ bot สร้าจาก selenium เล่นแทนเรา 🤖
มาต่อกันที่ PART2 …